我計劃將“日期”物件添加到 SQLite 資料庫中。但是,我收到有關插入為空的錯誤。錯誤是這個
org.sqlite.SQLiteException: [SQLITE_CONSTRAINT_NOTNULL] A NOT NULL constraint failed (NOT NULL constraint failed: dates.Tarih)
at org.sqlite.core.DB.newSQLException(DB.java:909)
at org.sqlite.core.DB.newSQLException(DB.java:921)
at org.sqlite.core.DB.execute(DB.java:825)
at org.sqlite.jdbc3.JDBC3PreparedStatement.execute(JDBC3PreparedStatement.java:53)
這是我的代碼。我懷疑從問號。因為當我洗掉它們并將它們放在'now'. 它確實有效。但是,以下代碼會引發上述錯誤。
插入方法
public static void insert(Date date, Date date2) {
try{
System.out.println(" date:" date.toString());
String query = "insert into dates(Tarih,Tarih2) values(strftime('%d-%m-%Y',?), strftime('%d-%m-%Y',?))";
pst=conn.prepareStatement(query);
pst.setObject(1,date);
pst.setObject(2,date2);
pst.execute();
}catch (SQLException e){
e.printStackTrace();
}
}
uj5u.com熱心網友回復:
可能您已將列定義Tarih為,NOT NULL并且您的代碼正試圖null在表中插入一個值。
你得到的原因null從strftime()是因為你不通過SQLite的有效日期。
對于 SQLite,有效日期/日期時間可以是格式的字串,也可以是yyyy-MM-dd hh:mm:ss整數 unix 紀元時間或代表儒略日的浮點數。
您傳遞的是 Date 物件,這是您的錯誤。
解決問題的一種方法是從每個Date物件中提取一個代表 unix 紀元時間的整數并將其傳遞給strftime():
public static void insert(Date date, Date date2) {
try{
long d = date.toInstant().toEpochMilli() / 1000;
long d2 = date2.toInstant().toEpochMilli() / 1000;
String query = "insert into dates(Tarih,Tarih2) values(strftime('%d-%m-%Y', ?, 'unixepoch'), strftime('%d-%m-%Y', ?, 'unixepoch'))";
pst=conn.prepareStatement(query);
pst.setLong(1, d);
pst.setLong(2, d2);
pst.execute();
} catch (SQLException e){
e.printStackTrace();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/403609.html
標籤:
上一篇:Django資料庫關系
