Подключение к Microsoft SQL Server с помощью Clojure

Я пытаюсь подключиться к базе данных 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. Может кто-нибудь мне помочь.

Заранее спасибо

14
задан Ash 13 June 2011 в 12:55
поделиться

1 ответ

предшествующие ответы все корректны и работают просто великолепно. Однако сообщение довольно старо и там существуют более оптимальные варианты. Следовательно я думал, что будет иметь смысл обновлять сообщение для людей, ищущих решение (как я был).

оказывается, что 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'"])

конфигурация Leiningen

: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

0
ответ дан 1 December 2019 в 10:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: