1
public class ConnectionManager {
    private static String url = "jdbc:mysql://localhost:3306/prototypeeop";    
    private static String driverName = "com.mysql.jdbc.Driver";   
    private static String usernsme = "root";   
    private static String pasword = "triala";
    private static Connection con;
    private static String url;

    public static Connection getConnection() {
        try {
            Class.forName(driverName);
            try {
                con = DriverManager.getConnection(url, username, password);
            } catch (SQLException ex) {
                // log an exception. fro example:
                System.out.println("Failed to create the database connection."); 
            }
        } catch (ClassNotFoundException ex) {
            // log an exception. for example:
            System.out.println("Driver not found."); 
        }
        return con;
    }
}

ねえ、私はこのクラスを作成していますが、「対応する try ステートメントの本体で classnotfound 例外がスローされることはありません」というメッセージが表示されますか? これは私の try と catch ブロックに関係しており、何が問題なのか疑問に思っています。試行エラーについては、「報告されていない例外 java.lang.classnotfound 例外は、スローされる前にキャッチまたは宣言する必要があります」と書かれています。

明らかな質問で申し訳ありませんが、ブロックを試してキャッチするのも初めてです。SQLException が java.sql パッケージで宣言されているため、このタイプのエラーを宣言していないことに関係があることはわかっています。したがって、なぜエラーが発生しないのですか。(JDBC の接続クラスを使用しているため、コードに「java.sql パッケージのインポート」を含めます)。クラスは基本的に接続をセットアップし、その接続を返します。

4

3 に答える 3

2

あなたのテキストは非常に理解しにくいです...私があなたの問題を正しく理解していれば、これが答えかもしれません:

DriverManager.getConnection は、この例外をスローする可能性があると宣言しているため、SQLException をキャッチする必要があります。Class.forName によって ClassNotFoundException がスローされる場合があるため、これもキャッチする必要があります。ただし、2 つの代わりに 2 つの catch 句で 1 つの try ブロックを使用することもできます。

問題をもう一度説明していただけると助かります。

于 2012-06-07T20:10:35.057 に答える
1

ClassNotFoundException例外がスローされます。新しい.javaファイルを作成してを参照してください。以下のコードを新しいJavaファイルにコピーしてみました。

import java.sql.DriverManager;
import java.sql.SQLException;

import com.mysql.jdbc.Connection;

public class ConnectionManager {
    private static String url = "jdbc:mysql://localhost:3306/prototypeeop";
    private static String driverName = "com.mysql.jdbc.Driver";
    private static String usernsme = "root";
    private static String pasword = "triala";
    private static Connection con;

    public static Connection getConnection() {
        try {
            Class.forName(driverName);
            try {
                con = (Connection) DriverManager.getConnection("", "", "");
            } catch (SQLException ex) {
                // log an exception. fro example:
                System.out.println("Failed to create the database connection.");
            }
        } catch (ClassNotFoundException ex) {
            // log an exception. for example:
            System.out.println("Driver not found.");
        }
        return con;
    }
}
于 2012-06-07T20:17:04.733 に答える
0

このコードがエディターから直接のものである場合、この問題を修正する必要があります

あなたは宣言しusernsmepasword

private static String usernsme = "root";
private static String pasword = "triala";

しかし、使用usernameしてpassword

con = DriverManager.getConnection(url, username, password);

おそらく最初の行を

private static String username = "root";
private static String password = "triala";

この問題も解消されます。

このコードがあなたのエディタからのものではない場合、助けが必要な場合はおそらく実際のコードを提供する必要があります。

于 2012-06-07T20:20:46.637 に答える