我有一个名为“用户”的表,其中包含一些基本字段,如姓名、地址、城市和移动。
现在,在表单加载中,我试图显示datagridview中的所有行,如下所示:
Dim strConnection As String = "Data Source=.\sqlexpress;Initial Catalog=Customers;Integrated Security=True"
Dim con As New SqlConnection(strConnection)
con.Open()
Dim myadapter As New SqlDataAdapter
myadapter = New SqlDataAdapter("Select name, address, city and mobile from Users", con)
Dim ds As New DataSet
myadapter.Fill(ds, "Users")
UsersDataGridView.DataSource = ds.Tables(0)在这之前一切都很顺利。
现在,我想从gridview更新字段,并尝试下面的代码,但是它给出了一个错误,如下所示:
Update unable to find TableMapping['Table'] or DataTable 'Table'.
Private Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click
Dim cmdbl As New SqlCommandBuilder(myadapter)
myadapter.Update(ds, "Users")
End Sub发布于 2014-04-29 14:53:50
这里有几件事
1)您的示例没有显示对GetUpdateCommand()的调用
试一试:
Private Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click
Dim cmdbl As New SqlCommandBuilder(myadapter)
cmdbl.GetUpdateCommand()
myadapter.Update(ds, "Users")
End Subhttp://msdn.microsoft.com/en-us/library/kfbedfwf(v=vs.110).aspx
2)此外,看起来SELECT命令不包括主键列。您需要这样做,以便CommandBuilder可以构建一个有效的更新或删除逗号。
我不知道您的表是什么样子,但是如果您的主键列名为ID,那么将原始sql (select语句)更改为:
myadapter = New SqlDataAdapter("Select id, name, address, city and mobile from Users", con)3) Select命令看上去有问题。特别是“城市与移动”栏目。如果这是您的列的名称,您可能需要在它周围设置如下分隔符:
myadapter = New SqlDataAdapter("Select id, name, address, [city and mobile] from 用户“,con)‘或者您可能打算这样说: myadapter =新SqlDataAdapter(”选择id、名称、地址、城市、从用户中移动“,con)
https://stackoverflow.com/questions/23366224
复制相似问题