2015-12-11 2 views
-1

здесь мое кодирование: - DatabaseHelper.javaКак получить одну строку в соответствии с конкретным условием?

public Cursor getinnformationUser(SQLiteDatabase db) { 
    String a1="f1"; 
    Cursor cursor; 
    String[] projections = {Menu.NewMenuInfo.MENU_ID, Menu.NewMenuInfo.MENU_NAME, Menu.NewMenuInfo.MENU_PRICE}; 
    String selection = Menu.NewMenuInfo.MENU_ID + "=" + a1; 
    cursor=db.query(Menu.NewMenuInfo.TABLE_NAME,projections,selection,null,null,null,null); 
    return cursor; 
} 

Menu1.java

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.menuset1); 
    s_id = (TextView) findViewById(R.id.idSet1); 
    s_name = (TextView) findViewById(R.id.nameSet1); 
    s_drink = (TextView) findViewById(R.id.drinkSet1); 
    s_price = (TextView) findViewById(R.id.priceSet1); 
    set1 = (Button) findViewById(R.id.buttonOrderSet); 
    userDbHelper = new UserDbHelper(getApplicationContext()); 
    sqLiteDatabase = userDbHelper.getReadableDatabase(); 
    cursor = userDbHelper.getinnformationSet1(sqLiteDatabase); 
    if (cursor != null){ 
     cursor.moveToFirst(); 
      String id = cursor.getString(0); 
      String name = cursor.getString(1); 
      String drink = cursor.getString(2); 
      String price = cursor.getString(3); 
      s_id.setText(id); 
      s_name.setText(name); 
      s_drink.setText(drink); 
      s_price.setText(price); 
     } 
} 
} 

в основном я хочу, чтобы отобразить идентификатор, название, напиток, цена в соответствии с ID = "f1". пример: если id = "f1", тогда отобразите всю информацию без использования любой кнопки поиска или нажатия.

, когда я запускаю это приложение кодирования остановило

ответ

0

Вы должны передавать аргументы выбора как массив, но в строке выбора вы должны поставить отметку ?. Измените метод getinnformationUser так:

public Cursor getinnformationUser(SQLiteDatabase db) { 
    String a1="f1"; 
    Cursor cursor; 
    String[] projections = {Menu.NewMenuInfo.MENU_ID, Menu.NewMenuInfo.MENU_NAME, Menu.NewMenuInfo.MENU_PRICE}; 
    String selection = Menu.NewMenuInfo.MENU_ID + "= ?"; 
    String[] selectionArgs = new String[] {a1}; 
    cursor=db.query(Menu.NewMenuInfo.TABLE_NAME,projections,selection,selectionArgs,null,null,null,null); 
    return cursor; 
} 

Вы можете узнать больше о методе запроса here.

0

в основном ваш запрос на выборку неправильно .... его, как показано ниже

public Cursor getinnformationUser(SQLiteDatabase db) { 
    String a1="f1"; 
    Cursor cursor; 
    String[] projections = {Menu.NewMenuInfo.MENU_ID, Menu.NewMenuInfo.MENU_NAME, Menu.NewMenuInfo.MENU_PRICE}; 
    String whereclause = Menu.NewMenuInfo.MENU_ID + "= ?"; 
    String where_args[] = {a1}; 

    cursor=db.query(Menu.NewMenuInfo.TABLE_NAME,projections,whereclause,where_args,null,null,null); 
    return cursor; 
} 

будет работать отлично ...

+0

Вы ** не может ** объявить массив в Java без размера. –

+0

извините мою ошибку –

+0

его правильную проверку java doc или обратитесь к этому http://stackoverflow.com/questions/17515096/string-array-initialization-in-java –

0

Использование OrderBy. В OrderBy передать какое-либо значение для того, строки, например, если вы хотите сделать заказ по идентификатору затем передать id и добавить limit 1

т.е.
cursor=db.query(Menu.NewMenuInfo.TABLE_NAME,projections,selection,null,null,null,"id limit 1"); 

Это будет выбрать только один ряд.

Коррекция Вы можете использовать query() (ссылку предоставленную Eric B.) также для передачи в качестве параметра предела

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