查询SQLite表以返回具有特定ID的行

时间:2016-05-02 14:19:59

标签: android sqlite

这个方法假设采用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;        
}

2 个答案:

答案 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});