[英]C# - Datagridview does not show data from MySQL
我有一个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();
这应该工作。 如果数据表未显示任何行(空行表示发现了某行),则存在另一个问题,可能您的数据库为空。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.