Ⅰ android 資料庫條數查詢方法
DBHelper 繼承SQLiteopenHelper
DBHelper helper=new DBHelper(......);
SQLitedatebase db=helper.getReadabledatabase();
db.exe("select count as totalcount from tablename");
Ⅱ android sqlite資料庫怎樣寫帶條件的查詢語句
c = db.rawQuery("select _id,ration,album_id,size,album_pic,artist_pic,title,data,album,artist,recentiy_time from musictbl where recentiy_time <> 0",null);
排序可以對list進行排序,在music類里實現一下排序的介面就可以了吧
Ⅲ Android 中資料庫查詢方法query() 中的selectionArgs 參數只能在編譯之前確定,這怎麼實現動態查詢
網上找來的
Android 中涉及資料庫查詢的地方一般都會有一個 query() 方法,而這些 query 中有大都(全部?)會有一個參數 selectionArgs,比如下面這個 android.database.sqlite.SQLiteDatabase.query():
view plain to clipboardprint?
public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
selection 參數很好理解,就是 SQL 語句中 WHERE 後面的部分,即過濾條件, 比如可以為 id=3 AND name='Kevin Yuan' 表示只返回滿足 id 為 3 且 name 為 "Kevin Yuan" 的記錄。
再實際項目中像上面那樣簡單的「靜態」的 selection 並不多見,更多的情況下要在運行時動態生成這個字元串,比如
view plain to clipboardprint?
public doQuery(long id, final String name) {
mDb.query("some_table", // table name
null, // columns
"id=" id " AND name='" name "'", // selection
//...... 更多參數省略
);
}
public doQuery(long id, final String name) {
mDb.query("some_table", // table name
null, // columns
"id=" id " AND name='" name "'", // selection
//...... 更多參數省略
);
}
在這種情況下就要考慮一個字元轉義的問題,比如如果在上面代碼中傳進來的 name 參數的內容裡面有單引號('),就會引發一個 "SQLiteException syntax error .... "。
手工處理轉義的話,也不麻煩,就是 String.replace() 調用而已。但是 Android SDK 為我們准備了 selectionArgs 來專門處理這種問題:
view plain to clipboardprint?
public void doQuery(long id, final String name) {
mDb.query("some_table", // table name
null, // columns
"id=" id " AND name=?", // selection
new String[] {name}, //selectionArgs
//...... 更多參數省略
);
// ...... 更多代碼
}
public void doQuery(long id, final String name) {
mDb.query("some_table", // table name
null, // columns
"id=" id " AND name=?", // selection
new String[] {name}, //selectionArgs
//...... 更多參數省略
);
// ...... 更多代碼
}
也就是說我們在 selection 中需要嵌入字元串的地方用 ? 代替,然後在 selectionArgs 中依次提供各個用於替換的值就可以了。在 query() 執行時會對 selectionArgs 中的字元串正確轉義並替換到對應的 ? 處以構成完整的 selection 字元串。 有點像 String.format()。
不過需要注意的是 ? 並不是「萬金油」,只能用在原本應該是字元串出現的地方。比如下面的用法是錯誤的:
view plain to clipboardprint?
public void doQuery(long id, final String name) {
mDb.query("some_table", // table name
null, // columns
"? = " id " AND name=?", // selection XXXX 錯誤!? 不能用來替換欄位名
new String[]{"id", name}, //selectionArgs
//...... 更多參數省略
);
// ...... 更多代碼
}
Ⅳ Android SQLite 資料庫查詢問題,緊急!~在線等~~
表結構是這樣的:String TABLE_NAME = "OrderEntryInfo"; //table name String ORDER_ID = "OrderId"; String TABLE_NO = "TableNo"; String ITEM_ID = "ItemId"; String ITEM_ORDER_TIMES = "ItemOrderTimes"; String STAFF_ID = "StaffId"; String CUSTOMER_NUMBER = "CustomerNumber"; String CUSTOMER_AGE_LEVEL = "CustomerAgeLevel"; String ORDER_TIME = "OrderTime"; String ORDER_TYPE = "OrderType"; String ORDER_PAY_STATUS = "OrderPayStatus"; String SQL_CREATE_ORDERENTRYINFO = "CREATE TABLE " + TABLE_NAME + "(" + ORDER_ID + " INTEGER PRIMARY KEY, " + TABLE_NO + " INTEGER NOT NULL , " + ITEM_ID + " INTEGER NOT NULL , " + ITEM_ORDER_TIMES + " INTEGER NOT NULL , " + STAFF_ID + " TEXT NOT NULL, " + CUSTOMER_NUMBER + " TEXT NOT NULL, " + CUSTOMER_AGE_LEVEL + " TEXT NOT NULL, " + ORDER_TIME + " TEXT NOT NULL, " + ORDER_TYPE + " TEXT, " + ORDER_PAY_STATUS + " TEXT)";