0


mysql db に接続するための次のコードがあります。

public static void insertIntoDatabase(String code,String name,String temp,String hum,String del) {
    Connection con = null;
    ResultSet rs = null;

    String url = "jdbc:mysql://localhost:3306/test";
    String user = "root";
    String password = "";

    try {
        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection(url, user, password);
        rs = con.prepareStatement("CREATE TABLE IF NOT EXISTS AiportDetails(code VARCHAR(50) PRIMARY KEY, " +
                "name VARCHAR(50), temp VARCHAR(50), hum VARCHAR(50), del VARCHAR(50)) ENGINE=InnoDB;").executeQuery();
        rs = con.prepareStatement("INSERT INTO AirportDetails(code,name,temp,hum,del) VALUES("+code+","+
                name+","+temp+","+hum+","+del+");").executeQuery();
    } catch (SQLException ex) {
        ex.printStackTrace();
    } finally {
        try {
            if (rs != null) {
                rs.close();
            }
            if (con != null) {
                con.close();
            }

        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

次のエラーが表示されます。

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver


オンラインで見つけた一般的な修正は次のとおりです。

1. The driver is not in the /WEB-INF/lib folder.
2. The url is wrong.

これが私のコードに当てはまるとは思いません。
ありがとうございました。

4

1 に答える 1

3

これは、最初の接続を確立する前にドライバーをロードしなかった場合に発生する可能性があります。

Class.forName("com.mysql.jdbc.Driver");

確かに、ドライバーは/WEB-INF/libではなく に入る必要があり/WEB-INFます。ところで、いくつかの SQL インジェクション ホールがあります。を見てくださいPreparedStatementfinallyが例外をスローしたときconに閉じられることはありません。rs.close()

于 2012-05-16T06:05:04.480 に答える