Asp.net 如何在BP Automation中使用SQLDataAdapter中的Update语句
我无法使用此代码更新表,请建议我如何修复: 我使用的用户获得了表的插入授权 SQL查询Asp.net 如何在BP Automation中使用SQLDataAdapter中的Update语句,asp.net,vb.net,sqldataadapter,Asp.net,Vb.net,Sqldataadapter,我无法使用此代码更新表,请建议我如何修复: 我使用的用户获得了表的插入授权 SQL查询 UPDATE [UFC].[dbo].[CreateProfile] SET ATTEMPT = '4' WHERE SKP = 804401; 正如建议的那样,我尝试使用以下代码,但不幸的是,这些代码也不起作用: ' Assume success Success = True Message = "" Try Using cmd As New SqlCommand()
UPDATE [UFC].[dbo].[CreateProfile]
SET ATTEMPT = '4'
WHERE SKP = 804401;
正如建议的那样,我尝试使用以下代码,但不幸的是,这些代码也不起作用:
' Assume success
Success = True
Message = ""
Try
Using cmd As New SqlCommand()
cmd.Connection = moConnection
cmd.Transaction = moTransaction
cmd.CommandText = SQL
Using adapter As New SqlDataAdapter()
adapter.UpdateCommand = cmd //------comment:when use
End Using
End Using
Catch ex As Exception
Success = False
Message = ex.Message
End Try
提供有关如何使用SqlDataAdapter
执行更新的指南
数据集
变量。这分别通过FillSchema
和Fill
方法完成表
变量使用主键查找行。我假设列SKP
是这个表的主键,因此,我使用更新查询中的值“804401”作为用于查找行的值dataRow(“”=
)来指定要更新的列和要更新的值SqlDataAdapter
的SqlCommandBuilder
,.NET将自动生成用于更新表的SQL语句。或者,如果愿意,也可以编写自己的SQLSqlDataAdapter
上调用Update()
方法,并将数据集传递给要更新的表和要更新的表名SqlDataAdapter执行更新的指南
首先,您需要使用要更新的目标表的模式信息和当前在所述表中的数据填充数据集
变量。这分别通过FillSchema
和Fill
方法完成
接下来,找到要更新的行。由于您以前加载了模式,表
变量使用主键查找行。我假设列SKP
是这个表的主键,因此,我使用更新查询中的值“804401”作为用于查找行的值
找到行后,可以通过执行dataRow(“”=
)来指定要更新的列和要更新的值
使用接受SqlDataAdapter
的SqlCommandBuilder
,.NET将自动生成用于更新表的SQL语句。或者,如果愿意,也可以编写自己的SQL
在SqlDataAdapter
上调用Update()
方法,并将数据集传递给要更新的表和要更新的表名
当然,我在一些点中有硬编码的值,您需要对其进行参数化。非常感谢帮助您得到的错误是什么?您说数据库用户具有插入权限,但您正在进行更新。可能更改权限?在调用“Fill”之前未启动属性“SelectCommand”。此外,如果您试图用SQL查询的结果填充数据集,并且在启动更新时没有结果,则所有权限包括更新都设置为userinclude;非选择。您是否尝试在更新数据库后检索结果,因为这是两个不同的事务。是的,我只想使用输出进行更新,但下面的代码仍然不起作用:非常感谢帮助您收到的错误是什么?您说数据库用户具有插入权限,但您正在进行更新。可能更改权限?在调用“Fill”之前未启动属性“SelectCommand”。此外,如果您试图用SQL查询的结果填充数据集,并且在启动更新时没有结果,则所有权限包括更新都设置为userinclude;非选择。您是否尝试在更新数据库后检索结果,因为这是两个不同的事务。是的,我只想使用输出进行更新,但以下代码仍然不起作用:
'Assume success
Success = True
Message = ""
Dim dataSet As DataSet = New DataSet("UpdateDataSet")
Try
Using adapter As New SqlDataAdapter("SELECT * FROM CreateProfile", moConnection) 'Note - I don't recommend selecting everything, but for brevity I did
adapter.FillSchema(dataSet, SchemaType.Source, "CreateProfile")
adapter.Fill(dataSet, "CreateProfile")
Dim table As DataTable = dataSet.Tables("CreateProfile")
Dim dataRow As DataRow = table.Rows.Find("804401")
dataRow("Attempt") = "4"
Dim objCommandBuilder As SqlCommandBuilder = New SqlCommandBuilder(adapter)
adapter.Update(dataSet, "CreateProfile")
End Using
Catch ex As Exception
Success = False
Message = ex.Message
End Try