0

NetBeans 8.1 で単純な HelloWorld アプリケーションを構築しています。シンプルに動作する必要があり、コンパイルして実行するとすぐに、MySQL を使用してデータベース アカウントのテーブル acc のすべてのデータがロードされます。

プロジェクト ライブラリに Connector/J jar ファイルを含め、MySQL に接続しましたが、Class.forName(com.mysql.jdbc.Driver).newInstance(); コードの一部の行に「報告されていない例外 InstantiationException; キャッチするか、スローするように宣言する必要があります」と表示されており、何をすべきか正確にはわかりません。私はここで立ち往生しています。

これが私のコードです

package learning_jdbc;

import java.sql.*;

public class Hello {
    Connection connection;
    private void displaySQLErrors(SQLException e) {
        System.out.println("SQLException: " + e.getMessage());
        System.out.println("SQLState: " + e.getSQLState());
        System.out.println("VendorError: " + e.getErrorCode());
    }

    public Hello() {
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
        } catch (ClassNotFoundException e) {
            System.out.println("Class not found.");
        }
    }

    public void connectToDB() {
        try {
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/accounts","root","thejoker");
        } catch(SQLException e) {
            displaySQLErrors(e);
        }
    }

    public void executeSQL() {
        try (Statement statement = connection.createStatement();
                    ResultSet rs = statement.executeQuery("SELECT * FROM acc")) {
            while (rs.next()) {
                System.out.println(rs.getString(1));
            }
            connection.close();
        } catch(SQLException e) {
            displaySQLErrors(e);
        }
    }

    public static void main(String[] args) {
        Hello hello = new Hello();
        hello.connectToDB();
        hello.executeSQL();
    }

}
4

3 に答える 3

1

javae 7以降を使用してください。その呼び出しさえ必要ありません。完全に削除できます Class.forName("com.mysql.jdbc.Driver").newInstance();

于 2016-04-30T13:59:05.073 に答える
1

2007 年に JDBC 4 が登場して以来、この部分はまったく必要newInstance()ありませんでした。Class.forName()

取り除くだけです。

ただし、あなたの質問には、Javadoc for をよく見ても解決できなかったものは何もありませんClass.newInstance()。チェック例外は何らかの方法で処理する必要があります。

于 2016-04-30T14:17:30.677 に答える