SQLiteException没有这样的列:android中的kevin错误
我试图通过以下方法删除数据库中的一行:SQLiteException没有这样的列:android中的kevin错误,android,sqlite,Android,Sqlite,我试图通过以下方法删除数据库中的一行: public boolean deleteNote(long row,String name){ int doneDelete = 0; doneDelete = mDb.delete(SQLITE_TABLE,KEY_ROWID + " = " + row + " and " + KEY_TITLE + " = " + name, null) ; Log.w(TAG, Integer.toStri
public boolean deleteNote(long row,String name){
int doneDelete = 0;
doneDelete = mDb.delete(SQLITE_TABLE,KEY_ROWID + " = " + row + " and " + KEY_TITLE + " = " + name, null) ;
Log.w(TAG, Integer.toString(doneDelete));
return doneDelete > 0;
}
我的表架构是:
private static final String DATABASE_CREATE =
"CREATE TABLE if not exists " + SQLITE_TABLE + " (" +
KEY_ROWID + " integer PRIMARY KEY autoincrement," +
KEY_TITLE + "," +
KEY_CONTENT + "," +
KEY_TIME + "," +
" UNIQUE (" + KEY_TITLE +"));";
这些变量被指定为:
public static final String KEY_ROWID = "_id";
public static final String KEY_TITLE = "title";
public static final String KEY_CONTENT = "content";
public static final String KEY_TIME = "time";
private static final String DATABASE_NAME = "Notes Database";
private static final String SQLITE_TABLE = "Notes";
private static final int DATABASE_VERSION = 1;
我在单击按钮时使用此方法:
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "deleting: " + titleStr, Toast.LENGTH_SHORT).show();
dbHelper.deleteNote(position, titleStr);
Intent i = new Intent(DisplayNote.this, MainActivity.class);
dbHelper.close();
}
单击按钮时,用户返回到主活动,注释从列表中删除,但当我按下按钮时,出现以下错误:
android.database.sqlite.SQLiteException: no such column: kevin (code 1): , while compiling: DELETE FROM Notes WHERE _id = 4 and title = kevin
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1494)
at com.kevguev.notesapp.NotesDBAdapter.deleteNote(NotesDBAdapter.java:95)
at com.kevguev.notesapp.DisplayNote$1.onClick(DisplayNote.java:51)
android.database.sqlite.SQLiteException:没有这样的列:kevin(代码1):,编译时:从注释中删除,其中_id=4,title=kevin
位于android.database.sqlite.SQLiteConnection.nativePrepareStatement(本机方法)
位于android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
位于android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
位于android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
位于android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58)
位于android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:31)
位于android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1494)
在com.kevguev.notesapp.NotesDBAdapter.deleteNote上(NotesDBAdapter.java:95)
在com.kevguev.notesapp.DisplayNote$1.onClick上(DisplayNote.java:51)
“Kevin”是一个字符串
因此,它必须用撇号(“)括起来
因此,您的指示应该是:
doneDelete = mDb.delete(SQLITE_TABLE,KEY_ROWID + " = " + row + " and " + KEY_TITLE + " = '" + name + "'", null);
或者,更好的方法是使用绑定参数:
doneDelete = mDb.delete(SQLITE_TABLE,KEY_ROWID + " = " + row + " and " + KEY_TITLE + " = ?", new String[name]);
在本例中,Android为您解析字符串