2015-06-22 58 views
1

我一直試圖根據名稱按字母順序使用db.query返回我的表,並另存爲列表以填充微調器。爲什麼我的SQLite遊標不按字母順序返回? (Android)

db.query確實成功返回所有列值,但在嘗試排序時不會以任何順序返回。

我想排序的列是COLUMN_COMPANY_NAME(「company_name」)屬於表TABLENAME(「公司」)。 COLUMN_COMPANY_NAME被宣佈爲:

public static final String TABLE_NAME = "companies"; 
public static final String COLUMN_ID = "company_id"; 
public static final String COLUMN_COMPANY_NAME = "company_name"; 
public static final String COLUMN_EMAIL = "company_email"; 
public static final String COLUMN_PHONE = "company_phone"; 

private static final String DATABASE_CREATE = "create table " + TABLE_NAME 
+ "(" + COLUMN_ID + " integer primary key autoincrement, " 
+ COLUMN_COMPANY_NAME + " varchar(45), " 
+ COLUMN_EMAIL + " varchar(45), " 
+ COLUMN_PHONE + " integer default 0" 
+ ");"; 

private SQLiteDatabase db; 

我想用db.query(表,列,選擇,selectionArgs兩個,GROUPBY,有順序)來獲得在遊標數據庫中的所有列和行:

protected Cursor Cursor_getAllCompanies(){ 
    String orderBy = COLUMN_COMPANY_NAME + " Collate NOCASE"; 
    return db.query(TABLE_NAME, null, null, null, null, null, orderBy); 
}//if columns = null, default get all columns 

所以我預計rawQuery是:

SELECT * FROM companies ORDER BY company_name Collate NOCASE; 

我已經嘗試了許多不同的語法,但無濟於事。據我所知,上面的語法應該以公司名稱的字母順序(升序)返回所有列,但不是。

問題歸結爲:我怎樣才能讓db.query以字母順序返回?爲什麼標準訂單命令不起作用?

注:有一些已經回答過類似的問題,但沒有自己的解決方案,目前似乎爲我工作:

SQLite Query, Nocase Alphabetical

How do I order my SQLite in descending order

SQLite query sorting

+0

它*將*按返回的SQL順序返回 - 按ORDER BY子句的規定。我懷疑'希望的順序'和*實際結果順序*是不同的。那麼* actual *命令是什麼?顯示數據結果。 – user2864740

+0

@ user2864740 - 這實際上是個問題。目前它是按照它添加到SQLite數據庫的順序返回的,但使用「ORDER BY company_name Collat​​e NOCASE」不應該返回的訂單應該是:按字母順序排列,基於數據庫的company_name列的情況無關緊要? – Luke

+0

執行時'orderBy'字符串的實際值是多少?基本上:SQLite不*損壞,適配器* *不能*重新排序結果。因此,生成的SQL根據預期不正確。以「它添加到SQLite數據庫的順序」返回結果聽起來很奇怪 - 例如。要麼不應用排序,要麼排序在像ID這樣的列上。案例(或無案例)的順序應該是按字母順序排列的,fsvo。 – user2864740

回答

0

如果您試圖列出它按字母順序排列
只是SELECT * FROM公司ORDER BY company_name

+0

@ Agapitz-這也不起作用,看起來是一樣的。看起來,訂單在整數和日期時間內都能正確工作,因爲我在同一個項目中有另一個數據庫,它按照「票據」創建時間和「票據」收據編號(一個int)進行排序。 – Luke

+0

您是否嘗試在sqlitedatabase瀏覽器中運行它? – Agapitz