2015-12-11 26 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,名稱,飲料,價格。 例如:if 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文檔或引用到此http://stackoverflow.com/questions/17515096/string-array-initialization-in-java –

0

使用排序依據。在排序依據,如果你想通過ID訂購然後通過id並添加limit 1

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

這將選擇只有一排傳遞任何值,以便例如行。

糾錯 可以使用query()(由Eric B.提供的鏈接)也傳遞極限參數