2016-12-24 3 views
0

JAVA кодне Execute Oracle Процедура 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; 

У меня есть следующая проблема:

Я не могу добавить дату в моей базе данных, При выполнении кода без добавления даты все работает правильно.

Как я могу подготовить поле даты для добавления в БД?

ответ

1

Изменить код вы использовать 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; 
} 

Check this за больше передачи параметров даты и метки времени.

Смежные вопросы