[英]no Execute Oracle Procedure Java
JAVA代码
public boolean userReg(User user) throws SQLException, ClassNotFoundException {
Connection conn = null;
CallableStatement cs = null;
try {
conn = OracleDAOFactory.createConnection();
cs = conn.prepareCall("{call REG_USER(?,?,to_date(?,'yyyy-MM-dd'),?,?)}");
cs.setString(1, user.getEmail());
cs.setString(2, user.getPassword());
cs.setString(3, user.getBirthday());
cs.setString(4, user.getAbout());
cs.setString(5, user.getFullName());
cs.execute();
cs.close();
} catch (SQLException e) {
e.getStackTrace();
} finally {
assert conn != null;
conn.close();
}
return true;
}
Oracle SQL
CREATE OR REPLACE PROCEDURE REG_USER
(
EMAIL IN VARCHAR2,
PASSWORD IN VARCHAR2,
BIRTHDAY IN DATE,
ABOUT IN VARCHAR2,
FULLNAME IN VARCHAR2
) AS BEGIN
INSERT INTO MAILBOX_USERS VALUES(EMAIL,FULLNAME,PASSWORD,BIRTHDAY,ABOUT,1,0);
END REG_USER;
我有以下问题:
我无法在数据库中添加日期,执行代码时不添加日期,则一切正常。
如何准备日期字段以添加到数据库?
更改您的代码以使用setDate
并使用java.sql.Date.valueOf(String)
传递经过解析的日期,该日期需要格式为yyyy-MM-dd
日期字符串
public boolean userReg(User user) throws SQLException, ClassNotFoundException {
Connection conn = null;
CallableStatement cs = null;
try {
conn = OracleDAOFactory.createConnection();
cs = conn.prepareCall("{call REG_USER(?,?,?,?,?)}");
cs.setString(1, user.getEmail());
cs.setString(2, user.getPassword());
cs.setDate(3, java.sql.Date.valueOf(user.getBirthday()));
cs.setString(4, user.getAbout());
cs.setString(5, user.getFullName());
cs.execute();
cs.close();
}catch (SQLException e){
e.getStackTrace();
}finally {
assert conn != null;
conn.close();
}
return true;
}
请查看此内容以获取有关传递日期和时间戳记参数的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.