2016-11-23 67 views
0

嗨,我是JDBC新手,在構建JDBC時遇到executeQuery錯誤。我只想顯示student表中的所有信息。我用prepareStatement,我沒有設置任何參數,因爲我沒有。它在使用createStatement時有效。executeQuery ERROR for JDBC

這是我得到

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

} 
+1

你不說你的錯誤是什麼,我假設它不編譯,因爲該方法在Statement上不存在。將準備好的語句分配給PreparedStatement類型的變量。 –

+0

嘗試使用'PreparedStatement myStmt = null;'而不是'Statement myStmt = null;'。 –

回答

1

您使用了錯誤的方法。對於聲明的executeQuery的定義是 ResultSet executeQuery(String sql) throws SQLException; 對於的PreparedStatement,該difinition是ResultSet executeQuery() throws SQLException;

所以,你既可以使用PreparedStatement myStmt = null;myRs = ((PreparedStatement)myStmt).executeQuery();