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

往用odbc插入数据库,从oracle里能查到最近执行的sql,但是数据库记录没增加。

https://img2.mukewang.com/5b826167000108f408000306.jpg

而且最近执行的那条SQL:INSERT into "wchong_test" ("name","age")values(:1,:2),单独在客户端执行这条SQL会报错:[Err] ORA-01008: not all variables bound。

慕田峪4524236
浏览 1017回答 2
2回答

郎朗坤

如果executeUpdate返回1数据库没有记录,那我只能想到事务了,确认事务有成功提交。INSERT into "wchong_test" ("name","age")values(:1,:2):1/:2 感觉是命名参数啊,类似于spring jdbc中的Named Parameter,很显示你直接执行这条SQL是有问题的:1这不是一个正确数据类型,要使用':1'引号括起来。

肥皂起泡泡

可能是connection的自动提交被禁用了,如conn.setAutoCommit(false);可以在executeUpdate增加下面的语句,然后看数据库中是否有记录产生。conn.commit();另外,oracle看到的带:1 :2的语句,很明显是在java端使用了PreparedStatement,因此这个语句在oracle中是不能直接执行的,可以从v$sql_bind_capture中使用sql_id条件,查找具体绑定变量的值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Oracle