0

これがその文字列を使用するための私のコードです

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

このコードを使用すると、アプリがクラッシュします。誰かが必要な場合は、コードが間違っているかわかりません。コード全体を投稿してください。助けてください

4

2 に答える 2

0

正しいコードは -

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;
}
于 2013-03-10T21:26:07.900 に答える
0

列インデックスは、返されたセットと共通点がありません:

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

では、c5 つの列 (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);
于 2013-03-10T19:34:31.423 に答える