SQL Server-基于列表更新行
我正在使用Windows窗体-VB.NET 以下是我所拥有的:SQL Server-基于列表更新行,sql,vb.net,list,sql-update,Sql,Vb.net,List,Sql Update,我正在使用Windows窗体-VB.NET 以下是我所拥有的: 复选框设置为True的ListView 一个按钮(触发更新) 具有与列表视图类似字段的数据库表 我想发生的事: 当用户单击按钮时,选中复选框的列表视图上的所有项目都将更新 我的进展: 我已经收集了选中项目的ID,并将它们存储在一个数组中。我将使用它来更新数据库表 问题是: 我不知道如何将它们放入SqlCommand.Parameters 另外,我不知道这种场景的update命令(在/exist(@parameters)
- 复选框设置为
True的
ListView
- 一个
(触发更新)按钮
- 具有与
列表视图类似字段的数据库表
- 当用户单击
按钮时,选中复选框的
列表视图上的所有项目都将更新
- 我已经收集了选中项目的
,并将它们存储在一个数组中。我将使用它来更新数据库表ID
- 我不知道如何将它们放入
SqlCommand.Parameters
- 另外,我不知道这种场景的update命令(在/exist(@parameters)中)
提前谢谢 似乎您希望使用对数据库的单个调用,因为您需要使用命令构建字符串,我认为您不能将列表作为参数传递给命令/sp 更新命令:
UPDATE [table] SET [field1] = value1, [field2] = value2
WHERE [ID] IN (id1, id2, ..., idN)
如果您使用的是SQL Server 2008或更高版本,则可以使用。这些允许您继续处理单独行上的单独ID,执行SQL联接等。我链接到的页面上有很多示例,例如:
使用连接
'使用修改的行创建数据表。
Dim addedCategories As DataTable=_
CategoriesDataTable.GetChanges(DataRowState.Add)
'定义INSERT-SELECT语句。
Dim sqlInsert作为字符串=_
插入dbo.Categories(CategoryID,CategoryName)_
&选择nc.CategoryID,nc.CategoryName_
&“从@tvpNewCategories作为nc;”
'配置命令和参数。
Dim INSERTRCOMMAND作为新的SqlCommand(sqlInsert,连接)
作为SqlParameter的Dim TVPRAM=_
insertCommand.Parameters.AddWithValue(_
“@tvpNewCategories”,新增类别)
tvpParam.SqlDbType=SqlDbType.Structured
tvpParam.TypeName=“dbo.CategoryTableType”
'执行查询
insertCommand.ExecuteNonQuery()
终端使用
您可以轻松地用更新
替换该插入
,如页面前面所示:
UPDATE dbo.Categories
SET Categories.CategoryName = ec.CategoryName
FROM dbo.Categories INNER JOIN @tvpEditedCategories AS ec
ON dbo.Categories.CategoryID = ec.CategoryID;
并相应地调整参数名称。是这样吗?在()中的什么位置?啊,另一个问题,我如何通过SqlCommand.SqlParameter传递id?我不认为你可以通过SqlParameter传递列表,如果你想使用单个命令,你必须用其中的位置和你得到的列表来构建字符串。啊哈,我没有在最新版本的SQL Server中使用ADO.NET,声音great@domanokz-关于如何在以前的版本中实现这一点,本文顶部有一系列建议。最好的建议(如果要传递的ID数量是“无限”的)可能是将它们放在XML中并传递出去。