SQLite数据适配器未显示数据。

12

我正在尝试在我的Windows窗体应用程序中填充一个数据网格视图,但是当我执行选择查询时,没有从数据库中返回任何内容。我已经查看了该网站上关于此主题的其他问题,但找不到解决我的问题的任何内容。

数据视图表的名称为qbcMemDataView,数据源是名为sqlite_dbDataSet1的SQLite数据集。

这是我已经编写的代码:

public Form1()
{
    InitializeComponent();

    dbConnection = new SQLiteConnection("Data Source=sqlite_db.sqlite;Version=3");

    dbConnection.Open();

    string[] restrictions = new string[4];

    restrictions[2] = "test_table_mom";

    using (DataTable dTbl = dbConnection.GetSchema("Tables", restrictions))
    {
        for (int i = 0; i < dTbl.Rows.Count; i++)
        {
            tblChooser.Items.Add(dTbl.Rows[i].ItemArray[dTbl.Columns.IndexOf("TABLE_NAME")].ToString());
        }

        if (tblChooser.Items.Count > 0)
        {
            tblChooser.SelectedIndex = 0;
        }
    }  
}

private void btnSelect_tbl_Click(object sender, EventArgs e)
{

    string sql = "SELECT id, name FROM test_table_mom";

    using (SQLiteDataAdapter dbAdapter = new SQLiteDataAdapter(sql, dbConnection))
    {
        DataTable dataTbl = new DataTable();

        dbAdapter.Fill(dataTbl);

        qbcMemDataView.DataSource = dataTbl;
    }
}

此外,这里有一个程序运行的截图,可能有助于更好地解释我遇到的问题:http://imgur.com/j9ffeVi

我知道表格里面有数据,我只是不知道为什么当btnSelect_tbl_Click方法执行时,它没有出现在数据网格中。

任何帮助都将不胜感激。

谢谢!

2个回答

7
根据教程如何将数据绑定到Windows窗体DataGridView控件,你没有一个BindingSource组件,该组件可以将数据从数据源绑定到你的表格中,以便在DataGrid中显示。

在类的顶部初始化BindingSource,代码如下:

private BindingSource bindingSource1 = new BindingSource();

在你的按钮点击方法的顶部附近,在SQL语句之前添加以下行:
qbcMemDataView.DataSource = bindingSource1;

最后,修改代码的最后一行。
qbcMemDataView.DataSource = dataTbl;

为了

bindingSource1.DataSource = dataTbl;

你可以尝试一下,看看是否适用于你。


3
注意:我不确定这是否适用于C#,但也许是通用的解决方法。
Android内置适配器等使用_id作为ID字段的名称。另一个问题是_id和id在android中没有很好地记录。
关于Android SQLite中的“_id”字段
您可以在选择中使用此重命名技术,但它会变得混乱,并且您可能无法捕获所有情况。
string sql = "SELECT id _id, name FROM test_table_mom";

我的观点:回去重构你的数据库ID为_id。


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