这是我的方法:
Datatable data2 = new Datatable();
int result = 0;
using (SqlConnection conn = new SqlConnection(connStr))
{
try
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
conn.Open();
cmd.CommandText = "SELECT * from TableA";
SqlDataAdapter da = new SqlDataAdapter(cmd);
result = da.Fill(data2);
if (result > 0)
{
this.dgBatch.DataSource = data2;
}
else
{
MessageBox.Show("No Records!");
}
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
}
finally
{
if (conn.State == ConnectionState.Open) conn.Close();
}
}
如果我连续调用此方法,它总是从第一个查询中添加行。
例如:
表数据:5
第一次电话:5
第二次呼叫:10。它复制第一次呼叫的所有记录。
表示感谢
答案 0 :(得分:3)
那是因为你正在重用data2
。您应该在以下行之前为data2
创建一个新实例:
result = da.Fill(data2);
答案 1 :(得分:1)
假设data2是数据表
result = da.Fill(data2);将始终合并结果,因为您正在使用相同的数据表实例。
如果你想每次都获得一个新副本而不是创建一个新的datatable实例,而不是用数据填充这个实例。
所以结果之前的行= da.Fill(data2);添加以下行。
data2 = new Datatable();