Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
在VB.NET中引用SQL行的ID以更新datagridview上的选定行_Vb.net_Datagridview_Sql Update - Fatal编程技术网

在VB.NET中引用SQL行的ID以更新datagridview上的选定行

在VB.NET中引用SQL行的ID以更新datagridview上的选定行,vb.net,datagridview,sql-update,Vb.net,Datagridview,Sql Update,希望有人能为此提供一些建议,希望是一个简单的解决办法。有两个问题: 我在VB.NET中有一个数据网格视图,当您单击该行以更新它时,我被卡住了,然后使用我的代码,我似乎无法从代码中的SQL表中引用现有的唯一ID来更新它,相反,我将更新的行作为具有新ID和更新数据的新行 通过实验,我使用了一个新的Guid.NewGuid,但正如我所说的,我不确定如何引用SQL数据库中的实际ID来更新该行 从update按钮调用的代码如下所示: Private Sub UpdateDataToQuery()

希望有人能为此提供一些建议,希望是一个简单的解决办法。有两个问题:

  • 我在VB.NET中有一个数据网格视图,当您单击该行以更新它时,我被卡住了,然后使用我的代码,我似乎无法从代码中的SQL表中引用现有的唯一ID来更新它,相反,我将更新的行作为具有新ID和更新数据的新行
  • 通过实验,我使用了一个新的Guid.NewGuid,但正如我所说的,我不确定如何引用SQL数据库中的实际ID来更新该行

    从update按钮调用的代码如下所示:

    Private Sub UpdateDataToQuery()
    
        Dim MyCmd As New SqlCommand()
        Dim da As New SqlDataAdapter()
        Dim myTable As New DataTable()
        Dim sSQL As String = String.Empty
    
        'Reference the Opened connection from other conn call and load update query
    
        myConn.Open()
        MyCmd.Connection = myConn
        MyCmd.CommandType = CommandType.Text
    
        sSQL = "UPDATE MySQlTable1 set myTable.Columns(1).ColumnName = @InputDate, 
    myTable.Columns(2).ColumnName = @staffMember, myTable.Columns(3).ColumnName = @Band, 
    myTable.Columns(4).ColumnName = @Defecit, myTable.Columns(5).ColumnName = @Reason, 
    myTable.Columns(6).ColumnName = @ward, myTable.Columns(7).ColumnName = @AuthoriserName5, 
    myTable.Columns(8).ColumnName = @AuthoriserName6 WHERE OT_ID = @guidValue"
    
    
    
        MyCmd.CommandText = sSQL
        da.SelectCommand = MyCmd
        da.Fill(myTable) **<<<< Error here Incorrect syntax near '.'**
    
        'Parameters for update query
    
        MyCmd.Parameters.AddWithValue("@guidValue", Guid.NewGuid)
        MyCmd.Parameters.AddWithValue("@InputDate", DateTimePicker1.Value)
        MyCmd.Parameters.AddWithValue("@staffMember", ComboBox1.GetItemText(ComboBox1.SelectedItem))
        MyCmd.Parameters.AddWithValue("@Ward", ComboBox2.GetItemText(ComboBox2.SelectedItem))
        MyCmd.Parameters.AddWithValue("@Defecit", ComboBox3.GetItemText(ComboBox3.SelectedItem))
        MyCmd.Parameters.AddWithValue("@Reason", ComboBox4.GetItemText(ComboBox4.SelectedItem))
        MyCmd.Parameters.AddWithValue("@Band", ComboBox5.GetItemText(ComboBox5.SelectedItem))
        MyCmd.Parameters.AddWithValue("@AuthoriserName5", ComboBox6.GetItemText(ComboBox6.SelectedItem))
        MyCmd.Parameters.AddWithValue("@AuthoriserName6", ComboBox7.GetItemText(ComboBox7.SelectedItem))
    
        MyCmd.ExecuteNonQuery()
    
    End Sub
    
    Private Sub-UpdateDataToQuery()
    将MyCmd设置为新的SqlCommand()
    Dim da作为新的SqlDataAdapter()
    将myTable设置为新数据表()
    Dim sSQL为String=String.Empty
    '从其他conn调用和加载更新查询中引用打开的连接
    myConn.Open()
    MyCmd.Connection=myConn
    MyCmd.CommandType=CommandType.Text
    sSQL=“更新MySQlTable1设置myTable.Columns(1).ColumnName=@InputDate,
    myTable.Columns(2).ColumnName=@staffMember,myTable.Columns(3).ColumnName=@Band,
    myTable.Columns(4).ColumnName=@Defecit,myTable.Columns(5).ColumnName=@Reason,
    myTable.Columns(6).ColumnName=@ward,myTable.Columns(7).ColumnName=@AuthorizerName5,
    myTable.Columns(8).ColumnName=@authorizerName6其中OT_ID=@guidValue“
    MyCmd.CommandText=sSQL
    da.SelectCommand=MyCmd
    
    da.Fill(myTable)**
    da.SelectCommand=MyCmd
    但MyCmd不是Select命令。这是一个更新命令。Select命令将以单词“Select”开头。您不会用Update命令填充数据集/数据表。在Update字符串中,您指的是变量。编译器不会知道的。它只看到字符串的字符。您需要使用String.Format或插值字符串。请不要使用
    .AddWithValue
    查看和另一个:这是您刚刚创建数据表的另一个。它没有任何列或列名。要更新特定记录,需要该记录的主键。提供新GUID不会在数据库中找到特定记录。
    da.SelectCommand=MyCmd
    但MyCmd不是Select命令。这是一个更新命令。Select命令将以单词“Select”开头。您不会用Update命令填充数据集/数据表。在Update字符串中,您指的是变量。编译器不会知道的。它只看到字符串的字符。您需要使用String.Format或插值字符串。请不要使用
    .AddWithValue
    查看和另一个:这是您刚刚创建数据表的另一个。它没有任何列或列名。要更新特定记录,需要该记录的主键。提供新GUID不会在数据库中找到特定记录。