无法在 JDBC 中插入日期
Posted
技术标签:
【中文标题】无法在 JDBC 中插入日期【英文标题】:Not able to insert date in JDBC 【发布时间】:2017-11-26 23:43:39 【问题描述】:我正在使用的数据库的日期格式为
DD-MON-RR
这是桌子:
CREATE TABLE dependent (
Fname varchar2(15) not null,
bdate date,
);
我目前正在尝试使用带有代码的 JDBC 插入数据库
String insert = "INSERT INTO DEPENDENT(Fname,bdate) VALUES(?,?)";
PreparedStatement p = z.conn.prepareStatement(insert);
p.setString(1, "Billy");
String formatIn = "DD-MMM-YY";
SimpleDateFormat sdfi = new SimpleDateFormat(formatIn);
java.util.Date inDate = sdfi.parse("29-AUG-10");
java.sql.Date sqlDate = new java.sql.Date(inDate.getTime());
p.setDate(2, sqldate);
p.executeUpdate();
我认为这符合预期的格式,但是它一直给我 java.sql.SQLException: Io exception: Size Data Unit (SDU) mismatch
我不确定如何解决这个问题
【问题讨论】:
你表中的bdate
列是什么类型的?
bdate 是日期类型
【参考方案1】:
信不信由你,看起来您的错误与您在SimpleDateFormat
中使用的模式有关。更改以下内容:
String formatIn = "DD-MMM-YY";
SimpleDateFormat sdfi = new SimpleDateFormat(formatIn);
java.util.Date inDate = sdfi.parse("29-AUG-10");
到此,问题应该消失了:
String formatIn = "dd-MMM-yy";
SimpleDateFormat sdfi = new SimpleDateFormat(formatIn);
java.util.Date inDate = sdfi.parse("29-AUG-10");
D
和 Y
说明符分别表示年份和星期几,可能不是您打算使用的(请参阅此处:Y returns 2012 while y returns 2011 in SimpleDateFormat)。
请注意,您的 JDBC 代码的其余部分在我看来没问题。
【讨论】:
以上是关于无法在 JDBC 中插入日期的主要内容,如果未能解决你的问题,请参考以下文章