clojure.java.jdbc
一个用于基于 JDBC 访问数据库的低层 Clojure 封装。该项目状态为“非活跃”。它实际上已被 seancorfield/next.jdbc 取代。
如需查看兼容的高级 DSL 和迁移库,请参阅文档。
曾用名 clojure.contrib.sql。
该库已成熟且稳定。它被广泛使用,并在许多书籍和教程中有所介绍。今后仅会进行关键错误修复(例如安全相关)。基于我使用和维护该库的经验,我创建了一个更快、更现代的 JDBC 封装,名为 next.jdbc。我将其视为 clojure.java.jdbc 的“下一代”产品,但它暴露了不同的 API——我认为这是一个更好的 API。
Documentation
- API Reference (Autogenerated)
- Overview
- Manipulating Data with SQL
- How to Reuse Database Connections
- Using DDL and Metadata
Support
- Mailing List
- #sql on Clojurians Slack
Releases and Dependency Information
最新稳定版本:0.7.12 -- 需要 Clojure 1.7 或更高版本!
CLI/deps.edn 依赖信息:
org.clojure/java.jdbc {:mvn/version "0.7.12"}
Leiningen 依赖信息:
[org.clojure/java.jdbc "0.7.12"]
Maven 依赖信息:
<dependency>
<groupId>org.clojure</groupId>
<artifactId>java.jdbc</artifactId>
<version>0.7.12</version>
</dependency>
注意:Clojure 的早期版本由 clojure.java.jdbc 的旧版本支持:例如,版本 0.6.1 支持 Clojure 1.4 及更高版本。
您还需要添加计划使用的 JDBC 驱动程序的依赖项。以下是 clojure.java.jdbc 已知使用的常见数据库驱动程序的链接(指向 Maven Central):
- Apache Derby
- H2
- HSQLDB
- Microsoft SQL Server jTDS
- Microsoft SQL Server -- 官方 MS 版本
- MySQL
- PostgreSQL
- SQLite
注意:不同版本的数据库驱动程序具有不同的 Java/JVM 版本要求。特别是,Apache Derby 的近期版本至少需要 Java 8,而 H2 的近期版本至少需要 Java 7。Clojure 的持续集成系统使用旧版本,以便测试可以在 Java 6 上运行(参见 pom.xml);本地测试使用 Java 8 上的较新版本。
使用示例
(require '[clojure.java.jdbc :as j])
;; there are many ways to write a db-spec but the easiest way is to
;; use :dbtype and then provide the :dbname and any of :user, :password,
;; :host, :port, and other options as needed:
(def mysql-db {:dbtype "mysql"
:dbname "clojure_test"
:user "clojure_test"
:password "clojure_test"})
(def pg-db {:dbtype "postgresql"
:dbname "mypgdatabase"
:host "mydb.server.com"
:user "myuser"
:password "secret"
:ssl true
:sslfactory "org.postgresql.ssl.NonValidatingFactory"})
;; if the dbtype is not known to clojure.java.jdbc, or you want to override the
;; default choice of JDBC driver class name, you can provide :classname and the
;; name of the class to use:
(def redshift42 {:dbtype "redshift"
:dbname "myredstore"
:classname "com.amazon.redshift.jdbc42.Driver"
...})
;; you can also specify a full connection string if you'd prefer:
(def pg-uri
{:connection-uri (str "postgresql://myuser:secret@mydb.server.com:5432/mypgdatabase"
"?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory")})
(j/insert-multi! mysql-db :fruit
[{:name "Apple" :appearance "rosy" :cost 24}
{:name "Orange" :appearance "round" :cost 49}])
;; ({:generated_key 1} {:generated_key 2})
(j/query mysql-db
["select * from fruit where appearance = ?" "rosy"]
{:row-fn :cost})
;; (24)
开发者信息
-
测试:
- 目前默认情况下,测试仅针对 Derby 和 HSQLDB 这两个进程内数据库运行。
-
若要针对 PostgreSQL 进行测试,请先创建用户和数据库:
$ sudo -u postgres createuser clojure_test -P clojure_test $ sudo -u postgres createdb clojure_test -O clojure_test
-
或者类似地使用 MySQL:
$ mysql -u root mysql> create database clojure_test; mysql> grant all on clojure_test.* to clojure_test identified by "clojure_test"; -
然后使用 TEST_DBS 环境变量运行测试:
$ TEST_DBS="mysql postgres" mvn test -
另请参阅使用
cljCLI 和deps.edn进行多版本测试的run-tests.shshell 脚本!
Change Log
-
未发布的更改
- 更新到最新的 parent pom 和 Clojure 1.11.4 作为依赖
- 更新大多数测试依赖(并更新部分测试以匹配)。
- 移除对 Clojure 1.7 和 1.8 的支持。针对 1.9、1.10、1.11 和 1.12 进行测试。
-
2021-02-01 发布 0.7.12
- 使协议
ISQLValue、ISQLParameter和IResultSetReadColumn可通过元数据扩展。
- 使协议
-
2019-12-24 发布 0.7.11
- 处理事务回滚失败的边缘情况 JDBC-179。
-
2019-08-24 发布 0.7.10
-
2019-02-21 发布 0.7.9
- 修复当数据库不支持生成键时多插入的行为 JDBC-176.
- 添加了对
datafy/nav(在clojure.java.jdbc.datafy命名空间中)的 高度实验性 支持。这包括一种基于约定的外键方法,并借助:schema选项提供一些辅助。此功能可能会发生变化,主要作为信息提供,作为 Clojure 1.10 中新功能的示例。这包括对 JDBC-175 中约定的修复。 - 添加关于将批量操作重写为
insert-multi!的说明,适用于某些驱动程序 JDBC-174. - 支持 Oracle SID 风格的 URL(
dbtype可以是oracle:sid,映射到oracle:thin,并使用:作为dbname值之前的分隔符) JDBC-173.
-
2018-08-13 发布 0.7.8
-
2018-06-23 发布 0.7.7
- 支持在返回生成键作为结果集的操作中使用
:as-arrays?、:result-set-fn和:row-fn(execute!、insert!和insert-multi!) JDBC-169. - 如果您意外调用了期望
db-spec的函数但传递了java.sql.Connection对象(仅prepare-statement需要),get-connection会提供更好的反馈。
- 支持在返回生成键作为结果集的操作中使用
-
2018-04-24 发布 0.7.6
execute!现在支持将:return-keys作为列名向量,而不仅仅是简单的布尔值,适用于支持该功能的驱动程序 JDBC-166.- 添加对 H2 内存数据库的内置支持 (
:dbtype "h2:mem"). - 添加
db-spec作为java.net.URI对象的缺失规范. - 修复
add-connection对字符串db-spec的处理(变为:connection-uri,而非:connection-string). - 修复
with-db-*函数的规范,以支持绑定形式中的选项 JDBC-165. - 更新测试,使其能正确配合字符串
db-spec测试数据库工作. - 确保不存在反射警告.
- 将本地测试基础设施切换为 CLI 和
deps.edn(来自 Leiningen),作为不使用“构建工具”进行多版本测试的示例.
-
2017-12-29 发布 0.7.5
- 在
execute!中添加对:return-keys的支持,以及在db-do-prepared-return-keys中添加对:multi?的支持 JDBC-163.
- 在
-
2017-12-14 发布 0.7.4
- 改进了其他
java.jdbc文档的可发现性 JDBC-160. - 可选规范已根据 0.7.2 和 0.7.3 版本中的
:keywordize?和:connection-uri变更进行了更新. - 性能改进,主要涉及
query和reducible-query. reducible-query中实验性的:raw?结果集处理.modify-connection在面对null连接和无效选项值时更加健壮.
- 改进了其他
-
2017-10-05 发布 0.7.3
-
2017-10-02 发布 0.7.2
connection-uri被错误地指定为java.net.URI,但应为string?JDBC-156.- 允许在
:connection-uri中传递:user和:password,以便从连接字符串中省略凭据。 - 澄清了
get-connection的文档字符串,以显示:user和:password可以传递的位置。
-
2017-08-30 发布 0.7.1
- 包含空值的连接字符串未正确解析 JDBC-155.
-
2017-07-16 发布 0.7.0
- 为
create-table-ddl和drop-table-ddl添加:conditional?选项,以提供存在性检查(或一个用于操作生成的 DDL 的函数)。 - 改进对 Oracle 连接的支持(默认端口为
1521,支持:dbtype "oracle"-- 作为"oracle:thin"-- 以及:dbtype "oracle:oci",在主机前使用@而非//)。
- 为
-
2017-07-05 发布 0.7.0-beta5
get-connection现在接受带有:auto-commit?和:read-only?选项的opts映射。如果存在,将在获取的连接上调用相应的方法。这些选项在任何可能底层调用get-connection的函数调用中均有效。这应允许在大多数数据库的查询中流式传输结果 JDBC-153.- 在
prepared-statement中执行了对选项的额外验证,以避免静默忽略:concurrency、:cursors、:result-type和:return-keys的无效组合。
-
2017-07-04 发布 0.7.0-beta4
opts现在从reducible-query正确传递到db-query-with-resultset。- 更新了
::query-options规范,以明确::prepare-options在那里也是可接受的。
-
2017-07-04 发布 0.7.0-beta3
- 移除了
reducible-result-set中的反射警告 JDBC-152.
- 移除了
-
2017-06-30 发布 0.7.0-beta2(又名:可归约的传奇,第二部分)
- 已移除对 Clojure 1.5 和 1.6 的支持 -- 破坏性变更。
- 或者换句话说,
clojure.java.jdbc现在需要 Clojure 1.7 或更高版本! - 所有公共函数现在都在可选的
clojure.java.jdbc.spec命名空间中具有 specs(需要clojure.spec.alpha)。 reducible-query和reducible-result-set使用IReduce并正确支持reduce的无init元数,通过如果存在则使用ResultSet的第一行作为(缺失的)init值,并且仅在ResultSet为空时才调用无参数的f。reduce的init元数仅使用两个参数调用f。
-
2017-06-29 发布 0.7.0-beta1
- 已移除对 Clojure 1.4.0 的支持 -- 破坏性变更。
- 可选的 spec 支持现在使用
clojure.spec.alpha。 reducible-query接受一个db-spec和一个 SQL/参数向量,并返回一个可归约对象(在 Clojure 1.7 或更高版本中为IReduce;在 Clojure 1.5/1.6 中为CollReduce):当进行归约时,它会执行查询,获取一个可归约的结果集,然后对该结果集进行归约。可归约查询在每次归约时都会执行查询。辅助函数reducible-result-set是公开的:它接受一个ResultSet并生成一个可归约对象,该对象提供对行的一次遍历归约。这两个函数都尊重reduced值以短路该过程 JDBC-99。
-
2017-03-23 发布 0.7.0-alpha3
- 现在
classname可与dbtype/dbname一起使用,以便轻松为未知数据库类型指定 JDBC 驱动类名 JDBC-151。 - 已添加
redshift作为dbtype,驱动名称为com.amazon.redshift.jdbc.Driver。
- 现在
-
于 2017-03-01 发布 0.7.0-alpha2
- 现已支持
pgsql和 Impossibl PostgresSQL 'NG' 驱动程序(注意:max-rows与此驱动程序不兼容!);此外,在db-spec中提供未知的dbtype或subprotocol现在应抛出更友好的异常 JDBC-150. quoted现在接受用于数据库 / 方言的关键字(:ansi(包括 PostgresSQL)、:mysql、:oracle、:sqlserver-- 这些与 HoneySQL 中使用的关键字相匹配,HoneySQL 是 java.jdbc 推荐的第三方 SQL DSL)JDBC-149.- 重新排序
get-connection子句,以便更容易在db-spec中组合键 JDBC-148. - 强制在驱动程序上调用
classForName之前加载DriverManager,以避免初始化时潜在的竞态条件 JDBC-145.
- 现已支持
-
2016-11-12 发布 0.7.0-alpha1 -- 可能存在破坏性变更
as-sql-name和quoted的签名略有变化:前者不再具有柯里化(单参数)版本,后者不再具有双参数版本。这一变更源于 Slack 上的一次讨论,该讨论指出柯里化函数不符合惯用写法。如果你依赖as-sql-name的柯里化版本,则无需使用partial。如果你依赖quoted的双参数版本,则需要在单参数调用中添加一个额外的( )。鉴于as-sql-name实际上是一个实现细节,如果有人在使用它我会感到非常惊讶。同样,如果有人在使用quoted的双参数版本我也会感到惊讶,因为自然用法是使用:entities (quoted [\[ \]])来创建命名策略(该策略提供 SQL 实体引用)。- 澄清了使用行映射序列的
insert-multi!可能比使用行值向量序列慢得多(前者对每一行执行一次插入,后者对所有数据执行一次插入) JDBC-147. - 所有选项都会通过所有函数调用传递,扩展了可以传递给高级函数(如
insert!和update!)的选项范围 JDBC-144. - 添加了
get-isolation-level以返回当前事务的隔离级别(如果存在) JDBC-141.
-
添加了对
read-columns选项的支持,以允许更灵活地自定义从结果集中读取列值(特别是在多数据库应用程序中)。同时扩展了set-parameters对选项的支持(此前它只是 db-spec 的一部分)JDBC-137.- 将可选的
clojure.spec覆盖范围扩展到几乎整个库 API。
- 将可选的
-
2016-08-25 发布 0.6.2-alpha3
-
2016-07-21 发布 0.6.2-alpha2
- 更新
clojure.spec支持,使其与 Clojure 1.9.0 Alpha 10 兼容。
- 更新
-
2016-07-05 发布 0.6.2-alpha1
- 通过新的
clojure.java.jdbc.spec命名空间提供对clojure.spec的实验性支持。需要 Clojure 1.9.0 Alpha 8(或更高版本)。 - 现在所有函数的所有选项都可以在
db-spec本身中拥有默认值 JDBC-136. query(以及由此延伸的find-by-keys和get-by-id)现在支持:explain?和:explain-fn选项,以帮助支持基本的性能分析 JDBC-135.insert!和insert-multi!现在尊重:identifiers和:qualifier,因为在 PostgreSQL 上插入行会返回完整行,而不仅仅是新插入的键 JDBC-134.- 除了
:identifiers选项外,现在可以使用:qualifier来指定在从 SQL 列名构建关键字时要使用的命名空间限定符(字符串)JDBC-133.
- 通过新的
-
2016-05-12 发布 0.6.1 -- 重要错误修复!
-
2016-05-11 发布 0.6.0 版本 -- 破坏性版本!已移除弃用功能!
find-by-keys现在正确处理nil值 JDBC-126. 0.6.0 / 2016-05-11.find-by-keys在:order-by上调用seq以将[]视为没有ORDER BY子句. 0.6.0 / 2016-05-11.db-query-with-resultset现在接受一个选项映射并将其传递给prepare-statementJDBC-125. 0.6.0-rc2 / 2016-05-07.- 不再支持将
prepare-statement选项映射作为[sql & params]向量的第一个元素传递,这样做将抛出IllegalArgumentException. 据我所知,它一直文档记录非常糟糕且几乎从未被使用.
- 不再支持将
db-query-with-resultset不再要求sql-params参数必须是向量:序列也是可接受的. 这与接受序列的其他函数保持一致. 0.6.0-rc2 / 2016-05-07.db-query-with-resultset现在接受裸 SQL 字符串或PreparedStatement作为sql-params参数,当不需要参数时. 这与接受 SQL 或PreparedStatement的其他函数保持一致. 0.6.0-rc2 / 2016-05-07.query的选项映射现在传递给db-query-with-resultset,因此可以包含用于构建PreparedStatement的选项 JDBC-125. 0.6.0-rc2 / 2016-05-07.- 添加了
get-by-id和find-by-keys便捷函数(在 0.6.0 的 API 更改后,添加这些函数很容易,我们在 World Singles 中非常依赖它们,因此将它们放入核心供所有人使用似乎是合理的). 0.6.0-rc1 / 2016-05-04.
find-by-keys接受一个:order-by选项,该选项期望一个排序序列;排序是一个列名(关键字)或从列名(关键字)到方向(:asc或:desc)的映射。0.6.0-rc2 / 2016-05-07.- 确保在解构之前 SQL / params 实际上是向量(这解决了来自其他语言的互操作性边缘情况)JDBC-124. 0.6.0-alpha2 / 2016-04-18.
- 修复
insert-multi!参数验证异常中的拼写错误 JDBC-123. 0.6.0-alpha2 / 2016-04-18. - 所有已弃用的功能已被移除!JDBC-118. 0.6.0-alpha1 / 2016-04-13
- 请参阅 0.5.5 到 0.5.8 版本中描述的更改,以了解哪些功能已被弃用
- 使用版本 0.5.8 作为桥梁,以识别您的代码所依赖的任何已弃用的 API 调用!
db-transaction(在版本 0.3.0 中弃用)已被移除java.jdbc.deprecated命名空间已被移除
-
2016-04-12 发布 0.5.8
db-do-commands现在期望多个命令被包裹在一个向量中 JDBC-122。单个命令的形式保持不变(但可以被包裹在一个向量中)。使用多个命令(未包裹在单个向量中)调用db-do-commands将产生打印到控制台的 "DEPRECATED" 警告。db-do-prepared和db-do-prepared-return-keys现在期望接收一个db-spec、一个可选的transaction?布尔值、一个sql-params参数,以及一个可选的选项映射。sql-params是一个包含 SQL 字符串或PreparedStatement后跟参数的向量——类似于本库中的其他 API。此外,类似于:multi? true版本的execute!,db-do-prepared可以接受一个包含参数组的向量:多个包含参数值组的向量 JDBC-122。使用展开的参数调用db-do-prepared——SQL 字符串/语句后跟参数组——已弃用,并将产生打印到控制台的 "DEPRECATED" 警告。
-
2016-04-10 发布 0.5.7
- 在 0.5.6 中引入的
(insert! db table [:col] ["val"] {})语法会抛出异常 JDBC-121。
- 在 0.5.6 中引入的
-
2016-04-10 发布 0.5.6
-
2016-04-09 发布 0.5.5
- 允许在所有先前接受可选关键字参数的调用中使用选项映射 JDBC-117.
- 调用中展开的关键字参数形式已弃用——并在控制台打印 "DEPRECATED" 消息!——并将在 0.6.0 中移除。
- 允许在所有先前接受可选关键字参数的调用中使用选项映射 JDBC-117.
-
2016-03-27 发布 0.5.0
-
2015-09-15 发布 0.4.2
-
2015-07-26 发布 0.4.0 / 0.4.1
-
2015-05-18 发布 0.3.7
-
2014-10-28 发布 0.3.6
-
2014-08-01 发布 0.3.5
-
2014-06-30 发布 0.3.4
-
2014-01-30 发布 0.3.3
-
2013-12-30 发布 0.3.2
- 为 ISQLParameter 添加 nil 协议实现
-
2013-12-29 发布 0.3.1(已损坏;请改用 0.3.2)
-
2013-12-16 发布 0.3.0
-
2013-12-12 发布 0.3.0-rc1
- 弃用 db-transaction(0.3.0 新增),改用 with-db-transaction JDBC-81.
- 添加 with-db-metadata 宏和 metadata-result 函数,以便更轻松地处理 SQL 元数据 JDBC-80.
- 添加 with-db-connection 宏,以便更轻松地针对单个打开的连接执行一组操作 JDBC-79.
- 添加 ISQLValue 协议,以便更轻松地支持 SQL 语句参数中的自定义 SQL 类型 JDBC-77.
- 在 with-db-transaction 中添加对 :isolation 的支持 JDBC-75.
- 为 DataSource 连接添加 :user 作为 :username 的别名 JDBC-74.
-
2013-11-24 发布 0.3.0-beta2
- 破坏性变更!
- 0.3.0-alpha1 中引入的 DSL 命名空间已被弃用 - 如果您希望继续使用 DSL,请参阅 java-jdbc/dsl 了解迁移路径(尽管建议您切换到另一种更具表达力的 DSL)。
- 在早期 0.3.0 版本中已弃用的旧版 API(0.2.3)已移至
clojure.java.jdbc.deprecated,以帮助简化 0.3.0 的 API 并清理文档。
-
2013-11-03 发布 0.3.0-beta1
- query as-arrays? 现在允许利用延迟结果获取 JDBC-72.
- "h2" 被识别为 org.h2.Driver 的协议简写
- 测试不再使用 :1 字面量 JDBC-71.
- 条件性使用 javax.naming.InitialContext 以便能在 Android 上编译 JDBC-69.
- 新的 db-query-with-resultset 函数取代了私有的
db-with-query-results*并处理原始 ResultSet 对象 JDBC-63. - 允许在 db-spec 中使用 :set-parameters 来覆盖 set-parameters 内部函数,以允许对 SQL 参数值进行特定数据库的特殊处理(例如 Teradata 的 null) JDBC-40.
-
2013-09-15 发布 0.3.0-alpha5
- DDL 现在支持实体命名策略 JDBC-53.
- 尝试解决由闭包引起的潜在内存泄漏 - 参见 Christophe Grand 关于宏、闭包和意外对象保留的博客文章.
- 文档已迁移至 在 Clojure-Doc.org 上使用 java.jdbc
- 添加了 Leiningen 支持以简化开发/测试(Maven 仍然是主要构建工具)。
- 添加了 create-index / drop-index DDL JDBC-62 - moquist
- 使各种
db-do-*函数中的 transaction? 布尔值变为可选 - 创建 clojure.java.jdbc.ddl 命名空间
- 添加 create-table、drop-table、create-index 和 drop-index
- 在主命名空间中弃用 create-table、create-table-ddl 和 drop-table
- 更新 README 以澄清 PostgreSQL 说明。
- 修复 PostgreSQL 测试套件 JDBC-59
- 改进 Oracle 数据类型处理的钩子 JDBC-57
- 修复反射警告 JDBC-55
-
2013-05-11 发布 0.3.0-alpha4
- 修复连接泄漏 JDBC-54
- 允许 order-by 接受空序列(并返回空字符串)
-
2013-05-04 发布 0.3.0-alpha3
- 通过完全限定 Connection 类型来修复宏 / 导入交互问题。
-
于 2013-05-03 发布 0.3.0-alpha2
-
2013-04-07 发布 0.3.0-alpha1
- 重大 API 重构!
- 旧版 0.2.x API 的大部分已被弃用,并引入了新的、更符合惯用法的 API,以及用于生成基本 SQL 的最小化 DSL
- 具体细节:
- 添加 insert!、query、update!、delete! 和 execute! 高级 API JDBC-20
- 在 clojure.java.jdbc.sql 中添加可选的 SQL 生成 DSL(由 JDBC-20 隐含)
- 添加低层 API 的 db- 前缀版本
- 添加 db-transaction 宏
- 添加 result-set-seq 作为 resultset-seq 的替代(后者将被弃用)
- 事务现在能正确回滚非 Exception 类型的 Throwable JDBC-43
- 使用新 API 重写旧 API 函数,并弃用旧 API JDBC-43
- 为 query / result-set-seq 添加 :as-arrays 选项 JDBC-41
- 更好地处理 NULL 值 JDBC-40 和 JDBC-18 注意:JDBC-40 将在 0.3.0-alpha2 中回滚,因为它在 PostgreSQL 中引入了回归问题
- db-do-commands 允许你在没有事务包裹的情况下执行 SQL JDBC-38
- 从 execute-batch 中移除反射警告
- 在 README 中添加关于第三方数据库驱动依赖的说明
- 为 resultset-seq 添加可选的 :identifiers 参数,以便显式传入命名策略
-
2012-06-18 发布 0.2.3
- as-str 现在将 a.b 视为由 . 分隔的两个标识符,因此引用时生成 [a].[b] 而不是 [a.b]
- 添加 :connection-uri 选项 JDBC-34
-
2012-06-10 发布 0.2.2
-
2012-05-10 发布 0.2.1
-
2012-04-23 发布 0.2.0
- 将内部命名空间合并到主 jdbc 命名空间 JDBC-19
-
2012-04-15 发布 0.1.4
- 解包嵌套事务异常的 RTE (我们之前 已解包顶层事务的 RTE)。
- 移除解包 RunTimeException 时的反射警告 (Alan Malloy)
-
2012-02-29 发布 0.1.3
- 修复 SQLite3 事务内生成的键 JDBC-26
-
2012-02-29 发布 0.1.2
-
2011-11-02 发布 0.1.1
-
2011-10-16 发布 0.1.0
- 移除对已弃用 structmap 的依赖 JDBC-15
-
2011-10-11 发布 0.0.7
-
2011-08-04 发布 0.0.6
- 改进异常处理(解包 RTE)
- 更新时不使用批处理(在 Apache Derby 上会导致异常) JDBC-12
- 添加测试套件
-
2011-07-18 发布 0.0.5
- 暴露 prepare-statement API
- 允许 with-query-results 接受 PreparedStatement 或创建它的选项,而不是 SQL 查询字符串和参数
- 支持无法返回生成键的数据库
-
2011-07-17 发布 0.0.4
-
2011-07-01 发布 0.0.3
- 与 MS SQL Server、PostgreSQL 的键生成兼容性 JDBC-10
-
2011-06-07 发布 0.0.2
- Clojure 1.2 兼容性 JDBC-7
-
2011-05-07 发布 0.0.1
- 初始版本
-
来自 clojure.contrib.sql 的变更:
- 暴露 print-... 函数;不再将异常写入
\*out\* - 定义 resultset-seq 以替代 clojure.core/resultset-seq
- 添加命名/引用策略(参见 name mapping documentation
- 在可能的情况下,从插入操作返回生成的键
- 添加 insert-record 函数
- Clojure 1.3 兼容性
- 暴露 print-... 函数;不再将异常写入
Copyright and License
Copyright (c) Sean Corfield, Stephen Gilardi, 2011-2023. 保留所有权利。 本软件的使用和 分发条款由 Eclipse Public License 1.0 (https://opensource.org/license/epl-1-0/) 涵盖,该许可 可在本发行版根目录下的 epl-v10.html 文件中找到。 以任何方式使用本软件,即表示您同意受 本许可条款的约束。 您不得从本软件中移除此通知或 任何其他通知。