为了账号安全,请及时绑定邮箱和手机立即绑定

用odbc往oracle插入记录,excuteUpdate返回1,数据库里记录没有增加。

用odbc往oracle插入记录,excuteUpdate返回1,数据库里记录没有增加。

慕田峪4524236 2018-08-16 08:19:56
往用odbc插入数据库,从oracle里能查到最近执行的sql,但是数据库记录没增加。而且最近执行的那条SQL:INSERT into "wchong_test" ("name","age")values(:1,:2),单独在客户端执行这条SQL会报错:[Err] ORA-01008: not all variables bound。
查看完整描述

2 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

如果executeUpdate返回1数据库没有记录,那我只能想到事务了,确认事务有成功提交。

INSERT into "wchong_test" ("name","age")values(:1,:2)

:1/:2 感觉是命名参数啊,类似于spring jdbc中的Named Parameter,很显示你直接执行这条SQL是有问题的:1这不是一个正确数据类型,要使用':1'引号括起来。


查看完整回答
反对 回复 2018-08-26
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

可能是connection的自动提交被禁用了,如

conn.setAutoCommit(false);

可以在executeUpdate增加下面的语句,然后看数据库中是否有记录产生。

conn.commit();

另外,oracle看到的带:1 :2的语句,很明显是在java端使用了PreparedStatement,因此这个语句在oracle中是不能直接执行的,可以从v$sql_bind_capture中使用sql_id条件,查找具体绑定变量的值。


查看完整回答
反对 回复 2018-08-26
  • 2 回答
  • 0 关注
  • 1004 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信