2011-10-04 66 views
0

我在我的主应用程序中有一个查询,它显示了我的数据库的所有寄存器。Android - 执行动态查询的参数

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

因此,与微调我选择我的选项和意图,并把额外的我将变量传递给我的主体活动,所以我可以显示查询过滤。

这里是例子

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 *从Incidentes ..如果我查询槽FILTER活动,我想查询知道我选择哪个选项。有什么办法来问我的getExtra是否为null或类似的东西?感谢

回答

0

是的,你可以通过使用意向方法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); 
+0

谢谢,但我有一个问题。当我第一次把字符串selGrado = this.getIntent()。getExtras()。getString(“grado”); 我的程序不显示信息。所以,如果我没有数据的意图,因为我最近打开应用程序,并没有把过滤器,我的查询崩溃。所以我不能问如果hasExtra是空的,我不知道如何解决这个问题! –

+0

hasExtra返回布尔值(true或false)永不为null。所以你可以随时使用它。如果这返回true,那么你可以得到额外的东西,并检查它是否为空。 – Merlin

+0

感谢人!!!我问了5个论坛,只是答复正确!有用!! –