附加到查询中具有函数的SQL数据库的DataTable未自动更新
本文关键字:数据库 SQL DataTable 更新 函数 查询 | 更新日期: 2023-09-27 18:24:28
我正在尝试将Datagridview绑定到SQL数据库。当我从另一个源(从Visual Stuido中的SQL查询)更新数据库时,这些更改不会显示在DataGridView或底层DataTable中。
我正在运行我的程序,用下面的函数填充DataGridView,然后使用visual studio中的SQL查询更改数据库。DataGridView没有更新,DataTable也没有激发RowChanged事件!
_query = "SELECT * FROM myFunction(0) ORDER BY timestamp DESC";
_connection = new SqlConnection("working connection string");
_adapter = new SqlDataAdapter(_query, _connection);
_cmdBuilder = new SqlCommandBuilder(_adapter);
_table = new DataTable();
_table.RowChanged += _table_RowChanged;
_adapter.Fill(_table);
_bindingSource = new BindingSource();
_bindingSource.DataSource = table;
_dataGridView.DataSource = _bindingSource;
// DataGridView is now populated
// run sql query externally from the program
// to update one of the rows/columns that the above function will return
// never updates datagridview and never updates the row in dataTable
我认为问题与函数有关,适配器是否不断地用查询轮询数据库?如果没有,我可以看到它无法判断它是否已更新。
如果我读对了,那么您有一个数据绑定的DataGridView,它的DataSource是DataTable。您已经用一些SQL以编程方式更改了实际数据库的表,并且希望在DataGridView中看到更新。这不会成功的,伙计。在更新实际数据库后,您应该刷新数据源,方法是将其强制转换为DataTable,然后使用第一次填充时使用的SQL用SqlDataAdapter重新填充。更新实际数据库不会反映在您的数据源中,您必须自己完成。