84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
往用odbc插入数据库,从oracle里能查到最近执行的sql,但是数据库记录没增加。而且最近执行的那条SQL:INSERT into "wchong_test" ("name","age")values(:1,:2),单独在客户端执行这条SQL会报错:[Err] ORA-01008: not all variables bound。
ringa_lee
可能是connection的自动提交被禁用了,如
conn.setAutoCommit(false);
可以在executeUpdate增加下面的语句,然后看数据库中是否有记录产生。
conn.commit();
另外,oracle看到的带:1 :2的语句,很明显是在java端使用了PreparedStatement,因此这个语句在oracle中是不能直接执行的,可以从v$sql_bind_capture中使用sql_id条件,查找具体绑定变量的值。
如果executeUpdate返回1数据库没有记录,那我只能想到事务了,确认事务有成功提交。
executeUpdate
1
事务
INSERT into "wchong_test" ("name","age")values(:1,:2)
:1/:2 感觉是命名参数啊,类似于spring jdbc中的Named Parameter,很显示你直接执行这条SQL是有问题的:1这不是一个正确数据类型,要使用':1'引号括起来。
:1/:2
spring jdbc
Named Parameter
:1
':1'
考虑两个问题
1.你的SQL使用了PreparedStatement,是否服务端直接拿这句SQL进行数据库操作,而非作为PreparedStatement使用?
2.如果你服务端没问题,那么查询是否能正常查询?考虑一下是不是没有添加事务管理,我以前经常写service时忘记加@Transaction,于是插入删除修改操作全部是执行没提交,不报错,数据库数据没变动,最后才发现忘了加spring的事务管理,你也可以查一下是不是这个问题,当然你不一定用的spring的事务管理,但道理相似
最后,你直接在Navicat里执行这句肯定是没效果的,都是占位符你想查啥?插入啥?显然是不对的,要想直接试SQL就把占位的改成单引号包起来的测试数据。
insert into的tableName是不需要加""的吧
可能是connection的自动提交被禁用了,如
可以在executeUpdate增加下面的语句,然后看数据库中是否有记录产生。
另外,oracle看到的带:1 :2的语句,很明显是在java端使用了PreparedStatement,因此这个语句在oracle中是不能直接执行的,可以从v$sql_bind_capture中使用sql_id条件,查找具体绑定变量的值。
如果
executeUpdate
返回1
数据库没有记录,那我只能想到事务
了,确认事务有成功提交。:1/:2
感觉是命名参数啊,类似于spring jdbc
中的Named Parameter
,很显示你直接执行这条SQL是有问题的:1
这不是一个正确数据类型,要使用':1'
引号括起来。考虑两个问题
1.你的SQL使用了PreparedStatement,是否服务端直接拿这句SQL进行数据库操作,而非作为PreparedStatement使用?
2.如果你服务端没问题,那么查询是否能正常查询?考虑一下是不是没有添加事务管理,我以前经常写service时忘记加@Transaction,于是插入删除修改操作全部是执行没提交,不报错,数据库数据没变动,最后才发现忘了加spring的事务管理,你也可以查一下是不是这个问题,当然你不一定用的spring的事务管理,但道理相似
最后,你直接在Navicat里执行这句肯定是没效果的,都是占位符你想查啥?插入啥?显然是不对的,要想直接试SQL就把占位的改成单引号包起来的测试数据。
insert into的tableName是不需要加""的吧