con=getConnection();
String sql="insert into memberlist(membernum, name, birth, phone, gender,bpoint, age) "
+ "values(member_seq.nextVal, ?, to_date( ''||?||'', 'YYYY-MM-DD'), ?,?,?,?)";
try {
pstmt=con.prepareStatement(sql);
pstmt.setString(1, mdto.getName());
pstmt.setString(2, mdto.getBirth());
pstmt.setString(3, mdto.getPhone());
pstmt.setString(4, mdto.getGender());
pstmt.setInt(5, mdto.getBpoint());
pstmt.setInt(6, mdto.getAge());
result=pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
close();
return result;
}
I was curious why I have to use pstmt.setString(2, mdto.getBirth()); even though I converted String into Date format by to_date( ''||?||'', 'YYYY-MM-DD').
The reason was when I do to_date( ''||?||'', 'YYYY-MM-DD'), I'm getting java.sql.Date.
But when I do pstmt.setString(2, mdto.getBirth());, mdto.getBirth() is java.util.Date. So I have use setString.
I will need java.sql.Date, so...
pstmt.setDate(2, new java.sql.Date(mdto.getBirth().getTime()));
I thought this will change date or time into "only" Character, but in sql world, character/String/text does not matter as much as Java.
Anyway, to_char() converts time and date to text type.