我在更新数据库的时候遇到这个问题

我把这句注释掉可以运行加上就报错da.Update(ds, "ghxx"),

代码如下

Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Dim js As String
        If ComboBox3.SelectedIndex = 0 Then
            js = "自费"
        ElseIf ComboBox3.SelectedIndex = 1 Then
            js = "区医保"
        Else
            js = "市医保"
        End If

        Try
            Conn = New SqlConnection()
            Conn.ConnectionString = "Server=(local);database=mzgh;Integrated Security=True"
            Conn.Open()
            Dim cmd As New SqlCommand("select * from ghxx", Conn)
            Dim da As SqlDataAdapter
            Dim ds As DataSet
            Dim dr As DataRow
            da = New SqlDataAdapter(cmd)
            ds = New DataSet()

            da.Fill(ds, "ghxx")
            dr = ds.Tables("ghxx").NewRow()
            dr("s_id") = TextBox7.Text
            dr("name") = TextBox2.Text
            dr("sex") = TextBox3.Text
            dr("age") = TextBox4.Text
            dr("p_date") = DateTimePicker1.Value
            dr("tele") = TextBox5.Text
            dr("dz") = TextBox6.Text
            dr("lx") = js
            dr("g_ys") = ComboBox2.SelectedItem
            dr("g_ks") = ComboBox1.SelectedItem
            ds.Tables("ghxx").Rows.Add(dr)
            Dim scb As New SqlCommandBuilder(da)
            da.Update(ds, "ghxx")
            DataGridView1.DataSource = ds.Tables("ghxx")
            Conn.Close()
            MsgBox("挂号成功!")
        Catch ex As Exception
            MessageBox.Show(ex.ToString())
        End Try
    End Sub

 

根据你提供的错误信息,你在更新数据库时出现了语法错误,具体地说是UPDATE关键字后面缺少目标表的名称。推测可能是在初始化SqlDataAdapter对象时,没有指定UpdateCommand属性,导致在执行da.Update(ds, "ghxx")时出错。你可以尝试将以下代码添加到初始化SqlDataAdapter对象的代码块中:

Dim cb As New SqlCommandBuilder(da)
da.UpdateCommand = cb.GetUpdateCommand()

这样就会自动生成UpdateCommand,从而解决该错误。注意,在这里的DataSet中的表名“ghxx”必须与实际数据库中的表名一致,否则会出现找不到表的报错。