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类型的数据, 请问如何实现呢? 展开
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类型的数据, 请问如何实现呢? 展开
3个回答
展开全部
删掉这行:
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)
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)
展开全部
你要么修改数据字典,把timestamp的格式改成'yyyy-mm-dd hh24:mi:ss'
要么就严格按照当前oracle所支持的格式来插入数据
要么就只能使用to_date函数了
我的oracle默认是的timestamp是这种格式:
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
可以自己修改成想要的格式
要么就严格按照当前oracle所支持的格式来插入数据
要么就只能使用to_date函数了
我的oracle默认是的timestamp是这种格式:
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
可以自己修改成想要的格式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只能说明是格式有问题 或者说语法, 插入时间好像需要 to_date 把时间yyyy-mm-dd hh24-mi-ss 指定为格式 再插2009-02-07 12:10:30哦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询