Android - 执行动态查询的参数

时间:2011-10-04 21:15:55

标签: android sqlite dynamic parameters

我的主应用程序中有一个查询,它显示了我数据库的所有寄存器。

我的应用程序中有一个按钮可以进入另一个活动。在那里,我可以过滤我的查询(例如,我有一个书桌,我只想要一个作者和特定价格的书籍)

因此,使用微调器,我选择我的选项并使用意图并将额外的i传递给我的主要活动,这样我就可以显示已过滤的查询。

以下是示例

String selGrado =  this.getIntent().getExtras().getString("grado");


 String query = "Select * FROM Incidentes WHERE 1=1";

   if () query+= " AND codGr='"+selGrado+"'";



     Cursor d = db2.rawQuery(query,null);

所以,我希望我的查询使用参数selGrado执行,我填写了我的“过滤器”活动。我应该放哪个条件?因为当应用程序启动时,我想显示所有寄存器,所以避免过滤器没有问题,我想只执行Select * from Incidentes ..如果我通过FILTER活动查询,我希望查询知道我选择了哪个选项。有没有办法问我收到的getExtra是否为null或类似的东西?感谢

1 个答案:

答案 0 :(得分:0)

是的,您可以使用intent方法hasExtra:

来检查额外内容
this.getIntent().hasExtra("grado");

但你也可以查看selGrado是否为空

if(selGrado!=null)

更好的方法是使用常规查询而不是rawquery

String selection = null;
String[] selectionArgs = null;

if(getIntent().hasExtra("grado")) 
{
    selection = "codGr=?";
    selectionArgs = new String[]{getIntent().getStringExtra("grado")};
}

Cursor c = db2.query("Incidentes",null,selection, selectionargs, null);