2017-01-17 5 views
1

データベース内のSerialNoに関連するレコードを削除したいとします。VBデータベースのSQLデータベースからレコードを削除する

これは私のコードです:

Using con = New MySqlConnection("server=" & server & ";" & "user id=" & userid & ";" & "password=" & password & ";" & "database=" & database) 
    con.Open() 
    Dim sqlText = "DELETE * FROM datatable WHERE SerialNo = @ulogin" 
    Using cmd = New MySqlCommand(sqlText, con) 
     cmd.Parameters.AddWithValue("@ulogin", frmmain.txtinput.Text) 
     cmd.ExecuteNonQuery() 
    End Using 
    con.Close() 
End Using 

このコードは動作しません。私はプログラムを実行すると、次のエラーが表示されます。

enter image description here

親切に適したソリューションを提案することにしてください。

注: 221は入力番号を意味します。

+3

*それは、[削除](https://msdn.microsoft.com/en-gb/library/ms189835.aspx)声明 – Bugs

+0

では不要だと削除私はJinx88909しかし、@も*なしのコードをテストそれは動作しません。 –

+0

データ型はINTです。それで私は何をしなければなりませんか? @Plutonix –

答えて

3

*は属していません。特定の列のみをレコードから削除することはできません。レコード全体を削除するか何も実行しないので、DELETEステートメントの列リスト部分はありません。

私がここにいる間に、con.Close()を呼び出す必要はありません(Usingブロックはあなたのための世話をする)、それはあなたがあなたのパラメータの型を明示することができますAdd()過負荷の賛成でAddWithValue()を避ける方が良いでしょう。

Const sqlText As String = "DELETE FROM datatable WHERE SerialNo = @ulogin" 
Using con As New MySqlConnection("server=" & server & ";" & "user id=" & userid & ";" & "password=" & password & ";" & "database=" & database), _ 
     cmd AS New MySqlCommand(sqlText, con) 
    cmd.Parameters.Add("@ulogin", MySqlDbType.Int32).Value = frmmain.txtinput.Text 
    con.Open() 
    cmd.ExecuteNonQuery() 
End Using 
+0

+1入れ子のusingステートメントの使用が好きなので、コードを読みやすくすることができます。実際にレコードが削除された場合、PlutonixがDim rows = cmd.ExecuteNonQueryで示唆したことを知っておくことは価値があります。 – Bugs

+1

@ Jinx88909私はC#でこれをやり始めましたが、正直なところ、このVBの同等機能はバグかもしれないと思います。 '、'セパレータは、 'Using'宣言を続けるのではなく、新しいステートメントを作成する可能性があります。しかし、私は決してトラブルチケットを持っていないし、私は簡潔さが好きです。これは本当にあなたが最も気にする必要のあるDB接続です。 –

+0

この問題で私を助けに来てくれてありがとう@JoelCoehoorn –

関連する問題