Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql vb.net与sql数据库_Mysql_Sql Server_Vb.net_Visual Studio 2010 - Fatal编程技术网

Mysql vb.net与sql数据库

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 = _

我有一个datagrid视图,它由我的microsoft mysql数据库上的一个表填充。我的问题是我需要选择一行,然后它的值出现在我已解决的文本框中。但是现在,如果发生任何更改,我想创建一个更新函数,用所做的更改更新记录。我试过了,但直到现在都失败了

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子句。