嘗試:
db.query("person", new String[] {"name"}, null, null, null, null, "name");
按照參考:
public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
例如,如果你想既姓名和年齡,你可以使用:
db.query("person", new String[] {"name", "age"}, null, null, null, null, "name");
如果您想選擇只有在他們可以使用的「木質」名稱:
db.query("person", new String[] {"name"}, "name=?", new String[] { "woody" }, null, null, "name");
對於處理結果,你可以做到以下幾點:
Cursor c = db.query("person", new String[] {"name", "age"}, null, null, null, null, "name");
startManagingCursor(c);
int nameColumn = c.getColumnIndex("name");
int ageColumn = c.getColumnIndex("age");
c.moveToFirst())
do
{
// Perform Logic
Log.i('TEST INFO', 'Name: '.c.getString(nameColumn).' Age: '.c.getInt(ageColumn));
}
while (c.moveToNext());
修訂爲每評論:我不太知道你爲什麼會要重新排序在數據庫中的數據,但下面的函數應做你想做的事情,你可能需要修改套件,它會得到所有條目(有序),創建臨時表,添加條目,刪除實際表並重新命名臨時表成爲主表:
這樣做是非常耗資源 - 使用正確佈局的SQL SELECT語句來訂購結果從DB收集的將會少得多。
private void orderDB()
{
Cursor c = db.query("person", new String[] {"name", "age"}, null, null, null, null, "name");
startManagingCursor(c);
//Create a temp table:
db.execSQL("CREATE TABLE IF NOT EXISTS tmp_person (_id integer primary key autoincrement, "
+ "name text not null, "
+ "age integer);");
// Get column ID's
int nameColumn = c.getColumnIndex("name");
int ageColumn = c.getColumnIndex("age");
// Iterate through all entries
c.moveToFirst();
do
{
if (c.getCount() >0)
{
ContentValues orderedValues = new ContentValues();
orderedValues.put("name", c.getString(nameColumn));
orderedValues.put("age", c.getInt(ageColumn));
try
{
// Insert the entry into a temp table
db.insert("tmp_person", null, orderedValues);
}
catch (SQLException e)
{
Log.e("TEST INFO", e.toString());
}
}
}
while (c.moveToNext());
// Drop the current person table:
db.execSQL("DROP TABLE IF EXISTS person");
// Rename the temp table to person:
db.execSQL("ALTER TABLE tmp_person RENAME TO person");
}
它的工作原理有點更安全。我可以在屏幕上按順序打印名稱,但數據庫不會更新。當我關閉並重新打開應用程序時,數據庫又回到原來的狀態。 – Woody 2010-10-20 18:30:22
@Woody數據庫不會改變它的結構 - SELECT語句只會向數據庫請求數據,並且通過添加ORDER BY只會在從數據庫中獲取結果時對結果進行排序。數據庫在添加時爲每個條目存儲一個密鑰,該密鑰保持數據庫的順序。爲什麼你需要重新排序數據庫?AFAIK唯一的方法是執行選擇,然後清空表格,然後按順序重新輸入信息。 – Scoobler 2010-10-20 18:43:38
我只需要將數據庫重新排序,我該怎麼做? – Woody 2010-10-20 18:51:23