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);


    }
4

3 回答 3

5

你可以这样做,检查这个 URL 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"
于 2012-04-11T15:57:28.840 回答
3

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

 c = dbh.getReadableDatabase().rawQuery("SELECT _id, " + 
             DatabaseHelper.NAME + 
  ", " + DatabaseHelper.LASTNAME + 
      ", " + DatabaseHelper.ans2 + 
                        " FROM " +
                DatabaseHelper.TABLE_NAME ORDER BY yourColumnName, null);
于 2012-04-11T15:58:35.220 回答
2

我相信您正在寻找 ORDER BY 关键字。您将在此处找到详细说明:

由@w3schools.com 订购

于 2012-04-11T15:55:10.537 回答