2013-03-10 2 views
0

вот мой код для использования этой строкикак вернуть строку из sqlite с помощью 2 строкового аргумента?

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

мое приложение получает сбой при использовании этого кода ,, я не знаю WAHT неправильно в коде, если кто должен я могу отправить весь код пожалуйста помочь мне

+0

Можете ли вы добавить ловушку? – fedepaol

+0

@fedepaol Я очень новичок в android, я не знаю, где он находится, скажите мне, как его получить. – scripter

+0

Это журнал, который вы получаете из вида adb в eclipse – fedepaol

ответ

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

+0

проверить отредактированный ответ – mihail

+0

, что c.getColumnIndex (KEY_PRICE) не имеет ничего общего с этим утверждением r, имеющим значение индекса 3 .. @mihail, но спасибо за ур усилие .. на самом деле я пропустил c .moveToFirst(); in if заявление .. – scripter

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; 
} 
Смежные вопросы