Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在BP Automation中使用SQLDataAdapter中的Update语句_Asp.net_Vb.net_Sqldataadapter - Fatal编程技术网

Asp.net 如何在BP Automation中使用SQLDataAdapter中的Update语句

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()

我无法使用此代码更新表,请建议我如何修复: 我使用的用户获得了表的插入授权

SQL查询

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语句。或者,如果愿意,也可以编写自己的SQL
  • SqlDataAdapter
    上调用
    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