我有一个问题,只需点击一下按钮,就可以通过数据网格视图更新表格。 这是我的代码。
Public Sub loaddgvfrm3()
cmdconn = New SqlConnection
cmd = New SqlCommand
cmdconn.ConnectionString = sqlstr
cmdconn.Open()
cmd.Connection = cmdconn
cmd.CommandText = "select period, VOUCH_AMT, INDIVIDUAL_AMT, check_no, D_MAILED, DIR_NO, who_updated, year_student from tobee.EBD_BILLHISTORY where CLAIM_NO like '" + txtClaimno.Text + "'"
'cmd.CommandText = "select a.period, a.VOUCH_AMT, a.INDIVIDUAL_AMT, a.check_no, a.bal_ent, a.D_MAILED, a.DIR_NO from tobee.EBD_BILLHISTORY a left join carlos.claims_waivee b on a.CLAIM_NO = b.claim_no where b.CLAIM_NO like '" + claimno.ToString + "'"
'Dim ds As New DataTable
'Dim cmdbuilder = New SqlCommandBuilder(da)
'da = New SqlDataAdapter()
da.SelectCommand = cmd
da.Fill(dt)
Me.DataGridView1.DataSource = dt
Me.DataGridView2.DataSource = dt
cmdconn.Close()
End Sub
上面的代码是datagridview内容,我把select语句放在哪里。我正在修改datagridview
Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
Try
cmdBuilder = New SqlCommandBuilder(da)
da.Update(dt)
dt.AcceptChanges()
'End If
MsgBox("changes done")
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
每当我在修改某一行后单击“保存”按钮时,就会出现错误日志,
错误看起来像这样:
System.InvalidOperationException:对于不返回任何键列信息的SelectCommand,不支持UpdateCommand的动态SQL生成。 at system.data.common.dbdataadapter.updatingrowstatusErrors(RowUpdatingeventArgs rowUpdatedEvent,DataRow datarow) 在System.data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable,DataTableMapping tablemapping) 在System.Data.Common.DataAdapter.Update(DataTable dataTable) 在Educational.frmEb.btnSave_Click(对象发件人,EventArgs e)中 C:\ Users \ Fox \ Documents \ Stress Test \ Educational \ form3.vb:第220行
但程序仍在继续。 我看不到我在DGV中对数据库所做的任何更改。 有什么东西我不见了吗?
这是我的宣言
Dim connstr As String = "server=midtelephone\sqlexpress; database=testdb; user= sa; password=sa;"
Dim cmdconn = New SqlConnection
Dim cmdBuilder As SqlCommandBuilder
Dim da As New SqlDataAdapter()
Dim dt As New DataTable
在该错误之前,他们说我需要在数据库中设置主键/唯一键,所以我做了,但同样的错误出来了。
请帮助我,我真的陷入了这个阶段,如果你这样做,我会永远感激,因为这是我项目的最后一部分。使用da.update更新我从dgv更改到数据库的更改。
答案 0 :(得分:0)
命令构建器只能在以下情况下生成UpdateCommand和DeleteCommand:
如果您已经拥有1和2,请确保将数据适配器的MissingSchemaAction属性设置为AddWithKey。