【问题标题】:dynamic sql generation error occured when trying to update database尝试更新数据库时发生动态 sql 生成错误
【发布时间】:2015-04-26 02:08:20
【问题描述】:

我按照您的代码进行了操作,并将其放入了一个 msgbox 进行确认,是的,它返回了正确的行号。但是发生了错误,这是我的代码:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    Dim cb As New OleDb.OleDbCommandBuilder(da) 'command builder to update the database

    ds.Tables("inventory_table").Rows(marker).Item(0) = TextBox1.Text 'update dataset
    ds.Tables("inventory_table").Rows(marker).Item(1) = TextBox2.Text 'update dataset
    ds.Tables("inventory_table").Rows(marker).Item(2) = TextBox3.Text 'update dataset
    ds.Tables("inventory_table").Rows(marker).Item(3) = TextBox4.Text 'update dataset
    ds.Tables("inventory_table").Rows(marker).Item(4) = TextBox5.Text 'update dataset
    ds.Tables("inventory_table").Rows(marker).Item(5) = TextBox6.Text 'update dataset
    ds.Tables("inventory_table").Rows(marker).Item(6) = TextBox7.Text 'update dataset



    da.Update(ds, "inventory_table") 'this is where the updating of database takes place
    MsgBox("Data updated")
End Sub

Private Sub DataGridView1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.DoubleClick
    TextBox1.Text = DataGridView1.SelectedRows(0).Cells(0).Value
    TextBox2.Text = DataGridView1.SelectedRows(0).Cells(1).Value
    TextBox3.Text = DataGridView1.SelectedRows(0).Cells(2).Value
    TextBox4.Text = DataGridView1.SelectedRows(0).Cells(3).Value
    TextBox5.Text = DataGridView1.SelectedRows(0).Cells(4).Value
    TextBox6.Text = DataGridView1.SelectedRows(0).Cells(5).Value
    TextBox7.Text = DataGridView1.SelectedRows(0).Cells(6).Value


    marker = Me.DataGridView1.SelectedRows(0).Index


    MsgBox(marker)

End Sub   

错误提示:

不支持更新命令的动态 sql 生成 不返回任何键列信息的选择命令

da.update(ds, "inventory_table") 行高亮显示。

【问题讨论】:

  • @PLASMAchicken 您可以在删除“please”时改进问题和标题中的语法;)

标签: sql vb.net dynamic-sql


【解决方案1】:

在双击事件中设置一个全局变量:

_rowIndex = DataGridView1.SelectedRows(0).Index

然后

ds.Tables("inventory_table").Rows(_rowIndex).Item(1) = TextBox1.Text 
ds.Tables("inventory_table").Rows(_rowIndex).Item(2) = TextBox2.Text 
ds.Tables("inventory_table").Rows(_rowIndex).Item(3) = TextBox3.Text 
ds.Tables("inventory_table").Rows(_rowIndex).Item(4) = TextBox4.Text 
ds.Tables("inventory_table").Rows(_rowIndex).Item(5) = TextBox5.Text 
ds.Tables("inventory_table").Rows(_rowIndex).Item(6) = TextBox6.Text 
ds.Tables("inventory_table").Rows(_rowIndex).Item(7) = TextBox7.Text 

【讨论】:

  • 变量前的下划线是不是必须的?
  • 不,这是识别全局变量的常用方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多