4

次のコードがあります。

Connection conn = null;
    Statement stmt = null;

    // MySQL connection details.
    String username = ("username");
    String password = ("password");
    String url = ("jdbc:derby://localhost:1527/OnlineLibrary");

    try {

        // Connect to database. 
        Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();               
        conn = DriverManager.getConnection (url, username, password);            
        stmt = conn.createStatement();

        // Get data.
        String query = ("SELECT PersonNo, Forename, Surname FROM Person;");                       
        ResultSet rs = stmt.executeQuery(query);               
        while (rs.next()) {                
            System.out.println("Person: no: " + rs.getInt("PersonNo") + " name: " + rs.getString("Forename") + " " + rs.getString("Surname"));
        }                 

        // Disconnect from database.
        stmt.close();
        conn.close();
    }
    catch(Exception ex) {
        Java_Utils.printStackTrace("Error connecting to database", ex, true);    
    }        

それは私に与えます:

Error connecting to database
org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
org.apache.derby.client.am.Statement.executeQuery(Unknown Source)
misc.Simple_JDBC_Test.main(Simple_JDBC_Test.java:32)

私にはすべてが順調に思えます。接続プールを使用して DB に接続できますが、上記のエラーがわかりません。

4

2 に答える 2

1

@モーガン氏、
Statement の代わりに PreparedStatement を使用すると、置換を意味します

ResultSet rs = stmt.executeQuery(クエリ);

ProblemStatement pStmt = dbConnection.prepareStatement(クエリ);

結果セット r = pStmt.executeQuery();

これを行った後、出力を表示してください!

于 2014-03-14T08:54:16.797 に答える
1

セミコロンを削除します。あなたの声明の最後に署名してください:

String query = ("SELECT PersonNo, Forename, Surname FROM Person");

次に、関連するクエリをOnLineLibraryデータベースで直接実行して、出力を確認し、構文が正しいかどうかを確認します。

SELECT PersonNo, Forename, Surname FROM Person
于 2014-03-14T09:08:10.673 に答える