我正在创建一个SQLite数据库,可以在该数据库中为该月的特定日期创建条目。我为日期编号做了专栏。条目以随机顺序排列,所以我想对它们进行排序。但是当我使用orderBy时,它只按第一个数字排序数字。 示例:输入顺序为(2,31,5,21,16,9,7)。当我对它进行排序时,我得到了订单(16,2,21,31,5,7,9)。有办法解决这个问题吗?
我的输入代码
public void createEntry(int id, int month, int day, int start_hour, int start_min, int stop_hour, int stop_min)
{
ContentValues cv = new ContentValues();
ourDatabase.beginTransaction();
cv.put(ROW_ID, id);
cv.put(MONTH,month);
cv.put(DAY,day);
cv.put(START_HOUR,start_hour);
cv.put(START_MIN,start_min);
cv.put(STOP_HOUR,stop_hour);
cv.put(STOP_MIN,stop_min);
ourDatabase.insert(DATABASE_TABLE, null, cv);
ourDatabase.setTransactionSuccessful();
ourDatabase.endTransaction();
}
我的代码我对数据进行排序
public ArrayList<String> getDays(){
String[] columns = new String[]{MONTH, DAY, START_HOUR, START_MIN, STOP_HOUR, STOP_MIN};
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, DAY);
c.moveToLast();
ArrayList<String> navne = new ArrayList<String>();
for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
Log.d("Entry", c.getString(1));
navne.add(c.getString(1)+": "+c.getString(2)+":"+c.getString(3)+" - "+c.getString(4)+":"+c.getString(5));
}
return navne;
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
ROW_ID + " TEXT NOT NULL, " +
MONTH + " TEXT NOT NULL, " +
DAY + " TEXT NOT NULL, " +
START_HOUR + " TEXT NOT NULL, " +
START_MIN+ " TEXT NOT NULL, " +
STOP_HOUR + " TEXT NOT NULL, " +
STOP_MIN + " TEXT NOT NULL);"
);
}
答案 0 :(得分:0)
您不会显示表格的定义。 DAY列是数字还是字符串? 如果它是一个字符串,你会看到这种行为。
答案 1 :(得分:0)
按字母顺序排序。尝试:
ORDER BY ABS(column_name) ASC
答案 2 :(得分:0)
如果将字段声明为TEXT,则ORDER BY clausole的工作方式就像字段是字符串一样。如果需要数字顺序,则需要将其声明为INTEGER或LONG。