【问题标题】:The ConnectionString property has not been initialized. with usingConnectionString 属性尚未初始化。随着使用
【发布时间】: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


【解决方案1】:

您必须从命令生成器中设置数据适配器插入和删除命令 然后在更新前将 adt.InsertCommand.Connection 和 adt.DeleteCommand.Connection 设置为新的 sqlconnection

updating with data adapters

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多