2013-03-10 76 views
0

這裏是我使用該字符串如何使用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

回答

0

列索引沒有任何共同之處與返回集:

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

0

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