加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

使用Clojure连接到Microsoft SQL Server

发布时间:2020-12-14 04:32:18 所属栏目:Windows 来源:网络整理
导读:我正在使用 Windows身份验证连接到Microsoft SQl Server 2008数据库. 我已经下载了MS SQL Server的JDBC驱动程序,并将其添加到我的CLASSPATH. 以下是我的clojure代码.无论我做什么我得到java.sql.SQLException:没有适合的驱动程序找到jdbc:sqlserver (ns Te
我正在使用 Windows身份验证连接到Microsoft SQl Server 2008数据库.
我已经下载了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版本下载.有人可以帮我吗

提前致谢

连接到数据库

在后来的软件版本(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 "localhostsqlexpress"

配置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/"}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读