Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQLITE Android中添加子查询以及“in”?_Android_Database_Sqlite - Fatal编程技术网

如何在SQLITE Android中添加子查询以及“in”?

如何在SQLITE Android中添加子查询以及“in”?,android,database,sqlite,Android,Database,Sqlite,我的问题是我必须写这个 Android中的查询,但运行时失败。 当我用静态变量运行它时,它工作并提供数据,但当我用选择参数尝试时,它失败了 到目前为止,我已经尝试过这些: 1 Cursor Cursor=myDataBase.rawQueryselect*from contacts,其中id位于select cpk from mapping,其中gpk=+'+?+'+,新字符串[]{grpName} 2 Cursor Cursor=myDataBase.queryTABLE_CONTACTS,n

我的问题是我必须写这个

Android中的查询,但运行时失败。 当我用静态变量运行它时,它工作并提供数据,但当我用选择参数尝试时,它失败了

到目前为止,我已经尝试过这些:

1 Cursor Cursor=myDataBase.rawQueryselect*from contacts,其中id位于select cpk from mapping,其中gpk=+'+?+'+,新字符串[]{grpName}

2 Cursor Cursor=myDataBase.queryTABLE_CONTACTS,null,id in,新字符串[]{从映射中选择cpk,其中gpk='+grpName+'},null,null,null

3 Cursor Cursor=myDataBase.rawQueryselect*from contacts,其中id位于select cpk from mapping where gpk=?,新字符串[]{grpName}


请帮帮我。。。提前感谢…

执行此传入where子句吗

gpk=

并在值数组中传递值 像

您可以这样做:

String query="SELECT * FROM contacts WHERE id IN (SELECT cpk FROM mapping WHERE gpk = '"+grpName+"')";
Cursor cursor = myDataBase.rawQuery(query, null);

我解决了这个问题,为变量传递了错误的值

Cursor Cursor=myDataBase.rawQueryselect*from contacts,其中id在从映射中选择cpk,其中gpk=?,新字符串[]{grpName}; 工作正常


谢谢大家的帮助

如果它有助于hanks@Raghunandan,请选中此选项,但幸运的是我的查询按预期工作。主要的挑战是在Android Sqlite查询中编写此语法以及选择参数……您的选项3是正确的。为什么会失败?例外哪个没有结果?您能通过添加完整的查询来进一步细化它吗。。。这将更有帮助…请在答案中添加一些细节。这不起作用,因为不能引用参数标记。-1这非常危险!我知道什么是sql注入,但我认为数据验证不是当前的问题,我同意传递给查询的所有数据都必须是安全的。这不起作用,因为字符串没有正确引用。@LS_dev SqlInject in Android,如果您为Android编写代码,谁将处理您的查询device@ErrorNo.2793985grpName来自哪里?如果我创建了一个名为‘’的组;从联系人中删除;-在这个应用程序中?SQL注入是对任何平台的遍历,它只与懒惰处理用户数据有关。此外,如果创建了一个名为CD的组,它将使该查询和应用程序崩溃。
new String[] {gpk_value}
String query="SELECT * FROM contacts WHERE id IN (SELECT cpk FROM mapping WHERE gpk = '"+grpName+"')";
Cursor cursor = myDataBase.rawQuery(query, null);