我把这句注释掉可以运行加上就报错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”必须与实际数据库中的表名一致,否则会出现找不到表的报错。