Dim sb As New MySqlConnectionStringBuilder
sb.Server = Form1.hostname.Text
sb.UserID = Form1.rootuser.Text
sb.Password = Form1.rootpassword.Text
sb.Database = Form1.hostdb.Text
sb.Port = Form1.hostport.Text
Using connection As New MySqlConnection(sb.ConnectionString)
Try
connection.Open()
Dim adapter1 As New MySqlDataAdapter(TextBox1.Text, connection)
Dim cmdb1 = New MySqlCommandBuilder(adapter1)
Dim ds As New DataSet
Dim words As String() = TextBox1.Text.Split(New Char() {" "c})
Dim tablenamewords = (words(3))
adapter1.Update(ds, tablenamewords)
Catch ex As MySqlException
MessageBox.Show(ex.Message)
Finally
connection.Dispose()
End Try
End Using
这给了我这个错误:
更新无法找到TableMapping ['creature_template']或DataTable'creature_template'。
我想选择项目,然后使用DataGrid更新它们。
注意:tablenamewords = "creature_template"
答案 0 :(得分:0)
您可以通过许多不同的方法解决此问题。
我希望每次用户结束编辑单元格时都使用单个查询来更新数据库。
首先,您已将绑定到您的DataGridView
!
如何绑定源:
pause/start
之类的小按钮,如下所示:Add data source
,如图所示:做得好,您差不多完成了。只需输入您的代码,然后查找此子项即可:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.your_table_nameTableAdapter.Fill(Me.your_db_nameDataSet.your_table_name)
End Sub
Form1_Load
子内部的行将在DataGridView
内上传数据,如果要使用表单加载或将其剪切/粘贴到任意位置,则将其保留在那里。
现在您可以添加此代码以编程方式更新数据库:
Private Sub DataGridView1_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
Try
Dim location As Point = DataGridView1.CurrentCellAddress
Dim sqlCmd As String = "UPDATE table_name SET " & _
DataGridView1.Columns(location.X).Name.Replace("DataGridViewTextBoxColumn", "") & " = @Data " & _
"WHERE " & _
DataGridView1.Columns(0).Name.Replace("DataGridViewTextBoxColumn", "") & " = @ID"
Using myConn As New SqlConnection(My.Settings.VISURE_DA_PDFConnectionString)
myConn.Open()
Using myCmd As New SqlCommand(sqlCmd, myConn)
myCmd.Parameters.Add("@Data", SqlDbType.VarChar)
myCmd.Parameters.Add("@ID", SqlDbType.Int)
myCmd.Parameters("@Data").Value = DataGridView1.Rows(location.Y).Cells(location.X).Value
myCmd.Parameters("@ID").Value = DataGridView1.Rows(0).Cells(location.X).Value
myCmd.ExecuteNonQuery()
End Using
myConn.Close()
End Using
Catch ex As Exception
Err.Clear()
End Try
End Sub
备注:
location.X
是col索引,location.Y
是行索引
DataGridView1.Columns(0).Name
这是我的ID
(主键),它始终在第一列中。随便更改。
如果您要获取列名,请不要忘记添加.Replace("DataGridViewTextBoxColumn", "")
如前所述,每次用户在DataGridView
上编辑一个单元格时,此代码将更新您的数据库。这不是什么大问题,因为如果您要编辑两个或两个以上的单元格,则每次离开一个已编辑的单元格都会触发方法DataGridView1_CellEndEdit
!