【问题标题】:Prepared Statement does not insert [closed]准备好的语句不插入[关闭]
【发布时间】: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


【解决方案1】:
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");

检查“?”准备好的报表索引。你有 6 ,但你只需要 5

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 2014-03-16
    相关资源
    最近更新 更多