我正在使用
Windows身份验证连接到Microsoft sql Server 2008数据库.
我已经下载了MS sql Server的JDBC驱动程序,并将其添加到我的CLASSPATH.
我已经下载了MS sql Server的JDBC驱动程序,并将其添加到我的CLASSPATH.
以下是我的clojure代码.无论我做什么我得到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版本下载.有人可以帮我吗
提前致谢
连接到数据库
原文链接:https://www.f2er.com/windows/364011.html在后来的软件版本(Clojure 1.6,Microsoft sql Server 2012和sql Server的Microsoft JDBC驱动程序4.0)中,Ash发布的代码仅适用于这些修改.我也根据目前的Clojure代码样式指南的知识更新了它.
(require '[clojure.java.jdbc :as jdbc]) ;; you can optionally specify :host and :port to override the defaults ;; of "127.0.0.1" and 1433 respectively: (def db-spec {:dbtype "mssql" :dbname "database-name" :user "sql-authentication-user-name" :password "password"}) (let [rows (jdbc/query db-spec ["select * from sys.objects where type = 'U'"])] (doseq [row rows] (println (:name row)))))
在同一台计算机上有多个sql Server实例的情况下,可以将实例名称指定为:host的一部分(此示例为同一台计算机上的sql Server Express的默认实例名称):
:host "localhost\\sqlexpress"
配置Leiningen
要使Leiningen与Microsoft JDBC驱动程序正常工作,请在project.clj中将以下内容与defproject合并:
:dependencies [[org.clojure/java.jdbc "0.6.1"] [sqljdbc4/sqljdbc4 "4.0"]]
由于Microsoft JDBC驱动程序在标准Maven存储库中不可用,因此目前我们有两种解决方案:lein-localrepo和Apache Archiva.
雷音,localrepo
lein-localrepo是一个Leiningen插件,可以使用当地的Maven仓库.安装完成后,需要将sqljdbc4.jar放到一些本地文件夹中,并运行以下命令:
$lein localrepo coords <PATH-TO-THE-FILE>/sqljdbc4-4.0.jar $lein localrepo install sqljdbc4-4.0.jar sqljdbc4/sqljdbc4 "4.0"
Apache Archiva
Archiva是一个功能齐全的存储库管理软件,因此需要安装并运行服务.当存储库与Clojure世界或多个开发人员之间的项目共享时,情况非常方便.
设置完成后,通过其Web界面上传sqljdbc4.jar,并在project.clj中添加以下defproject:
:repositories {"http://localhost:8080/repository/internal/"}