使用带有参数的 SqlDataAdapter.Update()

发布于 2024-12-01 17:22:48 字数 813 浏览 0 评论 0原文

如何尝试弄清楚如何使用参数化查询来使用 SqlDataAdapter.Update(DataTable) 方法。如何将值添加到命令而不迭代整个数据表?

如何在事务中执行 SqlDataAdapter 插入和更新方法?

到目前为止我所得到的内容如下:

internal void InsertUpdate(DataTable dt){
    using(var con = new SqlConnection(ConnectionString)){
         var sb = new StringBuilder();
         sb.AppendLine("UPDATE myTable");
         sb.AppendLine("SET prop1 = @p1, prop2 = qp2");
         sb.AppendLine("WHERE id = @id");
         var cmd = new SqlCommand(sb.ToString());
         cmd.Parameters.AddWithValue("p1", ????);
         cmd.Parameters.AddWithValue("p2", ????);
         cmd.Parameters.AddWithValue("id", ????);
         var adapter = new SqlDataAdapter(selectQuery, con);
         adapter.UpdateCommand = cmd;
         adapter.Update(dt);
    }
}

最好的问候

杰伊

How trying to figure out how to use SqlDataAdapter.Update(DataTable) method using a parameterised query. How can I add the values to the command without iterating over the whole DataTable?

And how can I execute the SqlDataAdapter insert and update methods within a transaction?

What I have so far is the following:

internal void InsertUpdate(DataTable dt){
    using(var con = new SqlConnection(ConnectionString)){
         var sb = new StringBuilder();
         sb.AppendLine("UPDATE myTable");
         sb.AppendLine("SET prop1 = @p1, prop2 = qp2");
         sb.AppendLine("WHERE id = @id");
         var cmd = new SqlCommand(sb.ToString());
         cmd.Parameters.AddWithValue("p1", ????);
         cmd.Parameters.AddWithValue("p2", ????);
         cmd.Parameters.AddWithValue("id", ????);
         var adapter = new SqlDataAdapter(selectQuery, con);
         adapter.UpdateCommand = cmd;
         adapter.Update(dt);
    }
}

Best Regards

Jay

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

柏林苍穹下 2024-12-08 17:22:48

不要使用Parameters.AddWithValue(...),而是使用Parameters.Add(new SqlParameter(...)) 并在此处使用SqlParameter 文档的最后三个构造函数之一: SqlParameter 类 MSDN 文档。它们允许您指定将在运行时用于填充参数的列。例如,以下是我当前程序之一中的一行:

UpdateCommand.Parameters.Add(new OleDbParameter("FK_CustomerID", global::System.Data.OleDb.OleDbType.Integer, 0, global::System.Data.ParameterDirection.Input, ((byte)(0)), ((byte)(0)), "FK_CustomerID", global::System.Data.DataRowVersion.Current, false, null));

请注意“FK_CustomerID”的第二次使用,它指示使用此 DataTable 列作为参数。

关于使用事务,请查看以下内容以获取一些想法:事务TableAdapters,一个懒人的方法
问候, 德鲁

Instead of using Parameters.AddWithValue(...), use Parameters.Add(new SqlParameter(...)) and use one of the last three constructors for SqlParameter documents here: SqlParameter Class MSDN documentation. They allow you to specify a column which will be used at runtime to fill the parameter. For example, here is a line from one of my current programs:

UpdateCommand.Parameters.Add(new OleDbParameter("FK_CustomerID", global::System.Data.OleDb.OleDbType.Integer, 0, global::System.Data.ParameterDirection.Input, ((byte)(0)), ((byte)(0)), "FK_CustomerID", global::System.Data.DataRowVersion.Current, false, null));

Note the second use of "FK_CustomerID", which indicates to use this DataTable column for the parameter.

Regarding using transactions, take a look at this for some ideas: Transactions with TableAdapters, a lazy man's approach.
Regards, Drew

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文