【发布时间】:2021-06-03 13:33:38
【问题描述】:
我有一个 using 语句来初始化适配器和 Fill()。我想以不同的功能更新适配器,但由于连接关闭,它给了我错误。在这种情况下如何使用 using 或不应该使用 using?
SqlDataAdapter adt;
DataTable dt;
private void myTestAdapterUpdate()
{
using (SqlConnection connection = new SqlConnection(conString))
{
dt = new DataTable();
string query = "SELECT * FROM dbo.Vendor_GUI_Test_Data";
SqlCommand cmd = new SqlCommand(query, connection);
connection.Open();
adt = new SqlDataAdapter(cmd);
adt.Fill(dt);
DataRow toInsert = dt.NewRow();
toInsert[0] = "MYTESTVENDOR2";
toInsert[1] = "4";
toInsert[2] = "89";
toInsert[3] = "89";
dt.Rows.InsertAt(toInsert, 0);
DataRow r = dt.Rows[3];
r.Delete();
SqlCommandBuilder builder = new SqlCommandBuilder(adt);
}
}
private void applyTestAdapterUpdate()
{
adt.Update(dt); //error here
}
【问题讨论】:
-
你能告诉我们这个错误发生在哪一行吗?你有堆栈跟踪或异常信息吗?
-
@Codexer 查看编辑
-
什么编辑??????
-
出现此错误的原因是因为您正在处理与
SqlDataAdapter的连接。因此,当调用adt.Update(dt)时,不再存在有效连接。要解决此问题,您需要创建另一个连接,然后将其分配给adt,应该没问题。 -
@Codexer 是的,但我不知道如何不处理,因为 using 会自动处理。我需要在另一个函数中调用 Update。
标签: c# sql-server sqldataadapter