索引::1 处缺少 IN 或 OUT 参数的 Java SQL 异常

标签 java oracle oracle11g sqlexception

这似乎是一个常见的问题,但没有具体的答案。我以前从未遇到过这个问题。代码在这里:

public static Reservation retrieveReservation()throws IOException,
   SQLException{
   Reservation testRsv = new Reservation();
   try {
      Connection con = null;

      Class.forName("oracle.jdbc.driver.OracleDriver");
      con=DriverManager.getConnection(
         "jdbc:oracle:thin:@wewe",
         "ewew",
         "sdsds");
      con.setAutoCommit(false);
      try {
         PreparedStatement prepareStatement = con.prepareStatement("SELECT *
         FROM SMD_RESERVATION_INSTANCES WHERE id = ?");
         ResultSet rset = prepareStatement.executeQuery();
         prepareStatement.setString(1, localIDTest);
         prepareStatement.executeUpdate();
         prepareStatement.close();
         con.commit();
         if(rset.next()){
            retrievedID = rset.getString("ID");
            Blob blob = rset.getBlob("RESERVATIONINST");
            status = rset.getString("STATUS");
            long blobLength = blob.length();
            int pos = 1;   // position is 1-based
            int len = 10;
            byte[] bytes = blob.getBytes(pos, len);
            InputStream is = blob.getBinaryStream();
            ObjectInputStream ois = new ObjectInputStream(is);
            testRsv = (Reservation)ois.readObject();
         }

         // System.out.println("Map Size: " + retrievedmap.size());
         rset.close();
         con.close();
      }catch(IOException ioe){
         System.err.print(ioe);
      }
   }catch(ClassNotFoundException cnfe){
      System.err.print(cnfe);
   }
   return testRsv;
}

它产生以下内容:

java.sql.SQLException: Missing IN or OUT parameter at index:: 1

知道为什么吗? 我重新检查了变量作为参数,即 ID,它不为 null 并且有一个值。

最佳答案

你必须改变语句的顺序,

PreparedStatement prepareStatement = con.prepareStatement("SELECT * FROM 
            SMD_RESERVATION_INSTANCES WHERE id = ?");
  prepareStatement.setString(1, localIDTest);
  ResultSet rset = prepareStatement.executeQuery();

删除这些语句(不要在阅读时关闭连接)。

prepareStatement.executeUpdate();
prepareStatement.close();
con.commit();

关于索引::1 处缺少 IN 或 OUT 参数的 Java SQL 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8454896/

相关文章:

java - Files.isDirectory NullPointerException

sql - 改变表添加列作为选择语句

java - 如何通过jsoup登录以防弹出窗口?

java - 以更简单的方式编写代码

sql - 如何在 Oracle 中创建一个临时表作为另一个表的副本?

c# - OracleConnection.Open 抛出 ORA-12541 TNS 没有监听器

oracle - 如何将新添加的列的值添加到 Oracle 11g 中的所有现有行

sql - 尝试避免重复时缺少NULL关键字错误

java - 删除实体策略

java - 使用oracle webservices代理时出现错误: java. lang.NoClassDefFoundError: org/codehaus/stax2/XMLInputFactory2