SQLite 数据库查询功能没有取代?选择参数
SQLite Database query function not replacing the ? with selection args
我的数据库中有一个 get 函数 class 可以从数据库中获取特定行。
public Line getLine(String date){
SQLiteDatabase sql = db.getWritableDatabase();
Cursor cursor;
Line line = new Line();
try{
cursor = sql.query(Db_name,null,DATE_COL+"=?",new String[] {date},null,null,null);
line = new Line(cursor.getInt(0),cursor.getString(1),cursor.getString(2),cursor.getString(3).equals("YES"));
}
catch (Exception e){
e.getCause();
}
finally {
if (sql.isOpen())
sql.close();
}
return line;
}`
但是当我 运行 它时,游标没有得到正确的查询,调试时它看起来像这样:
SQLiteQuery: SELECT * FROM a28a9a2015 WHERE date_col=?
所以它保留了 ?并没有把日期字符串放在那里..
我试过类似 -
cursor = sql.query(Db_name,null,DATE_COL+"="+date,null,null,null,null);
或
cursor = sql.query(Db_name,null,DATE_COL+"= '"+date+"',null,null,null,null);
结果相同。
有什么指点吗?
您需要将光标移动到第一个位置
cursor = sql.query(Db_name,null,DATE_COL+"=?",new String[] {date},null,null,null);
if (cursor.moveToFirst()) {
// TODO
}
否则你的光标在位置-1,无法获取任何数据。象征 ”?”正在将内部请求替换为 sqlite,因此在光标中您会看到“?”。
我的数据库中有一个 get 函数 class 可以从数据库中获取特定行。
public Line getLine(String date){
SQLiteDatabase sql = db.getWritableDatabase();
Cursor cursor;
Line line = new Line();
try{
cursor = sql.query(Db_name,null,DATE_COL+"=?",new String[] {date},null,null,null);
line = new Line(cursor.getInt(0),cursor.getString(1),cursor.getString(2),cursor.getString(3).equals("YES"));
}
catch (Exception e){
e.getCause();
}
finally {
if (sql.isOpen())
sql.close();
}
return line;
}`
但是当我 运行 它时,游标没有得到正确的查询,调试时它看起来像这样:
SQLiteQuery: SELECT * FROM a28a9a2015 WHERE date_col=?
所以它保留了 ?并没有把日期字符串放在那里.. 我试过类似 -
cursor = sql.query(Db_name,null,DATE_COL+"="+date,null,null,null,null);
或
cursor = sql.query(Db_name,null,DATE_COL+"= '"+date+"',null,null,null,null);
结果相同。
有什么指点吗?
您需要将光标移动到第一个位置
cursor = sql.query(Db_name,null,DATE_COL+"=?",new String[] {date},null,null,null);
if (cursor.moveToFirst()) {
// TODO
}
否则你的光标在位置-1,无法获取任何数据。象征 ”?”正在将内部请求替换为 sqlite,因此在光标中您会看到“?”。