Я пытаюсь подключиться к базе данных Microsoft SQl Server 2008, используя проверку подлинности Windows. Я загрузил драйвер JDBC для MS SQL Server и добавил его в свой CLASSPATH.
Ниже приведен мой код закрытия. Независимо от того, что я делаю, я получаю java.sql.SQLException: не найден подходящий драйвер для jdbc: sqlserver
(ns Test)
(def db {:classname "com.microsoft.jdbc.sqlserver.SQLServerDriver"
:subprotocol "sqlserver"
:subname "server_name"
:DatabaseName "database_name"
:integratedSecurity true
})
(use 'clojure.contrib.sql)
(with-connection db
(with-query-results rs ["SELECT * FROM sys.objects"] (prn rs)))
Я проверил, что у меня есть доступ к базе данных, мой путь к классам правильный, у меня загружена правильная версия JDBC. Может кто-нибудь мне помочь.
Заранее спасибо
предшествующие ответы все корректны и работают просто великолепно. Однако сообщение довольно старо и там существуют более оптимальные варианты. Следовательно я думал, что будет иметь смысл обновлять сообщение для людей, ищущих решение (как я был).
оказывается, что clojure.java.jdbc
"Стабильно" (больше не "Активный"). Это было эффективно заменено seancorfield/next.jdbc
.
Используя next.jdbc
довольно просто, и больше информации может быть найдено на странице проекта https://github.com/seancorfield/next-jdbc:
(require '[next.jdbc :as jdbc])
(def db {:dbtype "mssql"
:dbname "database-name"
:host "host" ;;optional
:port "port" ;;optional
:user "sql-authentication-user-name"
:password "password"})
(def con (jdbc/get-connection db))
(jdbc/execute! con ["select * from sys.objects where type = 'U'"])
:dependencies [[seancorfield/next.jdbc "1.0.10"]]
[com.microsoft.sqlserver/mssql-jdbc "7.4.1.jre11"]]
Примечание: Загрузка mssql-jdbc драйвер, который удовлетворяет Вашей jre версии и помещает ее в папку ресурсов Вашего leiningen проекта или добавляет путь к драйверу в :dependencies [<path-here>]
в Вашем project.clj