这个方法假设采用long ID
并返回与给定id匹配的行,但我的查询出错了,我无法弄明白。有任何想法吗? (包含id值的列称为" ID")
public Cursor getAllData (long ID) {
SQLiteDatabase db = this.getWritableDatabase();
long thisID = ID ;
Cursor result = db.rawQuery("select * from WHERE ID = " + thisID + DataTableName,null);
return result;
}
答案 0 :(得分:1)
您的SQL格式错误。正确的格式为select <columns> from <table> where <condition>
。您将获得类似select * from where <condition><table>
的内容。
另一条建议 - 不要使用字符串连接来构建SQL查询。这是一个非常糟糕的做法,并为SQL注入攻击打开了你的应用程序。使用参数化版本的查询方法来防止这种情况。
答案 1 :(得分:0)
你应该按如下方式进行:
Cursor result = db.rawQuery("select * from " + DataTableName + " WHERE ID = "+thisID,null);
@Danail Alexiev想对你说的话我猜是这样的:
Cursor result = db.rawQuery("select * from " + DataTableName + " WHERE ID = ?",new long[]{thisID});