Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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
Android 如何在SQLite中创建where子句查询?_Android_Sql_Sqlite - Fatal编程技术网

Android 如何在SQLite中创建where子句查询?

Android 如何在SQLite中创建where子句查询?,android,sql,sqlite,Android,Sql,Sqlite,我应该如何调用这个以字符串作为参数的方法,或者我应该如何执行这个查询 代码: 公共类活动{ @凌驾 创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_); Intent=getIntent(); ArrayList-SamsungList=getSamsungInfo(空); ListAdapter=new SimpleAdapte

我应该如何调用这个以字符串作为参数的方法,或者我应该如何执行这个查询

代码:

公共类活动{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_);
Intent=getIntent();
ArrayList-SamsungList=getSamsungInfo(空);
ListAdapter=new SimpleAdapter(Samsung.this,SamsungList,R.layout.Samsung_list,新字符串[]{Sqlite.COLUMN_MNAME,Sqlite.COLUMN_MMODEL,
Sqlite.COLUMN\u MPRICE,Sqlite.COLUMN\u MCAMERA},新int[]{R.id.nameofsamsung,R.id.modelofsamsung,R.id.priceofsamsung,R.id.cameraofsamsung});
setListAdapter(适配器);
}  
公共数组列表getSamsungInfo(字符串samsung){
ArrayList词表;
wordList=newarraylist();
Sqlite sqlll=新Sqlite(此);
SQLiteDatabase=sqlll.getReadableDatabase();
String selectQuery=“SELECT*FROM mobile WHERE mname=“+samsung+””;
Cursor=database.rawQuery(selectQuery,null);
if(cursor.moveToFirst()){
做{
HashMap=newHashMap();
map.put(Sqlite.COLUMN_MNAME,cursor.getString(0));
map.put(Sqlite.COLUMN_MMODEL,cursor.getString(1));
map.put(Sqlite.COLUMN_-MPRICE,cursor.getString(2));
map.put(Sqlite.COLUMN_MCAMERA,cursor.getString(3));
添加(地图);
}while(cursor.moveToNext());
}                  
返回词表;
}  
}
没有名为“null”的列给了我一个错误。那么调用方法时应该传递什么呢。它没有使用samsung,samsung是mobile的mname列中插入的值。

语法错误:

String selectQuery = "SELECT * FROM mobile WHERE mname="+samsung+"'";
它应该是(正确的撇号环绕字符串值):

或者更好(这里我使用一个变量)

其中,mobileName是一个传递的字符串,其中包含(例如)“samsung”

或者,甚至更好(有界论证)

其次是:

Cursor cursor = database.rawQuery(selectQuery, new String[] {mobileName});
其中,mobileName是一个传递的字符串,其中包含(例如)“samsung”-与前面相同

此处的
null
被字符串参数替换

您需要在SQL中引用您的文本:

String selectQuery = "SELECT * FROM mobile WHERE mname='"+samsung+"'";
尽管最好使用绑定参数,如下所示:

String selectQuery = "SELECT * FROM mobile WHERE mname=?";
Cursor cursor = database.rawQuery(selectQuery, new String[] { samsung });

另外,将实际参数传递给
getSamsungInfo()
而不是
null

我已经尝试过了,但是在调用getSamsungInfo时,我传递了null,因此它再次显示此错误。这是不允许的。。要求我创建区域设置变量“samsung”。如果我要创建,它将被空化。这是一个方法参数,请参见
getSamsungInfo(String samsung)
-您需要在调用方法中使用
getSamsungInfo(null)
更改调用该方法的部分:而不是getSamsungInfo(null),我该怎么办??正如你上面所说的,它不带走任何其他东西。。如果我正在执行getSamsungInfo(),那么它将在此行中显示错误:Cursor Cursor=database.rawQuery(selectQuery,new String[]{samsung});错误:创建局部变量。
String selectQuery = "SELECT * FROM mobile WHERE mname = ?";
Cursor cursor = database.rawQuery(selectQuery, new String[] {mobileName});
String selectQuery = "SELECT * FROM mobile WHERE mname='"+samsung+"'";
String selectQuery = "SELECT * FROM mobile WHERE mname=?";
Cursor cursor = database.rawQuery(selectQuery, new String[] { samsung });