繁体   English   中英

C#-Datagridview不显示来自MySQL的数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM