2016-01-14 4 views
-1

Я новичок в Java Coding, и это мой первый раз с использованием SQLiteOpenHelper в Android. У меня проблема с извлечением фруктов из таблицы, используя цвета, введенные в MainActivity.(Отредактировано) Извлечение в SQLiteOpenHelper для Android

В приложении есть 2 поля. 1. Цвета 2. Фрукты

Например, если пользователь вводит: цвета - красный & фрукты - клубника

Вертушка покажет клубнику. Но в то же время, счетчик должен включать фрукты, которые были введены ранее на основе цвета: красный.

Ниже приведены фрагменты моих кодов. Пожалуйста, предложите мне, что делать. Спасибо.

MainActivity

btnAdd.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      String fruits= inputFruits.getText().toString(); 
      String colours= inputColours.getText().toString(); 

      if (fruits.trim().length() > 0) { 
       // database handler 
       DatabaseHandler db = new DatabaseHandler(
         getApplicationContext()); 


       // inserting new label into database 
       db.insertLabel(fruits, colours); 

       // making input filed text to blank 
       inputFruits.setText(""); 


       // Hiding the keyboard 
       InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.hideSoftInputFromWindow(inputLabel.getWindowToken(), 0); 

       // loading spinner with newly added data 
       loadSpinnerData(); 
      } else { 
       Toast.makeText(getApplicationContext(), "Please enter label name", 
         Toast.LENGTH_SHORT).show(); 
      } 

     } 
    }); 

SQLiteOpenHelper

public void insertLabel(String fruits, String colours){ 
    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put(KEY_FRUITS, fruits); 
    values.put(KEY_COLOURS, colours); 

    // Inserting Row 
    db.insert(TABLE_LABELS, null, values); 
    db.close(); // Closing database connection 
} 


public List<String> getAllLabels(){ 
    List<String> labels = new ArrayList<String>(); 

    // Select All Query 
    String selectQuery = "SELECT" + KEY_FRUITS + "FROM" + TABLE_LABELS + " WHERE COLOURS = " + KEY_COLOURS; 

    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      labels.add(cursor.getString(1)); 
     } while (cursor.moveToNext()); 
    } 

ответ

0

Попробуйте добавить ";" в конце предложения.

String selectQuery = "SELECT" + KEY_FRUITS + "FROM" + TABLE_LABELS + " WHERE COLOURS = " + KEY_COLOURS + ";";

+0

Неа, он не работал.): – redblackwhite

+0

';' требуется по стандарту SQL, но необязательно в SQLite. –

+0

привет, я отредактировал вопрос. пожалуйста, взгляните и посоветуйте мне, что делать. Спасибо. – redblackwhite

1

Вам нужно место после того, как SELECT, и до & после FROM. KEY_COLOURS должен быть в одинарной кавычке, если это Varchar (что, я думаю, это так).

String selectQuery = "SELECT " + KEY_FRUITS + " FROM " + TABLE_LABELS + " WHERE COLOURS = '" + KEY_COLOURS + "'"; 

Если вы хотите, чтобы получить строки, соответствующие либо фрукты ярлык или цвет, или оба, запрос может быть как:

String selectQuery = "SELECT " + KEY_FRUITS + " FROM " + TABLE_LABELS + " WHERE COLOURS = '" + KEY_COLOURS + "' or FRUITS='" + KEY_FRUITS + "'"; 
+0

привет @birraa, я отредактировал вопрос. пожалуйста, взгляните и посоветуйте мне, что делать. Спасибо. – redblackwhite

0

попробовать этот

Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME +" WHERE "+ COLOURS +" = ?", new String[]{KEY_COLOURS}); 
+0

привет, я отредактировал вопрос. пожалуйста, взгляните и посоветуйте мне, что делать. Спасибо – redblackwhite

+0

Пожалуйста, добавьте еще несколько подробностей к вашему ответу! так что вы можете читать и понимать, что вы предлагаете! – Hamad

Смежные вопросы