有两段代码,我认为它们是相似的,但是一个给了我一个错误,一个没有,所以我有几个问题要问
究竟什么是“where”,“whereval”? 以下代码给出了错误
String where = android.provider.MediaStore.Audio.Media.ALBUM
+ "="+img.get(position).Album;//here is the difference
Cursor cursor = managedQuery(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, columns,
where, null , orderBy);//whereval is null here
以下代码不会给我任何错误
String where = android.provider.MediaStore.Audio.Media.ALBUM
+ "=?";here is the difference
String whereVal[] = {img.get(position).Album};here is the difference
Cursor cursor = managedQuery(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, columns,
where, whereVal , orderBy);//i have included whereVal
请解释一下这两段代码的区别??
另外我如何在sqlite中使用两个条件??
答案 0 :(得分:0)
在SQL中,引用了字符串文字'like this'
。如果在没有引号的SQL中插入字符串文字,则可能会出现SQL语法错误。它与Java中的相同,其中没有引号的"any string"
不太可能是有效的Java代码,但它作为字符串文字有效。
?
是文字的占位符。使用占位符编译SQL,并将文字值绑定到已编译的语句。可以将其视为编程语言中的变量。变量的值来自绑定参数。在Android Java sqlite包装器中,绑定参数在字符串数组中提供。
进一步阅读:http://www.sqlite.org/lang_expr.html#varparam - 尽管Android包装器代码在sqlite C API之上添加了一些漏洞抽象。
假设我必须使用code1来实现我从代码2获得的结果。应该是什么语法?
使用'...'
引用字符串文字:
String where = android.provider.MediaStore.Audio.Media.ALBUM
+ "='"+img.get(position).Album+"'";
基于评论,您需要一个联合表达式。只需在子表达式之间添加AND
,例如
String where = "foo='bar' AND baz='xyzzy'";