Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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 如何使用2个字符串参数从sqlite数据库检索特定的字符串数据?_Android_Database_Sqlite - Fatal编程技术网

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你能编辑整个代码吗嘿,谢谢,我要读你建议的所有内容,非常感谢嘿,谢谢,我要读你建议的所有内容,非常感谢。。