在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()
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不会在数据库中找到特定记录。