2009-05-04 34 views
30

Tôi có ứng dụng android sử dụng cơ sở dữ liệu sqlite cục bộ.android: ORDER BY trong truy vấn

private SQLiteDatabase mDb; 

khi tôi chạy truy vấn này tôi nhận được con trỏ của tôi qua hàng với pid bằng id, như mong muốn:

mDb.query(true, PT_TABLE, new String[] {KEY_PID, KEY_TID}, 
    KEY_PID+" = "+id, null, null, null, null, null);   

khi tôi chạy truy vấn sau đây, nhằm nhận được rằng bộ kết quả tương tự, ra lệnh bởi pid tôi nhận được "android.database.sqlite.SQLiteException: datatype không phù hợp"

mDb.query(true, PT_TABLE, new String[] {KEY_PID, KEY_TID}, 
    KEY_PID+" = "+id, null, null, null, null, KEY_PID+" DESC"); 

Bất kỳ ý tưởng?

Trả lời

36

Dường như bạn vừa mới pha trộn một chút. Theo tài liệu SQLiteDatabase.query, đối số cuối cùng là mệnh đề LIMIT. Thứ hai đến cuối là mệnh đề ORDER BY.

Cursor query (boolean distinct, 
      String table, 
      String[] columns, 
      String selection, 
      String[] selectionArgs, 
      String groupBy, 
      String having, 
      String orderBy, // <-- ORDER BY 
      String limit) 

EDIT

Nhưng, đó cũng là một SQLiteDatabase.query nơi ORDER BY sẽ phải xuống hàng chót

Cursor query (String table, 
      String[] columns, 
      String selection, 
      String[] selectionArgs, 
      String groupBy, 
      String having, 
      String orderBy) 
+8

Trong tài liệu hướng dẫn cũng có vẻ là một phiên bản: SQLiteDatabase.query (bảng, cột, lựa chọn, selectionArgs, groupby, có, orderBy) <- nhận thấy một lĩnh vực (giới hạn) là mất tích –

+0

Đó là sai , đề cập doc cũng cung cấp cho các cuộc gọi sau đây 'truy vấn (String bảng, String [] cột, String lựa chọn, String [] selectionArgs, String groupBy, String có, String orderBy)'. – 2ndGAB

+0

@ 2ndGAB: thực ra, phương pháp mà bạn đề cập là giống như Dandre đề cập và Sandip sử dụng câu trả lời của anh ta, và không phải là câu hỏi của Bee. Lưu ý rằng chúng có các vị trí khác nhau (7 so với 9) và bạn không có một boolean ('khác biệt', từ phương thức được sử dụng trong câu hỏi). – outis

7
KEY_PID + " = " + "'" + id + "'" 
23

này làm việc cho tôi

String filter = MySQLiteHelper.JOB_ID + "=" + Integer.toString(jobID); 
String orderBy = MySQLiteHelper.LOG_TIME + " DESC"; 
Cursor cursor = database.query(MySQLiteHelper.LOG_TABLE_NAME, logTableColumns, 
     filter, null, null, null, orderBy); 
4

Vì Orderby là tham số cuối cùng thứ hai trong truy vấn; truy vấn của bạn sẽ như thế này

mDb.query(true, PT_TABLE, new String[] {KEY_PID, KEY_TID}, 
    KEY_PID+" = "+id, null, null, null, KEY_PID+" DESC", null); 
2

Nếu tôi hiểu chính xác vấn đề của bạn, hãy thử điều này.

String[] columns = new String[] {KEY_PID, KEY_TID}; 
    String where = KEY_PID + " = " + Integer.toString(id); 
    String orderBy = KEY_PID + " DESC"; 

    Cursor cursor = mDb.query(PT_TABLE, columns, where, null, null, null, orderBy); 
+0

Thêm một số giải thích với câu trả lời cho cách câu trả lời này giúp OP trong việc sửa chữa vấn đề hiện tại –

Các vấn đề liên quan