预备陈述中的例外情况

Imp*_*ter 1 java sql jdbc prepared-statement

以下是代码.

     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     conn = DriverManager.getConnection("jdbc:odbc:cse");
     //Statement stmt;
     ResultSet rset;
     //stmt = conn.createStatement();

     String sql = " Select * from registration where id=?";
     PreparedStatement pst = conn.prepareStatement(sql);
     pst.setString(1, "101");
     rset = pst.executeQuery(sql);

     while (rset.next()) {
         arr.add(rset.getInt("id"));
         arr.add(rset.getString("first"));
         arr.add(rset.getString("last"));
         arr.add(rset.getInt("age"));
    }

  System.out.println(arr);
  pst.close();
  conn.close();
Run Code Online (Sandbox Code Playgroud)

对于上面得到的"错误:java.sql.SQLException:驱动程序不支持此功能".可能是什么问题?

Mur*_*nik 7

你在滥用PreparedStatement界面.使用PreparedStatements时,应该使用查询准备语句,绑定所有必需的参数,然后在没有任何SQL的情况下执行它- 这将导致语句执行先前准备的SQL语句:

 String sql = "Select * from registration where id=?";
 PreparedStatement pst = conn.prepareStatement(sql);
 pst.setString(1, "101");
 rset = pst.executeQuery(); // Note - No args in the executeQuery call
Run Code Online (Sandbox Code Playgroud)