从SQLite数据库(C#)填充DataGridView

6
我正在尝试从SQLite数据库中填充datagridview。
我发现有很多种方法可以做到这一点。然而,我的dgv中有预先存在的列(Item, Quantity)。
目前,当我将DB加载到dgv时,我得到的是DB列插入到dgv中,而不是实际数据插入到正确的列中。
我的SQLite DB有一个具有三个列(id PRIMARY KEY AUTO INCREMENT,item VARCHAR,quantity INTEGER)的表格。
如何将DB加载到dgv的预先存在的列中?
用于填充dgv的当前代码:
private void button1_Click_1(object sender, EventArgs e)
    {
        SetConnection();
        sqlconnection.Open();
        sqlcmd = sqlconnection.CreateCommand();

        string CommandText = "SELECT * FROM table1";
        sqlda = new SQLiteDataAdapter(CommandText, sqlconnection);


        using (dt = new DataTable())
        {
            sqlda.Fill(dt);
            dataGridView1.DataSource = dt;
        }
2个回答

15
如果不想打扰列,您可以使用SQLiteDataReader逐一读取行,并将其放入datagridview中。
private void button1_Click_1(object sender, EventArgs e)
{
    conn.Open();
    SQLiteCommand comm = new SQLiteCommand("Select * From Patients", conn);
    using (SQLiteDataReader read = comm.ExecuteReader())
    {
        while (read.Read())
        {
            dataGridView1.Rows.Add(new object[] { 
            read.GetValue(0),  // U can use column index
            read.GetValue(read.GetOrdinal("PatientName")),  // Or column name like this
            read.GetValue(read.GetOrdinal("PatientAge")),
            read.GetValue(read.GetOrdinal("PhoneNumber")) 
            });
        }
    }

}

2

1) 将AutoGenerateColumns设置为false

2) dgv.Columns["Item"].DataPropertyName = "Item"; dgv.Columns["Quantity"].DataPropertyName = "Quantity";

3) 然后不要使用 select * from table1 而是使用 select item Item,quantity Quantity from table1


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接