如何使用2字符串参数从sqlite返回字符串?

问题描述:

这里是我使用该字符串如何使用2字符串参数从sqlite返回字符串?

String item = item1.getText().toString(); 
     item = item.toLowerCase(); 
     String date = getDate(); 
     Datahelper 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); 

代码,这是我在sqlite的

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}; 

     String whereClause = KEY_CATEGORY + " = ? and " + KEY_DATE + " = ?"; 
     String[] whereArgs = {item,date}; 

     Cursor c = ourDatabase.query("DATABASE_TABLE", columns, whereClause, whereArgs, null, null, null); 
      if(c!=null){ 
       String price = c.getString(c.getColumnIndex(KEY_PRICE)); 
      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}; 

     String whereClause = KEY_CATEGORY + " = ? and " + KEY_DATE + " = ?"; 
     String[] whereArgs = {item, date}; 

     Cursor c = ourDatabase.query("DATABASE_TABLE", columns, whereClause, whereArgs, null, null, null); 
      if(c!=null){ 
        String detail = c.getString(c.getColumnIndex(KEY_DETAILS)); 
       return detail; 
       } 

     return null; 
    } 

方法我的应用程序被使用此代码时崩溃,,我不知道啥子是错的代码,如果任何人都需要我可以张贴整个代码请帮我

+0

你可以添加logcat吗? – fedepaol 2013-03-10 19:28:21

+0

@fedepaol我在Android的非常新,我不知道它在哪里居住,,告诉我怎么弄.. – scripter 2013-03-10 19:32:49

+0

这是你从亚行获得视图在Eclipse – fedepaol 2013-03-10 19:33:17

列索引没有任何共同之处与返回集:

String price = c.getString(c.getColumnIndex(KEY_PRICE)); 

c你只有5列(0〜4)(String[] columns = new String[]{KEY_ROWID, KEY_CATEGORY,KEY_DATE,KEY_PRICE,KEY_DETAILS};)和c.getColumnIndex(KEY_PRICE)返回这可能高于4

,而不是

String price = c.getString(c.getColumnIndex(KEY_PRICE)); 

表中的实际索引尝试

String price = c.getString(3); 
+0

您可以编辑代码 – scripter 2013-03-10 19:42:38

+0

检查我的编辑答案 – mihail 2013-03-10 20:46:20

+0

是c.getColumnIndex(KEY_PRICE)无关,与这两个声明,R 3 .. @mihail但感谢乌拉圭回合的努力具有相同的索引值..其实我已经错过了C^.moveToFirst();在if语句中.. – scripter 2013-03-10 21:22:11

的corect代码 -

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}; 

    String whereClause = KEY_CATEGORY + " = ? and " + KEY_DATE + " = ?"; 
    String[] whereArgs = {item,date}; 

    Cursor c = ourDatabase.query("DATABASE_TABLE", columns, whereClause, whereArgs, null, null, null); 
     if(c!=null){ 
      c.moveToFirst(); 
      String price = c.getString(c.getColumnIndex(KEY_PRICE)); 
     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}; 

    String whereClause = KEY_CATEGORY + " = ? and " + KEY_DATE + " = ?"; 
    String[] whereArgs = {item, date}; 

    Cursor c = ourDatabase.query("DATABASE_TABLE", columns, whereClause, whereArgs, null, null, null); 
     if(c!=null){ 
    c.moveToFirst(); 
    String detail = c.getString(c.getColumnIndex(KEY_DETAILS)); 
      return detail; 
      } 

    return null; 
}