【发布时间】:2013-12-24 12:02:27
【问题描述】:
我是 JDBC 新手,正在尝试以下代码。找不到其中的错误:
try{
Connection con = ConnectionProvider.getCon();
stmt=con.prepareStatement("insert into create_request values((select count(reqno) from create_request)+1,?,?,?,?,?)");
stmt.setString(1,obj_Leaverequest.getUser_name());
stmt.setString(2,obj_Leaverequest.getLeave_Type());
stmt.setInt(3,obj_Leaverequest.getLeave_Units());
stmt.setString(4,obj_Leaverequest.getLeave_Reason());
stmt.setString(5,"pending");
count=stmt.executeUpdate();
if(count>0){
status=true;
}
}
更新: 如果我像这样替换我的代码,它会起作用:
String sqQuery="insert into create_request values (?,?,?,?,?,?)";
stmt=con.prepareStatement(sqQuery);
stmt.setString(1,"(select count(reqno) from create_request)+1");
stmt.setString(2,obj_Leaverequest.getUser_name());
stmt.setString(3,obj_Leaverequest.getLeave_Type());
stmt.setInt(4,obj_Leaverequest.getLeave_Units());
stmt.setString(5,obj_Leaverequest.getLeave_Reason());
stmt.setString(6,"pending");
Getter 工作正常,我可以打印它们的值。我想我的查询有误。请指出我的错误。提前致谢!!
【问题讨论】:
-
你需要提交连接或者使用事务。
-
@SureshkumarPanneerselvan 找不到你。你能简单给我打电话吗?我应该提交插入语句吗?
-
将
con.commit();放在executeUpdate();之后。看到这个:docs.oracle.com/javase/7/docs/api/java/sql/… -
@kordirko 我仍然无法添加该行。我正确地写了查询吗?
-
您将 catch 块留空。这意味着如果发生异常,您甚至都不会注意到它。切勿将 catch 块留空。将以下行添加到您的 catch 块中:
e.printStackTrace(); throw new RuntimeException(e);
标签: oracle jdbc insert prepared-statement