Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLiteException没有这样的列:android中的kevin错误_Android_Sqlite - Fatal编程技术网

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为您解析字符串