【问题标题】:How to validate result set for multiple prepared statement query execution如何验证多个准备好的语句查询执行的结果集
【发布时间】:2013-12-03 10:43:15
【问题描述】:

我创建了一个方法saveTransaction(ArrayList sessionList),它将保存在sessionList中的ItemBean参数保存到TRN_CART表中: 我编写了以下代码片段来将 bean 数据插入到表中:

     ResultSet rs=null;
     String sql="INSERT INTO TRN_CART VALUES (?,?,?,?)"; 
     PreparedStatement ps=useCon.prepareStatement(sql);
     for(ItemBean beanObj: sessionList){
        ps.setString(1, beanObj.getItemId());
        ps.setString(2, beanObj.getItemName());
        ps.setInt(3, beanObj.getItemPrice());
        ps.setInt(4, beanObj.getItemQuantity());
        rs=ps.executeQuery();
        if(rs==null){           // If any query row execution fails
           returnFlag=false;    // I want to load error page thus setting flag as false
           }

我不确定我是否以正确的方式验证结果集。 请建议我执行此任务的更好方法。 如果所有行插入成功,我还想将返回标志设置为 true。 建议我修改。

【问题讨论】:

  • INSERT 不会返回 ResultSet

标签: java prepared-statement javabeans resultset


【解决方案1】:

ResultSet 用于选择查询,但您正在插入。使用executeUpdate() 进行插入、删除或更新(DDL 命令)

excuteUpdate() 也返回整数,所以如果你想检查数据是否插入到数据库中,请执行if(ps.executeUpdate()>0)

【讨论】:

  • 我用过 if(ps.executeQuery()!=null){ returnFlag=false;仍然这似乎不是正确的方法。请给我建议解决方案
  • @RupeshAgrahari 你没有任何选择查询那么为什么结果集
  • 那么通过使用 if(ps.executeQuery(sql)) 可以完成任务吗??
  • @RupeshAgrahari 不可能
  • @RupeshAgrahari 正如 JqueryLearner 指出的那样,您应该使用 executeUpdate() 并检查返回的 int 值以检查是否插入了任何行。为什么要坚持使用executeQuery()
最近更新 更多