Java往Oracle中插入timestamp类型数据

我在oracle中将日期类型的数据定义为timestamp,然后往数据库中插入数据,源代码如下:publicbooleanaddTickets(TicketsVovo){... 我在oracle中将日期类型的数据定义为timestamp,然后往数据库中插入数据, 源代码如下:
public boolean addTickets(TicketsVo vo){
boolean flag = false;
//对应数据库中的date
Timestamp stamp = DateConventer.strWithtimeToTimestamp("2009-02-07 12:10:30");
Object[] paramValues={vo.getTicketName(),vo.getStadiumId(),
vo.getPrice(),vo.getDescn()}; //"sysdate"
String executeSql = "insert into TB_Tickets (TicketID,TicketName," +
"StadiumID,Price,Descn,BeginTime) values("+"seq_mp.nextval"+",?,?,?,?,"
+stamp+")";
System.out.println("sql: "+executeSql);
flag = this.updateZFSystemDB(executeSql, paramValues);
return flag;
}

public static Timestamp strWithtimeToTimestamp(String str) {
return Timestamp.valueOf(str);
}

//打印出来的executeSql语句为:insert into TB_Tickets (TicketID,TicketName,StadiumID,Price,Descn,BeginTime) values(seq_mp.nextval,?,?,?,?,2009-02-07 12:10:30.0)。

在插入数据库时报异常:
java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 5。
当我将executeSql语句中的stamp替换为“sysdate”则插入成功。
恳请知情者赐教呀, 万分感谢!
使用to_date函数是可以的, 这个我知道。 以往每次都是这么实现的, 但是我想尝试往数据库中插入timestamp类型的数据, 请问如何实现呢?
展开
 我来答
百度网友babecbb56
推荐于2016-11-20
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
删掉这行:
Timestamp stamp = DateConventer.strWithtimeToTimestamp("2009-02-07 12:10:30");
改成
String stamp = "2009-02-07 12:10:30";

然后把:
String executeSql = "insert into TB_Tickets (TicketID,TicketName," +
"StadiumID,Price,Descn,BeginTime) values("+"seq_mp.nextval"+",?,?,?,?,"
+stamp+")";
改成:
String executeSql = "insert into TB_Tickets (TicketID,TicketName,"
+ "StadiumID,Price,Descn,BeginTime) values(" + "seq_mp.nextval"
+ ",?,?,?,?,to_date('" + stamp + "','yyyy-mm-dd hh24:mi:ss'))";
就可以了,试试看

按照你补充为题所说的,那你就需要使用PreparedStatement进行数据加载:
imestamp stamp = DateConventer.strWithtimeToTimestamp("2009-02-07 12:10:30");
String executeSql =".....";
PreparedStatement.setTimestamp(parameterIndex,Timestamp)
csuxp2008
2009-07-10
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
你要么修改数据字典,把timestamp的格式改成'yyyy-mm-dd hh24:mi:ss'
要么就严格按照当前oracle所支持的格式来插入数据
要么就只能使用to_date函数了

我的oracle默认是的timestamp是这种格式:
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
可以自己修改成想要的格式
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
超级大股民
2009-07-10
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
只能说明是格式有问题 或者说语法, 插入时间好像需要 to_date 把时间yyyy-mm-dd hh24-mi-ss 指定为格式 再插2009-02-07 12:10:30哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式