【问题标题】:Database Sorting depending on Integer?数据库排序取决于整数?
【发布时间】:2011-09-28 05:13:03
【问题描述】:

在我的数据库中有一些行,每行有三列(id、name、moves、time)。我想根据移动对行进行排序,这是整数值。

我试过这样但不走运。

public Cursor fetchAllNotes() {
    return db.query(DATABASE_TABLE, new String[] { KEY_ROWID, KEY_NAME, 
         KEY_MOVES,KEY_TIME}, null, null, null, null, KEY_MOVES);
}

这样使用

private void getallrows()  {
    // get all the contacts..
    db.open();
    Cursor c = db.fetchAllNotes();       
    if (c.moveToFirst())   {        
       do {
          Sorting(c);
       } while (c.moveToNext());
    }
    db.close();
}

我有 15、45、21、11、10、75、33 之类的动作 我想要这样的 10,11,15,21,33,45,75

【问题讨论】:

    标签: android sqlite sorting


    【解决方案1】:

    试试这个 -

    return db.query(DATABASE_TABLE, new String[] { KEY_ROWID, KEY_NAME, 
             KEY_MOVES,KEY_TIME}, null, null, null, null, KEY_MOVES + " ASC");
    

    return db.query(DATABASE_TABLE, new String[] { KEY_ROWID, KEY_NAME, 
             KEY_MOVES,KEY_TIME}, null, null, null, null, KEY_MOVES + " DESC");
    

    编辑 - 1:

    如果你想显示名字,你可以这样使用,

    private void getall()
    { 
            db.open(); 
            Cursor c = db.fetchAllNotes();
            int i=1; 
            if (c.moveToFirst())
            {               
                do
                {
                    DisplayContact(c.getString(c.getColumnIndex(KEY_NAME))); 
                    i++;
                } while (c.moveToNext()); 
            } 
            db.close(); 
    }
    

    【讨论】:

    • 我按照你说的改变了,在这里调用这个函数 private void getall() { db.open(); db.fetchAllNotes();光标 c = db.getAllContacts(); if (c.moveToFirst()) { do { dislayContact(c); } 而 (c.moveToNext());在显示之前它没有按顺序显示。 } db.close(); }
    • 排序不是升序。 10,10,12,4,6,64
    • 首先,请以正确的格式编写代码。在这里您可能无法显示值,因为您的 fetchAllNotes() 返回 Cursor 对象,该对象未在您的代码中捕获。
    • 我想,你并不清楚你想使用哪种方法。不管是什么,您只需要更改查询的最后一个参数,就像我在回答中提到的那样对其进行排序。
    • 我正在像这样使用 private void getall() { db.open();光标 c = db.SortAllRows();诠释我=1; if (c.moveToFirst()) { do { DisplayContact(c,i++); } 而 (c.moveToNext()); } db.close(); }
    【解决方案2】:

    你为什么不以返回排序数据本身的方式进行查询? 试试这个查询:

    选择 * 从 DATABASE_TABLE ORDER BY KEY_MOVES ASC

    db.query(DATABASE_TABLE, new String[] { KEY_ROWID, KEY_NAME, KEY_MOVES,KEY_TIME}, null, null, null, null, KEY_MOVES + "ASC");

    希望你得到它...

    【讨论】:

    • 我是 android 新手,我没听懂,请解释一下,如何装箱。
    • 翻译:不要尝试在 Java 中进行排序,而是尝试利用 SQLite 并检索已在所需列上排序的数据。查看documentation 的“order by”部分。
    • 而不是从数据库中获取所有记录,而是以这样一种方式获取记录
    • 这是返回db.query(SELECT * FROM DATABASE_TABLE ORDER BY KEY_MOVES ASC)的格式;
    • 是的,@Richa 写的是格式化查询和解决您的问题的方法。
    猜你喜欢
    • 2012-09-04
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 2013-12-27
    • 2020-09-23
    • 2020-11-12
    相关资源
    最近更新 更多