Android-用于执行动态查询的参数

Android-用于执行动态查询的参数,android,sqlite,dynamic,parameters,Android,Sqlite,Dynamic,Parameters,我在我的主应用程序中有一个查询,它显示了我数据库的所有寄存器 我的应用程序中有一个进入另一个活动的按钮。在那里,我可以过滤我的查询,例如,我有一个图书表,我只想从一个作者那里得到一本特定价格的书 因此,通过微调器,我选择了我的选项,并有意将这些变量传递给我的主体活动,以便显示过滤后的查询 这是一个例子 String selGrado = this.getIntent().getExtras().getString("grado"); String query = "Select * FR

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

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

因此,通过微调器,我选择了我的选项,并有意将这些变量传递给我的主体活动,以便显示过滤后的查询

这是一个例子

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 incidents。。如果我通过过滤器活动查询,我希望查询知道我选择了哪个选项。有没有办法询问我收到的getExtra是null还是类似的东西?谢谢

是的,您可以使用intent方法hasExtra检查额外内容:

this.getIntent().hasExtra("grado");
但您也可以检查selGrado是否为null

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);

谢谢,但我有个问题。当我第一次放入字符串selGrado=this.getIntent.getExtras.getStringgrado;我的程序不显示信息。因此,如果因为我最近打开了应用程序并且没有放置过滤器,所以我没有数据,那么我的查询就会崩溃。所以我不能问hasExtra是否为空,我不知道如何解决这个问题!hasExtra返回布尔值true或false,从不为null。所以你可以随时使用它。如果返回true,那么您可以获得额外的值并检查它是否为null。