2016-07-13 17 views
0

データベーステーブルからレコードを削除するSQL文があります。それを踏んだ後、最終的な部分を除いてすべて正常に動作することがわかります(つまり、削除する行が正しく取得され、すべての変数が必要な値に一致します)。私はSQLを使い慣れていないので、次のエラーを修正する方法を教えてもらえますか? '*' の近くに不正な構文:不正なSQL構文エラー

型 'System.Data.OleDb.OleDbException' の未処理の例外は

のSystem.Data.dll

に追加情報を起こりました。

SQLクエリ:

Public Shared Sub deleteRecord(ByVal recordID As Integer, con As OleDbConnection) 
    Dim Dc As New OleDbCommand 
    Dc.Connection = con 

    con.Open() 
    Dc.CommandText = "DELETE * FROM tblData WHERE([recordID] = '" & recordID & "')" 

    Dc.ExecuteNonQuery() 
    con.Close() 

End Sub 
+1

「*」を削除してください。構文は 'DELETE FROM [TABLE] WHERE [FILTERS]' –

+1

あなたの質問をコピーしてデータベースで直接試してください...エラーはあなたに問題を伝え、星を削除します。 –

+4

パラメータ化されたクエリを使用する必要があります。 'int'はSQLインジェクションを防ぎますが、あなたは依然として一回使用のクエリでプランキャッシュを膨らませます。 –

答えて

1

これに置き換える:

Dc.CommandTextは= &が

3

だけ*を削除し、括弧。 DELETE FROM tblData WHERE recordID = ...

1

*をレコードIDがSELECTにしたい列名のすべてを入力の代わりに使用される "[レコードID] = tblData。DELETE FROM" 。ここで重要なことは、を表すことです。

DELETEが行に対して発生します。したがって、DELETE *と言っても意味がありません。このようにして単一の列/セルを削除することはできません。

正しい構文はDELETE FROM [TABLE] WHERE [FILTERS]

関連する問題