2012-05-15 102 views
70

我想使用select查詢從表中檢索數據。我發現,rawQuery(query, selectionArgs)方法的SQLiteDatabase類檢索數據。但我不知道如何將queryselectionArgs傳遞給rawQuery方法? rawQuery的rawQuery(query,selectionArgs)

+0

[Android開發者網站(http://developer.android.com/reference/android/database /sqlite/SQLiteDatabase.html#rawQuery%28java.lang.String,%20java.lang.String[]%29)Android開發人員是所有這些小型查詢的最佳來源,是所有這些小型查詢的最佳來源 – Tarun

回答

184
rawQuery("SELECT id, name FROM people WHERE name = ? AND id = ?", new String[] {"David", "2"}); 

您傳遞數目相等元素的字符串數組,你有「?」

+0

Thx,應該更喜歡這個 –

+1

'rawQuery(「SELECT id,name FROM people WHERE?=?」,new String [] {「column_name」,「David」});',這是一個validQuery嗎? – theapache64

+3

@ theapache64它不是一個有效的查詢。 '?'僅適用於值。 – BMB

8

一個例子 - db.rawQuery("select * from table where column = ?",new String[]{"data"});

+0

什麼是新的串[] { 「數據」}?你能否給出上述說明的解釋。提前致謝。 –

+0

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#rawQuery%28java.lang.String,%20java.lang.String[]%29 – Tarun

1

看下面的代碼它可以幫助你。

String q = "SELECT * FROM customer"; 
Cursor mCursor = mDb.rawQuery(q, null); 

String q = "SELECT * FROM customer WHERE _id = " + customerDbId ; 
Cursor mCursor = mDb.rawQuery(q, null); 
+4

爲什麼這是最新的投票?這並沒有說明如何正確使用'rawQuery'提供的功能。它的目的是避免連接字符串等。 另外,Rawkode的答案應該被接受。 – aMiGo

+2

這不是應該如何使用rawQuery,你應該使用?作爲佔位符並填寫第二個參數。 – Eddnav

+3

無論您應該如何使用* rawQuery()*,除Java之外,這是所有其他語言中更明智,最簡單,易理解和標準的方式。所以這是首選方式。 – not2qubit

11

也許這可以幫助你

Cursor c = db.rawQuery("query",null); 
int id[] = new int[c.getCount()]; 
int i = 0; 
if (c.getCount() > 0) 
{    
    c.moveToFirst(); 
    do { 
     id[i] = c.getInt(c.getColumnIndex("field_name")); 
     i++; 
    } while (c.moveToNext()); 
    c.close(); 
} 
+0

對於問題@AgentKnopf這是完美的答案 –

0
String mQuery = "SELECT Name,Family From tblName"; 
Cursor mCur = db.rawQuery(mQuery, new String[]{}); 
mCur.moveToFirst(); 
while (!mCur.isAfterLast()) { 
     String name= mCur.getString(mCur.getColumnIndex("Name")); 
     String family= mCur.getString(mCur.getColumnIndex("Family")); 
     mCur.moveToNext(); 
} 

姓名和家庭是你的結果

0

爲了完整和正確的資源管理:

 ICursor cursor = null; 
     try 
     { 

      cursor = db.RawQuery("SELECT * FROM " + RECORDS_TABLE + " WHERE " + RECORD_ID + "=?", new String[] { id + "" }); 

      if (cursor.Count > 0) 
      { 
       cursor.MoveToFirst(); 
      } 
      return GetRecordFromCursor(cursor); // Copy cursor props to custom obj 
     } 
     finally // IMPORTANT !!! Ensure cursor is not left hanging around ... 
     { 
      if(cursor != null) 
       cursor.Close(); 
     } 
0

如果您的SQL查詢是這樣的

SELECT name,roll FROM student WHERE name='Amit' AND roll='7' 

然後rawQuery將

String query="SELECT id, name FROM people WHERE name = ? AND roll = ?"; 
String[] selectionArgs = {"Amit","7"} 
db.rawQuery(query, selectionArgs);