【发布时间】:2014-03-17 14:08:55
【问题描述】:
我在单击按钮通过数据网格视图更新表格时遇到问题。 这是我的代码。
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 内容。我现在正在修改那个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。 在 system.data.common.dbdataadapter.updatingrowstatusErrors(RowUpdatingeventArgs rowUpdatedEvent,DataRow 数据行) 在 System.data.Common.DbDataAdapter.UpdateFromDataTable(DataTable 数据表,DataTableMapping 表映射) 在 System.Data.Common.DataAdapter.Update(DataTable 数据表) 在 Educational.frmEb.btnSave_Click(object Sender, EventArgs e) 中 C:\Users\Fox\Documents\Stress Test\Educational\form3.vb:line 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 到数据库所做的更改。
【问题讨论】:
-
这将有助于显示有问题的数据库表,但我的感觉是它没有主键
-
我确实在所选表上创建了主键,但出现了同样的错误。
-
我在 SqlDataAdapter 上没有看到你的 SelectCommand,请显示这个
-
那里'我更新了我的帖子。
标签: sql vb.net datagridview datatable dataadapter