2014-02-26 64 views
0

我想從最近1周的數據庫獲取記錄。我將當前日期和日期前7天,我將它們發送到數據庫處理程序,但它返回錯誤:如何發送日期作爲參數從數據庫中獲取記錄

The method `getALLCompJobs(String, String)` in the type `DatabaseHandler` is not applicable for 
the `arguments (Date, Date)` 

以下是我的代碼。請幫助我弄清楚如何從數據庫獲取過去一週的記錄。

  public class JobSchema extends BackBaseActivity { 

      Date dateBefore7day; 
     Date CurrentDate; 


     @Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.jobsschema); 
      Calendar c = Calendar.getInstance(); 

      SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm"); 
     df.format(c.getTime()); 
     CurrentDate=c.getTime(); 
       c.add(Calendar.DAY_OF_MONTH, -7); 

       dateBefore7day= c.getTime(); 



        DatabaseHandler db = new DatabaseHandler(JobSchema.this); 
      jobarr = db.getALLCompJobs(CurrentDate,dateBefore7day); 


     <---error show The method getALLCompJobs(String, String) in the type 
     DatabaseHandler is not applicable for the arguments (Date, Date) --? 


     public class DatabaseHandler extends SQLiteOpenHelper { 

       String CREATE_COMPLETED_TABLE = "CREATE TABLE " + TABLE_COMPLETED_JOBS 
      + "(" + KEY_COMPID + " INTEGER PRIMARY KEY," + KEY_TIMEJOB 
      + " TEXT," + KEY_TIMEWEEK+ " DATE," + KEY_PICK + " 
          TEXT," + KEY_DEST + " TEXT," 
      + KEY_FARE + " TEXT" + ")"; 


        public List<JobSchmeModel> getALLCompJobs(String CurrentDate, String 
      dateBefore7day) { 
//public List<JobSchmeModel> getALLCompJobs() { 
    List<JobSchmeModel> compjobsList = new ArrayList<JobSchmeModel>(); 

     String selectQuery = "SELECT * FROM " + TABLE_COMPLETED_JOBS + " WHERE " 
     + KEY_TIMEWEEK + ">=" + dateBefore7day + " AND " + KEY_TIMEJOB + "<=" + 
     CurrentDate + " ORDER BY "+KEY_COMPID+" DESC"; 
      SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 
+0

你需要傳遞日期在'getALLCompJobs(..)'字符串。 –

+0

和我將如何從數據庫recoreds?如果我將日期作爲字符串傳遞,它將從數據庫中獲取記錄? – user3332060

+0

是的,但請確保您的日期字段的數據類型爲「DATETIME」,因爲我上次告訴您,如果您還記得。 –

回答

0

如果您的語言支持它,您可以使用一種稱爲「epochtime」的日期形式(自1970年1月1日以來的秒數)。簡單的算術加法或減法在這個表格中的日期是非常有效的。

0

好吧,閱讀錯誤:它告訴你,你正在向你的getALLCompJobs方法傳遞錯誤類型的參數。它需要String參數,您傳遞的參數類型爲Calendar。試試這個

SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm"); 
String sCurrent = df.format(c.getTime()); 
c.add(Calendar.DAY_OF_MONTH, -7); 
String sWeekBefore = df.format(c.getTime()); 
jobarr = db.getALLCompJobs(sCurrent, sWeekBefore); 

UPD 日期字符串的格式看起來不正確。

檢查this answer如何轉換java.util.Datejava.sql.Date,不要忘記調用上的日期對象.toString()傳遞給

+0

好吧,我將如何從數據庫獲得最後1周的結果??? – user3332060

+0

我假定你知道你的SQL你的方式是你使用的SQL查詢沒有給你所需的條目? 我不是SQL專家,但我認爲這是您的格式字符串的問題。 請看這個答案,瞭解如何生成SQL準備好的日期對象。 http://stackoverflow.com/a/530022/375929 –

相關問題