c# - Datagridview不显示来自MySQL的数据
本文关键字:MySQL 数据 显示 Datagridview | 更新日期: 2023-09-27 18:17:54
我有一个datagridview,它应该包含mysql数据库中的所有用户。对于我的问题,它根据MySQL中的行数添加行,但不显示任何数据。见下图(我在数据库中有2行):
截图下面是我试过的代码:
using MySql.Data.MySqlClient;
namespace SampleDatabaseQueries
{
public partial class Main : Form
{
public Main()
{
InitializeComponent();
}
MySqlConnection conn;
MySqlCommand cmd;
private void Main_Load(object sender, EventArgs e)
{
string connString = "server=localhost;user=root;password=;database=test_db";
conn = new MySqlConnection(connString);
showData();
}
public void showData()
{
string query = "SELECT * FROM test_db.users;";
cmd = new MySqlCommand(query, conn);
conn.Open();
MySqlDataAdapter adapter = new MySqlDataAdapter();
adapter.SelectCommand = cmd;
DataTable dTable = new DataTable();
adapter.Fill(dTable);
dgUsers.DataSource = dTable;
conn.Close();
}
}
}
编辑:上面的代码工作,数据已经加载,但它添加了另一列,所以我一开始没有看到(正如你可以看到上面的屏幕截图上的长水平滚动)。为了解决这个问题,我删除了手动添加的列,并将查询更改为:
SELECT username AS Username, password AS Password FROM test_db.users;
谢谢!
替换为
MySqlDataAdapter adapter = new MySqlDataAdapter();
:
using (MySqlDataAdapter reader = new MySqlDataAdapter(cmd))
{
adapter.Fill(dTable);
}
编辑
为了进一步改进,你可以制作一个数据库连接类,我假设你正在使用oracle的MySql连接器,所以你可以查看他们的文档,了解如何做到这一点。这里有一个链接,可以让你开始最基本的事情,如连接和填充数据表:MySql连接器文档
编辑1
正如你所说,我的解决方案不起作用,这是我刚刚测试过的另一个,应该起作用。
DataTable dTable = new DataTable();
conn.Open();
string query = "SELECT * FROM test_db.users;";
MysqlCommand cmd = new MySqlCommand(query, conn);
using (MySqlDataAdapter reader = new MySqlDataAdapter(cmd))
{
adapter.Fill(dTable);
}
dgUsers.DataSource = dTable;
conn.Close();
这应该可以工作。如果数据表没有显示任何行(空行意味着它找到了一些东西),那么有一个不同的问题,也许你的数据库是空的。