【问题标题】:vb.net and sql databasevb.net 和 sql 数据库
【发布时间】:2014-10-18 13:37:54
【问题描述】:

我有一个数据网格视图,它由我的 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

【问题讨论】:

  • uuum,您在该查询中缺少 WHERE 子句。 SQL 如何知道您要更新的特定结果?
  • 对不起,我再次编辑了代码

标签: mysql sql-server vb.net visual-studio-2010


【解决方案1】:

如果您正在使用 MySQL,那么您应该使用 MySqlCommand 而不是 SqlCommand。也使用MySqlConnection。您可以在 MySql.Data.MySqlClient 命名空间中找到两者。

如果您还没有这样做,您还需要下载并安装"Connector/Net" 并在您的项目中添加对MySql.Data.dll 的引用。

还使用命令参数而不是字符串连接。这既更安全(参见:SQL injection)也更容易,因为您不必担心以 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 中,最好将主键创建为 AUTO_INCREMENT 列。在任何情况下都不要使用名字来识别行,因为多个人可以有相同的名字。请参阅:Using Primary KeysSQL PRIMARY KEY Constraint

【讨论】:

    【解决方案2】:

    检查语法更新here

    所以改变你的查询如下:

    Dim strInsert As String = " update test Set FirstName= '" & FirstName & "'," & _
                              "Surname='" & Surname & "'," & _
                              "admin='" & Admin & "')"
    

    【讨论】:

    • 他的查询也可以像他发布的那样工作,他只需要 Where 子句。
    【解决方案3】:

    这是您应该使用的查询。
    带有 @ 的参数实际上是您发送给 SQL 的值。

    Update test Set FirstName=@FirstName where Id=@Id
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-07
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      相关资源
      最近更新 更多