我试图在android中为数据库中的位置选择一列,以访问它返回的值。我得到以下错误 Caused by: android.database.sqlite.SQLiteException: near ".": syntax error (code 1 SQLITE_ERROR): , while compiling: SELECT LAST_POSITION FROM POSITION_TABLE WHERE 23333.mkv =? in db.rawQuery()
. 我想根据项目id选择col_last_position列。我应该如何更改查询顺序以从readposition()获得正确的值?
public class DBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "PositionManager.db";
public static final String TABLE_NAME = "POSITION_TABLE";
private static final String ITEM_ID= "item_id";
private static final String COL_LAST_POSITION = "LAST_POSITION";
public DBHelper(@Nullable Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String create_table = "CREATE TABLE " + TABLE_NAME + "( "
+ "ID INTEGER PRIMARY KEY ,"
+ COL_LAST_POSITION + " TEXT NOT NULL, " +
ITEM_ID+ " TEXT NOT NULL)";
db.execSQL(create_table);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop Table if exists " + TABLE_NAME);
onCreate(db);
}
public boolean insertPosition(String item_id,int last_position){
SQLiteDatabase database = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(ITEM_ID,item_id);
contentValues.put(COL_LAST_POSITION,last_position);
long result = database.insert(TABLE_NAME,null,contentValues);
if (result == -1){
return false;
} else {
return true;
}
}
public boolean updatePosition(String item_id,int last_position){
SQLiteDatabase database = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(ITEM_ID,item_id);
contentValues.put(COL_LAST_POSITION,last_position);
long result = database.update(TABLE_NAME , contentValues , ITEM_ID+ " =? " ,
new String[]{item_id});
if (result == -1){
return false;
} else {
return true;
}
}
public int readPosition(String item_id,int last_position)
{
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT " + COL_LAST_POSITION + " FROM "
+TABLE_NAME+" WHERE " + item_id+" =? " , new String[] {String.valueOf(item_id)});
if(cursor.moveToFirst()){
return cursor.getInt(cursor.getColumnIndex(COL_LAST_POSITION));
} else {
return 0;
}
}
}
1条答案
按热度按时间ubof19bj1#
你犯了一个小错误。代替
item_id
具有ITEM_ID
在您的查询中。