-2

私はvb.netのMysqlが初めてです。

私が欲しいのは、保存ボタンをクリックしたときに、mysql データベースが更新され、列 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()

私はいくつかの間違いを犯しましたが、古い値を削除し、label2.text に表示されている値を取得するように、Wcoins を更新しようとしていました。

どんな助けでも本当に感謝します

私はオランダ人なので、スペルミスがあれば修正してください

4

2 に答える 2

0

Update SQL ステートメントの正しい構文は次のとおりです。

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

したがって、正しいコマンド テキストは次のようになります。

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

テーブルの主キーの名前がわかりません。これは正しい答えを得るために不可欠です。なぜなら、WHERE 部分がないと UPDATE コマンドはテーブルのすべてのレコードを変更するからです。これはあなたの意図ではないと思います。 、

最後に、UPDATE コマンド (INSERT や DELETE など) は MySqlCommand.ExecuteNonQuery() を使用して実行され、ExecuteReader を使用しないため、コードが間違っています。
コマンド テキストを形成するための文字列の連結 (SQL インジェクションと解析エラー) のように、コード内で下線を引くポイントは他にもありますが、この時点では、最初に 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
  • Statementを使用して、例外がある場合でも接続が常に閉じていることを確認します
  • 文字列連結を使用せずにコマンドの値を追加するパラメーター ( SQL インジェクション)
  • DataAdapter とそれに必要なすべてのコードを使用する代わりに、UPDATE クエリの ExecuteNonQuery
于 2013-09-14T20:07:55.923 に答える