Android 如何使用2个字符串参数从sqlite数据库检索特定的字符串数据?
这是我用来制作方法的代码Android 如何使用2个字符串参数从sqlite数据库检索特定的字符串数据?,android,database,sqlite,Android,Database,Sqlite,这是我用来制作方法的代码 String item = item1.getText().toString(); item = item.toLowerCase(); String date = getDate(); edited = new Datahelper(this); edited.open(); String returnedprice = edited.getprice(item,date); String returneddetail = edited.getdetail(item,
String item = item1.getText().toString();
item = item.toLowerCase();
String date = getDate();
edited = new Datahelper(this);
edited.open();
String returnedprice = edited.getprice(item,date);
String returneddetail = edited.getdetail(item,date);
edited.close();
price.setText(returnedprice);
details.setText(returneddetail);
这是我用来获取该字符串的方法代码,但我不知道如何使用第二个日期字符串,因此返回的字符串价格来自包含该项目和该日期的行。。请告诉我怎么做的密码
public String getprice(String item ,String date) {
// TODO Auto-generated method stub
String[] columns = new String[]{KEY_ROWID,
KEY_CATEGORY,KEY_DATE,KEY_PRICE,KEY_DETAILS};
Cursor v =ourDatabase.query(DATABASE_TABLE, columns, KEY_CATEGORY + " ='" + item
+"'",null,null, null, null);
if(v!=null){
String price = v.getString(3);
return price;
}
return null;
}
public String getdetail(String item,String date) {
// TODO Auto-generated method stub
String[] columns = new String[]{KEY_ROWID,
KEY_CATEGORY,KEY_DATE,KEY_PRICE,KEY_DETAILS};
Cursor v =ourDatabase.query(DATABASE_TABLE, columns, KEY_CATEGORY + " ='" + item +
"'",null,null, null, null);
if(v!=null){
String detail = v.getString(4);
return detail;
}
return null;
}
因此,您可能希望在select查询中使用两个参数,以便: 您可以使用两种方法:
- rawQuery()
- 查询()
?
。
select语句中的每个占位符都将被selectionArgs中的值替换(以相同的顺序,第一个占位符将被数组中的第一个值替换),它是上面声明的字符串数组
第二:
rawQuery()方法更容易理解,所以我从它的。Query()方法更复杂,并且有更多的参数。所以
- 列:表示将选择的列数组
- 选择:换句话说是where子句,所以如果您的选择是
表示KEY\u COL+“=?”
“其中”+KEY\u COL+“=?”
- SelectionAgs:每个占位符都将替换为该占位符中的值 数组
- groupBy:它是多行(分组)功能李>
- having:此子句始终与group by子句一起使用
- orderBy:子句用于根据一个或多个行对行进行排序 纵队
String[] columns = {KEY_COL1, KEY_COL2};
String whereClause = KEY_CATEGORY " = ? and " + KEY_DATE + " = ?";
String[] whereArgs = {"data1", "data2"};
Cursor c = db.query("Table", columns, whereClause, whereArgs, null, null, null);
所以where子句包含两个参数,每个参数都有占位符。因此,第一个占位符将被替换为“data1”,第二个占位符将被替换为“data2”
执行查询时,查询将如下所示:
SELECT col1, col2 FROM Table WHERE category = 'data1' AND date = 'data2'
注意:我建议您看看
另外,我建议您使用占位符,它可以提供更安全、更可读、更清晰的解决方案。因此,您可能希望在select查询中使用两个参数,以便: 您可以使用两种方法:
- rawQuery()
- 查询()
?
。
select语句中的每个占位符都将被selectionArgs中的值替换(以相同的顺序,第一个占位符将被数组中的第一个值替换),它是上面声明的字符串数组
第二:
rawQuery()方法更容易理解,所以我从它的。Query()方法更复杂,并且有更多的参数。所以
- 列:表示将选择的列数组
- 选择:换句话说是where子句,所以如果您的选择是
表示KEY\u COL+“=?”
“其中”+KEY\u COL+“=?”
- SelectionAgs:每个占位符都将替换为该占位符中的值 数组
- groupBy:它是多行(分组)功能李>
- having:此子句始终与group by子句一起使用
- orderBy:子句用于根据一个或多个行对行进行排序 纵队
String[] columns = {KEY_COL1, KEY_COL2};
String whereClause = KEY_CATEGORY " = ? and " + KEY_DATE + " = ?";
String[] whereArgs = {"data1", "data2"};
Cursor c = db.query("Table", columns, whereClause, whereArgs, null, null, null);
所以where子句包含两个参数,每个参数都有占位符。因此,第一个占位符将被替换为“data1”,第二个占位符将被替换为“data2”
执行查询时,查询将如下所示:
SELECT col1, col2 FROM Table WHERE category = 'data1' AND date = 'data2'
注意:我建议您看看
另外,我建议您使用占位符,它可以提供更安全、更可读、更清晰的解决方案。您应该阅读任何SQL教程,以了解
WHERE
子句是什么,以及如何编写它
在Android中,selection
参数是WHERE
子句中的表达式。
您的查询可以这样写:
c = db.query(DATABASE_TABLE, columns,
KEY_CATEGORY + " = ? AND " + KEY_DATE + " = ?",
new String[] { item, date },
null, null, null);
您应该阅读任何SQL教程,了解
WHERE
子句是什么,以及如何编写它
在Android中,selection
参数是WHERE
子句中的表达式。
您的查询可以这样写:
c = db.query(DATABASE_TABLE, columns,
KEY_CATEGORY + " = ? AND " + KEY_DATE + " = ?",
new String[] { item, date },
null, null, null);
您想在where子句中使用两个参数进行select查询吗?嘿,我对android非常陌生。。where子句在哪里只有selection,selectionArgs,groupBy,having,orderBy你能编辑整个代码吗..你想在where子句中用两个参数进行select查询吗?嘿,我对android很陌生。。这里是where子句这里只有selection,selectionArgs,groupBy,having,orderBy你能编辑整个代码吗嘿,谢谢,我要读你建议的所有内容,非常感谢嘿,谢谢,我要读你建议的所有内容,非常感谢。。