从SQLite DB填充DataGridView(C#)

时间:2015-03-17 18:35:53

标签: c# database sqlite datagridview

我正在尝试从SQLite数据库填充datagridview。

我找到了很多方法。但是,我的dgv中有预先存在的列(项目,数量)。

目前,当我将数据库加载到dgv时,我会将数据库的列插入到dgv中,而不是将实际数据插入到正确的列中。

我的SQLite数据库,有一个包含三列的表(id PRIMARY KEY AUTO INCREMENT,item VARCHAR,quantity INTEGER)。

如何将数据库加载到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 个答案:

答案 0 :(得分:10)

如果您不想打扰列,可以使用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")) 
            });
        }
    }

}

答案 1 :(得分:2)

1)将AutoGenerateColumns设置为false

2)dgv.Columns [" Item"]。DataPropertyName =" Item&#34 ;;    dgv.Columns [" Quantity"]。DataPropertyName =" Quantity&#34 ;;

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