mysql更新列

时间:2013-09-14 19:55:22

标签: mysql vb.net sql-update

我是vb.net中Mysql的新手。

我想要的是当我单击“保存”按钮时,我希望更新mysql数据库并更新collum Wcoins,它将获得Label2.Text中的值

我的代码:

        Dim conn As MySqlConnection
    conn = New MySqlConnection("server=REMOVED;Port=REMOVED; user id=REMOVED; password=REMOVED; database=REMOVED")
    Dim username As Boolean = True
    conn.Open()
    Dim sqlquery As String = "UPDATE * FROM NewTable WHERE Wcoins=label2.text"
    Dim data As MySqlDataReader
    Dim adapter As New MySqlDataAdapter
    Dim command As New MySqlCommand
    command.CommandText = sqlquery
    command.Connection = conn
    adapter.SelectCommand = command
    data = command.ExecuteReader

    data.Close()
    conn.Close()

我犯了一些错误,但我试图更新Wcoins所以它会删除旧值,它将获得label2.text

中显示的值

任何帮助都将得到真正的帮助

我是荷兰人,所以如果你看到拼写错误,请纠正它们

2 个答案:

答案 0 :(得分:0)

Update SQL语句的正确语法是

 UPDATE <table> SET <field>=<value> WHERE <PrimaryKey> = <valueForPK>

所以你的正确命令文本应该是

 UPDATE NewTable SET Wcoins = <value> WHERE ????? = ??????

我不知道你的表的主键的名称是什么,这对于给你正确的答案是必不可少的,因为没有WHERE部分,UPDATE命令将改变你的表的每个记录,我想这是不是你的意图,

最后,您的代码错误,因为将使用MySqlCommand.ExecuteNonQuery()执行UPDATE命令(如INSERT或DELETE),而不使用ExecuteReader。
还有其他要点在你的代码中强调字符串连接以形成命令文本(Sql Injection和解析错误),但此时最好先解决UPDATE问题。

编辑既然您已经提供了有关列名称的更多信息,我可以更新我的答案,以显示我将如何编写该代码

Dim sqlquery = "UPDATE NewTable SET Wcoins=@newValue WHERE Name=@nameValue"
Using conn = New MySqlConnection(.........)
Using command = New MySqlCommand(sqlquery, conn)
    conn.Open()
    command.Parameters.AddWithValue("@newValue", label2.Text)
    command.Parameters.AddWithValue("@nameValue", label1.Text)
    command.ExecuteNonQuery()
End Using
End Using
  • Using Statement以确保连接始终关闭 即使你有例外
  • 不使用字符串为命令添加值的参数 连接(Sql Injection
  • ExecuteNonQuery用于UPDATE查询,而不是使用DataAdapter 和所有必要的代码

答案 1 :(得分:0)

是啊,我尝试了一些代码,我发现了一个有效的代码。

代码:

        Dim conn As MySqlConnection
    conn = New MySqlConnection("server=REMOVED;Port=REMOVED; user id=REMOVED; password=REMOVED; database=REMOVED")
    Dim username As Boolean = True
    conn.Open()
    Dim sqlquery As String = "UPDATE NewTable SET Wcoins='" & Label2.Text & "' WHERE Name='" & Label1.Text & "';"
    Dim data As MySqlDataReader
    Dim adapter As New MySqlDataAdapter
    Dim command As New MySqlCommand
    command.CommandText = sqlquery
    command.Connection = conn
    adapter.SelectCommand = command
    data = command.ExecuteReader

    data.Close()
    conn.Close()

谢谢大家帮助我