首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多行更新到SQL表中

将多行更新到SQL表中
EN

Stack Overflow用户
提问于 2008-10-08 18:17:37
回答 10查看 33.2K关注 0票数 2

假设myData中有一个完全填充的数据字符串数组。

我想这样做:

代码语言:javascript
复制
for (String[] row : myData)
{
   SQL = "update mytable set col3 = row[2]
   where col1 = row[0] and col2=row[1];" 
}

显然,我遗漏了很多东西,但我想尽可能简洁地表达我的想法。

有没有一种简单的方法可以在一个DB命令中做到这一点?用一种不那么简单的方式怎么样?

编辑:数据不是来自另一个表(这是一个web表单提交-多项选择考试)

由于该应用程序是面向web的,所以它必须是防注入的。参数化查询是我更喜欢的方式。

我正在使用MS-SQL Server 2005

编辑:关闭,并以Multiple DB Updates:身份重新询问

编辑:重新打开,因为这似乎是一个流行的问题

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2008-10-08 18:36:01

如果使用的是Sql Server,则可以使用SqlBulkCopy。首先必须将数据放入DataTable中,这将非常简单,因为您已经将其放入字符串数组中。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx

票数 3
EN

Stack Overflow用户

发布于 2008-10-08 18:48:59

这取决于您使用的数据库。如果您使用的是SQL Server2008,则可以使用存储过程TABLE parameters。这允许您将所有值传递到单个表中的存储过程中,然后您可以执行以下操作:

代码语言:javascript
复制
update mytable set mytable.col1 = @tbl.col1
  from mytable 
  inner join @tbl on mytable.col2 = @tbl.col2

如果您使用的是SQL Server2005,则可以使用XML。将值格式化为XML,然后使用XQuery语句(即'nodes‘和'value')解析出XML。这也可以在一条SQL语句中完成,并且不需要存储过程。

票数 7
EN

Stack Overflow用户

发布于 2008-10-08 18:22:09

您可以创建一个大字符串,如下所示:

代码语言:javascript
复制
for (String[] row : myData)
{
   SQL += "update mytable set col3 = row[2]
   where col1 = row[0] and col2=row[1];" 
}

sqlDriver.doInsertQuery(SQL); // change this to your way of inserting into the db

然后一下子把它都写下来。我不太擅长使用SQL,所以我会这样做。

sql引擎将只用';‘将其拆分,并自行执行单独的插入。不过,将所有内容添加到一个字符串中是可以的。这类似于将一个包含多个更新/插入的大字符串复制到sql提示符中

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/184096

复制
相关文章

相似问题

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