嗨,我是JDBC的新手,在构造JDBC时遇到了executeQuery
错误。我只想在student
表中显示所有信息。我使用了prepareStatement
,因为没有,所以没有设置任何参数。使用createStatement
时可以使用。
这是我得到的错误
The method executeQuery(String) in the type Statement is not applicable for the arguments ()
如何使用
prepareStatement
使它正常工作。public class Test3 extends JFrame{
Vector rowData,columnNames;
JTable jt = null;
JScrollPane jsp = null;
Connection myConn = null;
Statement myStmt = null;
ResultSet myRs = null;
//constructor
public Test3() {
columnNames = new Vector();
rowData = new Vector();
columnNames.add("Student_ID");
columnNames.add("Name");
columnNames.add("Gender");
columnNames.add("Age");
columnNames.add("DOB");
columnNames.add("Major");
try {
//1. Get a connection to database
Connection myConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/stu?useSSL=false","root","1972");
//2. Create a prepareStatement
myStmt = myConn.prepareStatement("Select * from student");
// 3. Set the parameters
// no need to set the parameters, because there is not parameter needed to be set
// 4. Execute SQL query
***myRs = myStmt.executeQuery();***
while(myRs.next()) {
Vector col = new Vector();
col.add(myRs.getString(1));
col.add(myRs.getString(2));
col.add(myRs.getString(3));
col.add(myRs.getInt(4));
col.add(myRs.getString(5));
col.add(myRs.getString(6));
rowData.add(col);
}
} catch(Exception e) {
e.printStackTrace();
} finally {
try {
if(myRs!=null) myRs.close();
if(myStmt!=null) myStmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Test3 test3 = new Test3();
}
}
最佳答案
您使用了错误的方法。对于Statement,executeQuery的定义是
ResultSet executeQuery(String sql) throws SQLException;
对于PreparedStatement,定义为ResultSet executeQuery() throws SQLException;
因此,您可以使用PreparedStatement myStmt = null;
或myRs = ((PreparedStatement )myStmt).executeQuery();