假设myData中有一个完全填充的数据字符串数组。
我想这样做:
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:身份重新询问
编辑:重新打开,因为这似乎是一个流行的问题
发布于 2008-10-08 18:36:01
如果使用的是Sql Server,则可以使用SqlBulkCopy。首先必须将数据放入DataTable中,这将非常简单,因为您已经将其放入字符串数组中。
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx
发布于 2008-10-08 18:48:59
这取决于您使用的数据库。如果您使用的是SQL Server2008,则可以使用存储过程TABLE parameters。这允许您将所有值传递到单个表中的存储过程中,然后您可以执行以下操作:
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语句中完成,并且不需要存储过程。
发布于 2008-10-08 18:22:09
您可以创建一个大字符串,如下所示:
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提示符中
https://stackoverflow.com/questions/184096
复制相似问题