这是我用来制作方法的代码
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;
}
答案 0 :(得分:4)
所以你可能想在select查询中使用两个参数:
您可以使用两种方法:
我将为您提供这两种情况的基本示例。
String query = "select * from Table where someColumn = ? and someDateColumn = ?";
Cursor c = db.rawQuery(query, new String[] {textValue, dateValue});
所以我建议您使用名为占位符的 ?
。
select语句中的每个占位符都将被来自selectionArgs的值替换(以相同的顺序,因此第一个占位符将被数组中的第一个值替换等) - 它是上面声明的String数组。
rawQuery()方法更容易理解,所以我从它开始。 Query()方法更复杂,并且有更多的参数。所以
KEY_COL + " = ?"
表示"where " + KEY_COL + " = ?"
此外,方法有更多参数,但现在您不需要关心它们。如果你愿意,谷歌将成为你的朋友。
让我们回到解释和示例:
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);
因此whereClause包含两个带有占位符的参数。因此,第一个占位符将替换为“data1”,第二个占位符将替换为“data2”。
执行查询时,查询将如下所示:
SELECT col1, col2 FROM Table WHERE category = 'data1' AND date = 'data2'
注意:我建议您查看Android SQLite Database and ContentProvider - Tutorial
。
另外,我建议您使用占位符,以提供更安全,更易读和更清晰的解决方案。
答案 1 :(得分:0)
您应该阅读任何SQL教程,以找出它的WHERE
子句以及如何编写它。
在Android中,selection
参数是WHERE
子句中的表达式。
您的查询可以这样写:
c = db.query(DATABASE_TABLE, columns,
KEY_CATEGORY + " = ? AND " + KEY_DATE + " = ?",
new String[] { item, date },
null, null, null);