java
  • sqlite
  • 2016-02-19 62 views 0 likes 
    0

    我是一個java和sqlite的總noob。這應該很簡單,但我已經嘗試過,並且無法使其工作。我有一個SQL日期字段,我格式化爲sql日期(MM/dd/yy)。我想根據通過的日期進行刪除。目前,我只是試圖根據傳遞的日期顯示行。基於日期的sql刪除

    我的代碼運行的查詢是:

    String query = "select * from Peter1Score where DateSort='"+convertSQLDate("09/20/15")+"'"; 
    PreparedStatement pst = connection.prepareStatement(query); 
    ResultSet rs = pst.executeQuery(); 
    

    我converSQLDate()是:

    public static java.sql.Date convertSQLDate (String sqlDateIn) 
    { 
        java.sql.Date returnDate = null; 
    
        SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yy"); 
        Date parsed; 
        try 
        { 
         parsed = formatter.parse(sqlDateIn); 
         java.sql.Date sqlDate = new java.sql.Date(parsed.getTime()); 
         returnDate = sqlDate; 
        } 
        catch (ParseException e) 
        { 
         e.printStackTrace(); 
        } 
        return returnDate; 
    } 
    

    我傳遞15年9月20日只是爲了測試。我有該日期的記錄,但它沒有被選中。

    +0

    最簡單方法是使用'PreparedStatement'並通過'的setDate的日期(不是字符串)查詢傳遞(1,指明MyDate)'。如果您的JVM恰好位於與SQLite不同的區域/區域設置上,您可能還需要傳入「日曆」以明確定義時區。 –

    +0

    我以爲那是我正在做的。 –

    +0

    你不會將任何變量綁定到語句中(使用'setXY()'方法)。你只是將一個字符串值(Date.toString()的結果)連接到查詢字面值中。 –

    回答

    2

    您沒有將任何變量綁定到語句中(使用PreparedStatementsetXY()方法)。相反,您將字符串值(結果Date.toString())連接到查詢字面值。

    試試這個:要做到這一點

    String query = "select * from Peter1Score where DateSort=?"; 
    PreparedStatement pst = connection.prepareStatement(query); 
    pst.setDate(1, convertSQLDate("09/20/15")); 
    
    +1

    好的和充分的答案,儘管試用資源可能已經顯示爲非常適合於JDBC。 –

    +0

    我在手機上,所以我不得不把代碼保持在最低限度;今天晚些時候可以用適當的資源處理來修改它 –

    +0

    這工作完美。我知道這將是簡單的事情,我也懷疑它與字符串/日期不匹配有關,但無法看到樹木的森林。謝謝。 –

    相關問題