【发布时间】:2014-07-18 01:03:56
【问题描述】:
如您所见,我使用原始查询从数据库中获取数据
public ArrayList<GS> getSchedules()
{
try{
Cursor c1 = sdb.rawQuery("SELECT DISTINCT * FROM Schedules", null);
gs = new ArrayList<GS>();
while (c1.moveToNext())
{
GS q1 = new GS();
q1.setS_name(c1.getString(1));
q1.setP_name(c1.getString(2));
q1.setDesc(c1.getString(3));
gs.add(q1);
}
}
catch (Exception e) {
e.printStackTrace();
}
return gs;
}
此方法成功,但我想更改它以获得推荐的参数化查询方法?
对不起,如果我的问题没有显示任何研究工作,但我已经尝试过,但我迷路了。
提前谢谢..
【问题讨论】:
-
您的查询中没有参数,因此您已经有了一个带有 0 个参数的参数化表单。
-
这类查询
query(distinct, table, columns, selection, selectionArgs, groupBy, having, orderBy, limit, cancellationSignal) -
虽然没有参数,但数据库通常更有效地将 * 替换为您实际需要的列的名称。这样就不需要打包额外的东西了。
-
但是不鼓励使用
rawQuery,我们应该使用query(distinct, table, columns, selection, selectionArgs, groupBy, having, orderBy, limit, cancellationSignal)类似的东西...... -
为什么有人会推荐使用它而不是更简单、更高效且已经工作的东西?