Mysql vb.net与sql数据库
我有一个datagrid视图,它由我的microsoft mysql数据库上的一个表填充。我的问题是我需要选择一行,然后它的值出现在我已解决的文本框中。但是现在,如果发生任何更改,我想创建一个更新函数,用所做的更改更新记录。我试过了,但直到现在都失败了Mysql vb.net与sql数据库,mysql,sql-server,vb.net,visual-studio-2010,Mysql,Sql Server,Vb.net,Visual Studio 2010,我有一个datagrid视图,它由我的microsoft mysql数据库上的一个表填充。我的问题是我需要选择一行,然后它的值出现在我已解决的文本框中。但是现在,如果发生任何更改,我想创建一个更新函数,用所做的更改更新记录。我试过了,但直到现在都失败了 Public Sub AddMember(FirstName As String, Surname As String, Admin As Integer) Try Dim strInsert As String = _
Public Sub AddMember(FirstName As String, Surname As String, Admin As Integer)
Try
Dim strInsert As String = _
"UPDATE test Firstname='this should be the value entered in the text box' " & _
"WHERE Firstname = 'this should equal to the value selected from the datagrid view'"
MsgBox(strInsert)
SQLCon.Open()
SQLCmd = New SqlCommand(strInsert, SQLCon)
SQLCmd.ExecuteNonQuery()
SQLCon.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
检查更新的语法
因此,请按以下方式更改您的查询:
Dim strInsert As String = " update test Set FirstName= '" & FirstName & "'," & _
"Surname='" & Surname & "'," & _
"admin='" & Admin & "')"
这是您应该使用的查询。 带有@的参数实际上是发送给SQL的值
Update test Set FirstName=@FirstName where Id=@Id
如果您使用的是MySQL,那么您应该使用MySqlCommand而不是SqlCommand。还可以使用MySqlConnection。您可以在MySql.Data.MySqlClient命名空间中找到这两个名称 如果您还没有这样做,您还需要下载并安装,并在项目中添加对MySql.Data.dll的引用 也可以使用命令参数而不是字符串连接。这既安全又简单,因为您不必担心用SQL的正确方式格式化字符串、数字和日期
Dim sql As String = "UPDATE tst SET FirstName=@fn, Surname=@sn WHERE Id=@id"
Using conn = New MySqlConnection(connectionString)
Using cmd = New MySqlCommand(sql, conn)
cmd.Parameters.AddWithValue("@fn", FirstName)
cmd.Parameters.AddWithValue("@sn", Surname)
cmd.Parameters.AddWithValue("@id", id)
conn.Open()
cmd.ExecuteNonQuery()
End Using
End Using
请注意,WHERE子句应该通过其主键标识数据库行。在MySQL中,主键最好创建为自动增量列。在任何情况下,都不能使用名字来标识行,因为几个人可以有相同的名字。请参阅:and.uum,该查询中缺少WHERE子句。SQL怎么知道您要更新的特定结果?我再次编辑了代码,很抱歉,他的查询也会像他发布的一样工作,他只需要Where子句。