2016-10-03 135 views
0

我在這裏紅色的類似問題,但我沒有t find solution for my problem, how to insert datetime field in mySql database using PreparedStatement in java? I didn找到任何與此問題和PreparedStatement有關的東西。如何在java中使用PreparedStatement在mySql數據庫中插入datetime字段?

所以,我有這樣的代碼:

public void sacuvajDezurstva(List<Dezurstvo> listaDezurstava) throws SQLException { 
     String sqlSacuvajDezurstva = "INSERT INTO dezurstvo (Datum,IspitniRokID, NastavnikID, PredmetID) VALUES (?,?,?,?)"; 
     PreparedStatement ps = konekcija.prepareStatement(sqlSacuvajDezurstva); 

     for (Dezurstvo dezurstvo : listaDezurstava) { 
      ps.setDate(1, new Date(dezurstvo.getDatum().getTime())); 
      ps.setLong(2, dezurstvo.getIspitniRok().getIspitniRokID()); 
      ps.setLong(3, dezurstvo.getNastavnik().getNastavnikId()); 
      ps.setLong(4, dezurstvo.getPredmet().getPredmetID()); 

      ps.executeUpdate(); 
     } 


     konekcija.commit(); 
    } 

此代碼的工作,但這裏的第一個PS parametar這是日期是問題,因爲在數據庫中只有這個屬性的部分 - 日期被保存,正是一天,當我使用這種方法時,會保存月份和年份。但小時,分鐘和秒只是00:00:00。因此,在整個數據庫的日期如下:

2016年6月26日00:00:00

此列在我的數據表,我插入日期爲datetime型。當我調試時,我發現this - dezurstvo.getDatum()。getTime())具有通過窗體插入的日期的正常值。所以它有一天,一個月,一年,一小時,幾分鐘和幾秒鐘,但是這個ps.setDate,acctualy ps只有日,月和年的值。

我認爲問題出在SQL查詢但我不知道如何做到這一點,當我只有?在VALUES中,而不是一些實際的日期。

感謝您的幫助!

+1

您可以使用'java.sql.Timestamp'而不是'Date'。 – Titus

回答

1

您需要格式化您的日期。請嘗試以下操作

Date date = new Date(); 
SimpleDateFormat format = new   SimpleDateFormat("yyyy-MM-dd HH:mm:ss") ; 
String currentDateTime = format.format(date); 

然後在準備好的語句中使用setString。

0

要將Date插入到DATETIME字段中,它應該格式化爲"yyyy-MM-dd HH:mm:ss"

另一種選擇是使用TIMESTAMP字段代替。

+0

'TIMESTAMP'字段與'DATETIME'相比確實是有限的,並且不能代表2038年以後的值。這可能不是什麼大問題,但是像Y2K一樣,沒有理由爲失敗而設置自己。 – tadman

+0

但我的日期已經這樣格式化了。當從表單中讀取日期時,它就是這種格式。但是,我應該把這個日期從數據庫中的表單中讀取出來時會出現問題。我想在這部分代碼中 - ps.setDate是錯誤的。因爲錯誤的查詢...所以你認爲我應該這 - 新日期(dezurstvo.getDatum()。getTime()) - 轉換成字符串...但是我怎樣才能使用setString當我的數據表中的字段是日期時間.. 。 – Svetlana

+0

您應該使用@Alan建議的SimpleDateFormat格式化日期,並使用'.setString'方法將其作爲字符串插入。看看這個simila問題:http://stackoverflow.com/questions/2400955/how-to-store-java-date-to-mysql-datetime –

相關問題