«Не найдено имя источника данных и нет драйвера по умолчанию» - PullRequest
1 голос
/ 19 марта 2011

код подключения Java к MySQL:

        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        System.out.println("Driver loaded");
        con = DriverManager.getConnection(url, "root", "sai");
        stmt = con.createStatement();
        System.out.println("Connection established");

после выполнения кода выше

"Driver loaded" message printed on console but,
after that following exception is printed - 
[Microsoft][ODBC Driver Manager] 
Data source name not found and no default driver specified

я уже создал DSN (драйвер MYSQL ODBC 3.51) для проекта

Пожалуйста, скажите мне решение вышеуказанной проблемы.

Ответы [ 3 ]

1 голос
/ 19 марта 2011

Если это возможно, не используйте драйвер JdbcOdbc, а чистый драйвер JDBC для вашей базы данных!

Для вопроса о том, как зарегистрировать драйвер, из javadocs для java.sql, интерфейсDriver:

Настоятельно рекомендуется, чтобы каждый класс Driver был небольшим и автономным, чтобы класс Driver можно было загружать и запрашивать без внесения огромного количества вспомогательного кода.

КогдаКласс Driver загружен, он должен создать свой экземпляр и зарегистрировать его в DriverManager.Это означает, что пользователь может загрузить и зарегистрировать драйвер, вызвав

Class.forName("foo.bah.Driver")

Отдельный вызов 'newInstance' или registerDriver '- это программирование Cargo-Cult.

1 голос
/ 19 марта 2011

"Если это возможно, не используйте драйвер JdbcOdbc, а просто драйвер JDBC для вашей базы данных!"

Примером чистого JDBC-драйвера MySql будет класс com.mysql.jdbc.Driver , найденный в файле mysql-connector-java-5.xxjar , доступном для загрузки. от MySQL .

Хорошее объяснение различий между JDBC и JDBC-ODBC доступно в wikipedia

0 голосов
/ 19 марта 2011

Прошло много времени с тех пор, как я это сделал, но вы можете попытаться явно зарегистрировать свой драйвер в классе DriverManager. Это означает, что вы не зависите от того, что невидимо происходит в фоновом режиме.

DriverManager.registerDriver((Driver) 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance());
con = DriverManager.getConnection(url, "root", "sai");

Это гарантирует, что класс "sun.jdbc.odbc.JdbcOdbcDriver" загружен и подключен к DriverManager.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...