从SQL Server数据库将数据读取到Datatable时,我遇到了问题。我正在使用Datatable作为DataGridView的数据源,并使用以下代码填充SQL Server表中的数据表。此代码每10秒运行一次以保持结果更新,并且在修改或添加行时(从另一个程序实例或直接来自ssms)运行良好,但是当从db中删除行时,它们会保留在数据表中。Datatable.Load不会删除已删除的行
例如,如果我最初与以下查询装载表:
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(); – msmucker0527
我可以但后来我需要重置datagridview的数据源。它似乎不正确..如果没关系,我会试试看。 –
您将不得不重置datagridview的数据源 – msmucker0527