对于 PreparedStatement 或 CallableStatement,方法 executeQuery() 不能带有参数
今天在学习JDBC过程中,运行在运用PreparedStatement中的executeQuery方法一直报错。
代码如下
import java.sql.*;
class Demo5{
static final String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=测试";
static final String USER = "sa";
static final String PASSWORD = "";
public static void main(String[] args) {
Connection con = null;
PreparedStatement pstmt = null;
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(URL, USER, PASSWORD);
String sql = "UPDATE test SET Number = ?";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, 1);
pstmt.setInt(1, 2);
int rows = pstmt.executeUpdate();
System.out.println("Rows impacted: " + rows);
sql = "SELECT * FROM test";
ResultSet rs = pstmt.executeQuery(sql); //程序报错
while(rs.next()){
String id = rs.getString("id");
int number = rs.getInt("Number");
System.out.println(id + " " + number);
}
con.close();
pstmt.close();
rs.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
其中这一段代码一直报错
sql = "SELECT * FROM test";
ResultSet rs = pstmt.executeQuery(sql); //程序报错
将这段代码改为下面所示之后便可以正常运行
sql = "SELECT * FROM test";
pstmt = con.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();