2013-07-30 29 views
5

tôi chèn một chuỗi, ngày tháng, thời gian và giá trị int thành một cơ sở dữ liệu SQLite sử dụng mã nàyget chuỗi, ngày, giờ và int từ cơ sở dữ liệu SQLite trong Android

void addRemAction(RemActions remaction) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put(KEY_ACTOINS_TITLE, remaction.getTitle()); // Action title 
    values.put(KEY_ACTIONS_MSG, remaction.getMsg()); // action msg 



    values.put(KEY_ACTIONS_DATE, dateFormat.format(new Date())); // action date 
    values.put(KEY_ACTIONS_TIME, remaction.getTime()); // action time 
    values.put(KEY_ACTIONS_PLACE_LONG, remaction.getPlong()); // action place long 
    values.put(KEY_ACTIONS_PLACE_LAT, remaction.getPlat()); // action place lat 

    // Inserting Row 
    db.insert(TABLE_ACTIONS, null, values); 
    db.close(); // Closing database connection 

và đây là mã của tôi để lấy nó

RemActions getRemAction(int id) { 
    SQLiteDatabase db = this.getReadableDatabase(); 

    Cursor cursor = db.query(TABLE_ACTIONS, new String[] {KEY_ACTOINS_TITLE, KEY_ACTIONS_MSG, KEY_PLACES_NAME, KEY_ACTIONS_DATE, KEY_ACTIONS_TIME}, KEY_ACTIONS_ID + "=?", 
      new String[] { String.valueOf(id) }, null, null, null, null); 
    if (cursor != null) 
     cursor.moveToFirst(); 

    RemActions remActions = new RemActions(cursor.getString(0), 
      cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getInt(4)); 
    // return remActions 
    return remActions; 

bây giờ ide của tôi đang cho tôi lỗi vì đối số thứ 4 trong hàm tạo của tôi cho lớp RemAction là kiểu Date từ lớp java.util.date.

Câu hỏi của tôi là "làm cách nào để đặt con trỏ để tải nó ở định dạng ngày?"

bệnh b vui mừng để cung cấp mã bổ sung theo yêu cầu

+1

chào mừng bạn đến với SO..đóng db và con trỏ trong phương thức getRemAction() nó sẽ cho bạn ngoại lệ. – TheFlash

+0

Ngoài ra, bạn chỉ có thể sử dụng 'cursor.getDate (1)' để lấy ngày tháng. Đã không sử dụng chúng trong một thời gian, nhưng nó phải là một cái gì đó như thế này, tham khảo: http://www.coderanch.com/t/445539/JDBC/databases/retrieve-Date-JDBC-sql –

+0

@ TheDarkKnight Xin lưu ý rằng Android không sử dụng JDBC, và không có getDate trong SQLite. – m0skit0

Trả lời

11

Vì bạn không thể lưu các giá trị ngày/giờ trong SQLite, trước tiên bạn nên chuyển đổi chúng thành mili giây và lưu chúng như vậy.

Date c = new Date(System.currentTimeMillis()); 
long milliseconds = c.getTime(); 
//To get current time 

Nếu sau đó bạn cần phải thay đổi mili giây trở lại định dạng ngày:

Date c = new Date(cursor.getLong(4)); 

Sau đó, bạn có thể định dạng ngày sử dụng SimpleDateFormat.

+0

Là ngày của bạn java.util.Date? –

+1

'Các loại không thể sửa đổi; Không thể truyền Long tới java.util.Date' – Zenadix

+0

@Zenadix Tôi nghĩ cô ấy có nghĩa là 'new Date (cursor.getLong (4))'. – TWiStErRob

1

Vì bạn đang lưu trữ giá trị này như Date#getTime(), bạn có thể khôi phục lại nó với new Date(cursor.getLong(4)).

Ngoài ra, bạn cần đóng Cursor mà bạn không làm.

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