2016-11-23 3 views
0

Hallo, ich bin neu in JDBC und rannte in executeQuery Fehler beim Erstellen der JDBC. Ich möchte nur alle Informationen in der student Tabelle anzeigen. Ich habe die prepareStatement verwendet und ich habe keinen Parameter eingestellt, da ich nicht habe. Es funktioniert, wenn Sie createStatement verwenden.executeQuery FEHLER für JDBC

Dies ist der Fehler, den ich

immer bin
The method executeQuery(String) in the type Statement is not applicable for the arguments() 

Wie kann ich es bekommen arbeiten prepareStatement verwenden.

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

Sie nicht sagen, was Ihr Fehler ist, ich bin Unter der Annahme, dass es keine Becsuse kompiliert, existiert die Methode nicht in der Anweisung. Ordnen Sie die vorbereitete Anweisung einer Variablen vom Typ PreparedStatement zu. –

+0

Verwenden Sie 'PreparedStatement myStmt = null;' anstelle von 'Statement myStmt = null;'. –

Antwort

1

Sie haben die falsche Methode verwendet. Für Statement, die Definition von executeQuery ist ResultSet executeQuery(String sql) throws SQLException; für PreparedStatement ist die difinition ResultSet executeQuery() throws SQLException;

So können Sie entweder PreparedStatement myStmt = null; oder myRs = ((PreparedStatement)myStmt).executeQuery();

Verwandte Themen