首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用vb.net更新vb.net查询

用vb.net更新vb.net查询
EN

Stack Overflow用户
提问于 2013-01-21 13:20:47
回答 2查看 5K关注 0票数 0

在vb.net应用程序中的中,我将一些列的数据更新到sql,下面是代码

代码语言:javascript
复制
dim cnn = New SqlConnection(connetionString)
Dim q As New SqlCommand("UPDATE products SET rank=@rank,rankchange=@rankchange,PD=@PD,PDP=@PDP,TPD=@TPD where catalogid=@catalogid",cnn)
cnn.Open()
For i = 0 To mainDatatable.Rows.Count - 1
 q.Parameters.Add(New SqlParameter("@rank", mainDatatable.Rows(i)("rank")))
 q.Parameters.Add(New SqlParameter("@rankchange", mainDatatable.Rows(i)("rankchange")))
 q.Parameters.Add(New SqlParameter("@PD", mainDatatable.Rows(i)("PD")))
 q.Parameters.Add(New SqlParameter("@PDP", mainDatatable.Rows(i)("PDP")))
 q.Parameters.Add(New SqlParameter("@TPD", mainDatatable.Rows(i)("TPD")))
 q.ExecuteNonQuery()
 q.Parameters.Clear()
Next

我有两个问题

  1. 考虑到这个表有大约60k的记录,它运行缓慢。
  2. 如果我的datatable应用程序中的a值为NULL,那么我想将其更新为NULL,那么最好的方法是什么?我尝试了以下几种方法

如果IsDBNull(mainDatatable.Rows(I)(“秩”))那么q.Parameters.Add(新SqlParameter(“@q.Parameters.Add”,"NULL"))或q.Parameters.Add(“@秩”,mainDatatable.Rows(I)(“秩”))结束

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-21 13:33:02

为了回答(1)速度问题.

如果确实有60K+更改要处理,则不需要执行60K update语句。我会将60K记录上传到临时表中,并调用一个存储过程在真实表和临时表之间执行UPDATE FROM...INNER JOIN语句。如果您不想重写您拥有的内容,另一个可能的想法是过滤掉datatable中没有被污染的任何行。如果没有变化,那么就没有理由发送那些更新语句.

关于(2)这里是语法..。

对于将空值作为SqlParameters发送,这应该适用于您。

代码语言:javascript
复制
If mainDatatable.Rows(i)("rank") = DBNull.Value Then
  q.Parameters.Add(New SqlParameter("@rankchange", SqlDbType.Int, 4) With { .Value = DBNull.Value })
Else
  q.Parameters.Add(New SqlParameter("@rankchange", SqlDbType.Int, 4) With { .Value = mainDatatable.Rows(i)("rank") })
End If
票数 2
EN

Stack Overflow用户

发布于 2013-01-21 13:32:33

编写下面的代码行q.Parameters.Add(New SqlParameter("@rank", "NULL"))不会使空项变为空项,相反,它会将Null视为字符串。

你可以试试这个。

代码语言:javascript
复制
q.Parameters.Add(new SqlParameter() { 
        ParameterName="@test",
        IsNullable=true,
        Value=DBNull.Value
    });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14439584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档