2012-04-11 49 views
2

我已经在android(SQLite)中成功创建了一个数据库表。我正在尝试根据名字或姓氏(升序/降序)对数据库中的元素进行排序。 (为此我在上下文菜单中有按钮)。我在编写SQL语句时遇到问题。任何想法?排序数据库中的元素

public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.database); 

     ListView lv=(ListView)findViewById(R.id.mylist); 


     dbh = new DatabaseHelper(this); 
     c = dbh.getReadableDatabase().rawQuery("SELECT _id, " + 
      DatabaseHelper.NAME + 
    ", " + DatabaseHelper.LASTNAME + 
     ", " + DatabaseHelper.ans2 + 
         " FROM " + 
       DatabaseHelper.TABLE_NAME, null); // initializing 


      String[] dataFrom ={DatabaseHelper.NAME, DatabaseHelper.LASTNAME, DatabaseHelper.ans2}; 
      int[] dataTo = {R.id.name, R.id.value1, R.id.value2};    
      SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
        R.layout.row, c, dataFrom, dataTo); 

      lv.setAdapter(adapter); 

      registerForContextMenu(lv); 


    } 

回答

3

我认为你在混淆东西。你无法控制它在数据库中的存储方式。所有你需要担心的是你想如何从数据库中获取数据。您需要使用order by子句(默认情况下,它是您指定的列上的Asc)。

c = dbh.getReadableDatabase().rawQuery("SELECT _id, " + 
      DatabaseHelper.NAME + 
    ", " + DatabaseHelper.LASTNAME + 
     ", " + DatabaseHelper.ans2 + 
         " FROM " + 
       DatabaseHelper.TABLE_NAME ORDER BY yourColumnName, null); 
2

我相信你正在寻找ORDER BY关键字。你会发现一个详细的描述在这里:

ORDER BY @ w3schools.com

+0

谢谢,让我看看它 – 2012-04-11 15:55:56

5

你可以做这样的事情,看看这个网址http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

dbh.getReadableDatabase().query(DatabaseHelper.TABLE_NAME, 
            new String[]{DatabaseHelper.NAME, 
               DatabaseHelper.LASTNAME, 
               ,DatabaseHelper.ans2},null,null,null, 
              DatabaseHelper.NAME,null); 
在倒数第二个参数

,您可以设置您想要的行你可以添加字符串ASC或DESC例如

DatabaseHelper.NAME + " ASC"