【发布时间】:2018-01-18 18:34:19
【问题描述】:
在将数据从 SQL Server 数据库读取到数据表时遇到问题。我使用数据表作为我的 DataGridView 的数据源,并使用以下代码填充 SQL Server 表中的数据表。此代码每 10 秒运行一次以保持结果更新,并且在修改或添加行时(从程序的另一个实例或直接从 ssms)运行良好,但当从数据库中删除行时,它们仍保留在数据表中。
例如,如果我最初使用以下查询加载表:
SELECT TOP 10 *
FROM Table
然后用
加载它SELECT TOP 5 *
FROM Table
数据表仍然有 10 行。
我尝试了每个LoadOptions(Upsert、OverwriteChanges 和 PreserveChanges)相同的结果。
我找到的唯一解决方案是在加载之前调用datatable.Rows.Clear(),但这会导致其他问题。
using (SqlConnection con = new SqlConnection(_connectionString))
using (SqlCommand command = new SqlCommand(query, con))
{
con.Open();
using (SqlDataReader reader=command.ExecuteReader())
{
dt.Load(reader);
}
con.Close();
}
我该如何解决这个问题?
【问题讨论】:
-
你能新建一个DataTable吗? dt = new DataTable();
-
我可以,但是我需要重置 datagridview 的数据源。好像不对。。如果可以的话我试试看。
-
无论哪种方式,您都必须重置 datagridview 的数据源
标签: c# sql-server winforms datatable sqldatareader