Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 准备好的声明中的例外情况_Java_Sql_Jdbc_Prepared Statement - Fatal编程技术网

Java 准备好的声明中的例外情况

Java 准备好的声明中的例外情况,java,sql,jdbc,prepared-statement,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 wher

下面是代码

     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();

对于上面的示例,我得到“错误:java.sql.SQLException:驱动程序不支持此函数”。可能是什么问题?

您误用了
PreparedStatement
接口。使用
PreparedStatement
s时,您应该准备语句和查询,绑定所有必要的参数,然后在不使用任何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

您误用了
PreparedStatement
界面。使用
PreparedStatement
s时,您应该准备语句和查询,绑定所有必要的参数,然后在不使用任何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

Exception
指向哪一行?您是否尝试过
pst.executeQuery()
?不需要传递SQL字符串。并非所有数据库都支持问号,这后面是什么db?这
Exception
指向哪一行?您是否尝试过
pst.executeQuery()
?不需要传递SQL字符串。并非所有数据库都支持问号,这背后是什么数据库?