2017-02-17 3 views
-3

Error Code : 1 (SQLITE_ERROR) Caused By : SQL(query) error or missing database. (near "=": syntax error (code 1): , while compiling: DELETE FROM notesWHEREid='1')SQL(クエリ)不足データベースエラーを解決するにはどうすればよいですか?

これは私が取得していますエラーです:

これは、このエラーの原因である私のデータベースハンドラの一部です:

public void deleteNote(String id) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    String deleteQuery="DELETE FROM " + DatabaseValues.TABLE_NOTES + "WHERE" + DatabaseValues.NOTES_ID + "= '" + id + "'"; 

    db.execSQL(deleteQuery); 
    db.close(); 
} 
+2

実行する直前のクエリは何ですか?あなたのコードをデバッグする方法を学んでください。あなたはそれをする方法を知らずに遠くには行きません。 –

+0

@juergend Truerの言葉は話されていません!!! :) –

+0

同様にパラメータを使用して調べます。 – Bugs

答えて

1

はあなたの次のステートメントを変更します。

String deleteQuery="DELETE FROM " + DatabaseValues.TABLE_NOTES + "WHERE" + DatabaseValues.NOTES_ID + "= '" + id + "'"; 

~

String deleteQuery= "DELETE FROM " + DatabaseValues.TABLE_NOTES + " WHERE " + DatabaseValues.NOTES_ID + " = '" + id + "'"; 

実際には、テーブル名とwhere句を組み合わせています。 WHERE句の前後に空白を追加する必要があります。「Where」のようにスペースを追加する必要があります。

補間された文字列を使用して

2

あなたがC#6.0を使用している場合は、そのような愚かなエラーを回避、文字列の連結のためにはるかに簡単に命を行います

String deleteQuery= $"DELETE FROM {DatabaseValues.TABLE_NOTES} WHERE {DatabaseValues.NOTES_ID} = id"; 

:$演算子は、C#6.0で利用可能です。このようなパラメータを渡すとSQL injectionが表示される可能性があるため、how to build parameterized queriesも参照してください。

+0

@CamiloTerevinto - はい、私は知っています。だから私はパラメータ化されたクエリのリンクを入れている。 – Alexei

+0

@CamiloTerevinto - これは完全に真実ではありません。なぜなら、以前のバージョンのVisual Studio([source](http://stackoverflow.com/questions/27093908/how-to-enable-c-sharp) Visual Studio([source](http://stackoverflow.com/questions/27093908/how-to-enable-c-sharp-6-ja-japanese-in-visual-in-visual-studio-studio- 2013))を使用しなくても、 0-feature-in-visual-studio-2013))。 – Alexei

関連する問題