我想在数据库中插入一个日期,但它不会出现任何出现的错误消息.当我在Oracle DB中查看我的表时,我找不到我插入的数据.
java.util.Date daterecep;
// getter and setter
public void setdaterecep( java.util.Date daterecep) {
this.daterecep=daterecep;
}
public java.util.Date getdaterecep() {
return daterecep;
}
Run Code Online (Sandbox Code Playgroud)
和
nt val=0;
try {
val = st.executeUpdate("insert into tabdate (date) values('"+daterecep+"')" );
} catch (SQLException ex) {
Logger.getLogger(Insertdate.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println(val);
return resultat;
}
Run Code Online (Sandbox Code Playgroud)
我使用了PreparedStatement,但它没有用,我只是尝试执行Java代码
val = st.executeUpdate("insert into tabdate(date) values('12/12/2004')");
Run Code Online (Sandbox Code Playgroud)
并添加
public static void main (String args[]) throws SQLException {
Insertdate B= new Insertdate();
B.connexionBD();
B.insert();//function for the insertion
}
Run Code Online (Sandbox Code Playgroud)
它的工作原理.
Bal*_*usC 15
这里,
values('"+daterecep+"')
Run Code Online (Sandbox Code Playgroud)
你基本上试图将结果存储daterecep.toString()在数据库中.根据文档,其格式如"Sat Jun 6 10:43:00 BOT 2011"(取决于区域设置和时区!).数据库不理解它.
您应该使用在DB中PreparedStatement#setTimestamp()设置DATETIME/ TIMESTAMPfield.
preparedStatement = connection.prepareStatement("insert into tabdate (date) values(?)" );
preparedStatement.setTimestamp(1, new Timestamp(daterecep.getTime()));
preparedStatement.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
或者当它实际上是一个DATE字段时,请setDate()改用.
preparedStatement.setDate(1, new java.sql.Date(daterecep.getTime()));
Run Code Online (Sandbox Code Playgroud)
作为奖励,PreparedStatement还可以避免SQL注入攻击.
| 归档时间: |
|
| 查看次数: |
19241 次 |
| 最近记录: |