问题标签 [hdbc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1806 浏览

c - Sqlite 外键

我尝试使用 HDBC-sqlite3 haskell 库启用外键。这个库使用了一个小助手 c - 函数

依次调用sqlite3_open。在sqlite 文档中,我发现了sqlite3_db_config应该启用外键的不错的功能。为了测试它,我快速添加了 2 行sqlite3_open2(清单的最后两行):

结果令我惊讶:Foreign Keys: ON/OFF:0 ERR:1.

有人可以给我一个提示我做错了什么或者启用外键的正确方法是什么?

0 投票
1 回答
280 浏览

haskell - 大于 4096 字节的文本字段出现(意外 SQL_NO_TOTAL)错误

我提交了一个错误报告:https ://github.com/hdbc/hdbc-odbc/issues/4

但也许这不是 hdbc-odbc 问题,所以我也会在这里问。

操作系统:linux 64 位(archlinux)、ghc-7.4.1、hdbc-odbc-2.3.1.0

连接到 MS Sql 服务器 2005。

检索大于 4096 字节的文本字段。

使用 unixodbc 2.3.0 和 freetds 0.82 可以正常工作

使用 unixodbc 2.3.1 和 freetds 0.91 时会出现错误“Unexpected SQL_NO_TOTAL”

tsql 实用程序在 freetds 0.91 上检索并显示大文本字段。

有人对最新的 freetds、大文本字段和 MS SQL 服务器有问题吗?

编辑:我在 hdbc-odbc 中添加了对大文本字段的正确处理。补丁在这里: https ://github.com/vagifverdi/hdbc-odbc/commit/8134f715c18a0d60cc7b0329c7c2dbfee3e3e932

0 投票
1 回答
246 浏览

haskell - Haskell HDBC 内存泄漏

前几天我尝试将资源池和 HDBC 放在一起,但注意到每个查询的内存都在不断增加。然后我用尽可能少的函数组合了一个简单的测试代码,得到了这个:

完整代码: http ://upaste.me/40f2229cef7157f

对于检查函数的每次递归,程序使用的内存越来越多。结果不应该在新的递归调用中被垃圾收集,还是会留在内存中,直到程序退出该函数以防“我们需要它”?

0 投票
1 回答
684 浏览

haskell - Haskell 算术运算和任意/固定精度数的 DB 持久性

作为一名 Haskell(GHC 平台)初学者,我遇到了处理与涉及货币/货币操作的业务领域相关的数据类型和算术运算的问题,我正在寻找解决方案。

我正在开发应该与(独立)会计模块(通过 Web 服务)交互的应用程序,同时具有用于存储在单独数据库(PostgreSQL)中的临时数据输入的(Web)用户界面。

我来自 C#/F# 环境,System.Decimal 涵盖了那里的所有核心需求。如果我错了,请纠正我,但 Haskell 似乎没有可以被视为等效的集成(默认)数据类型。

理想的选择是提供任意精度算术或至少符合 Decimal128 (IEEE 754) 的数据类型。该类型应支持舍入(最接近,远离零,如果可能还与偶数相关)和以下操作:加法、减法、乘法、除法(理想情况下也是平方/根)。还应支持类型之间的转换。

据我所知,Hackage 上有两个 Haskell 模块应该可以准确地执行计算 - Data.Fixed 和 Data.Decimal (顺便说一句,有什么方法可以在 Haskell 中创建自定义文字 - 例如复制 123.45m来自 F#?)。至少后者会据我所知(在快速测试之后)启用我在上一段中描述的大部分内容,但是当我添加一个数据库(通过 Persistent/HDBC 的 PostgreSQL)和一个 Web 框架(YESOD)时混合的东西看起来不那么桃色。那里似乎缺乏支持。

是否有任何其他组合能够以最小的摩擦实现我所描述的端到端(数据输入 => 数据处理 => 存储)(例如,在从数据库加载后从字符串手动转换似乎很奇怪,拥有一种非常强类型的语言)并且不损失精度(欢迎任何指针)?

0 投票
2 回答
3493 浏览

haskell - Haskell 是否有像 ActiveRecord 或 Sequel 这样的 SQL 查询组合库?

使用 Ruby 的 ActiveRecord 或Sequel,您可以逐步构建 SQL 查询,根据运行时的条件向查询添加whereor joinor子句。order

这是一个简单的例子,取自ASCIIcasts

该示例显示了如果名为equalsarticles的 HTTP 请求查询参数,如何将 WHERE 子句附加到表上的基础 SQL 查询。hidden1

我一直在查看 Haskell 中的 HDBC 和 postgresql-simple。似乎 postgresql-simple 故意使从动态连接的部分构建 SQL 查询变得困难,以防止 SQL 注入。HDBC 似乎确实足够灵活,可以根据运行时的条件构建不同结构的 SQL 查询,但它似乎没有提供 ActiveRecord 或 Sequel 提供的抽象级别。

任何人都可以建议一种使用 Haskell 数据库库之一来模拟 ActiveRecord 的动态查询构建工具的好方法吗?

如果 HDBC 是要走的路,我可以接受。但一个插图将不胜感激。

我想我正在寻找的是针对 PostgreSQL 后端动态组合查询的能力。

0 投票
1 回答
61 浏览

database - 使用 HDBC / Haskell 将程序中的多个条目添加到 SQLite3 数据库

我正在尝试使用 Database.HDBC 和 Database.HDBC.Sqlite3。

要将表添加到 SQLite3 数据库,这是我在 GHCI 中输入的命令类型:

我现在想使用字符串列表从我的程序中将表名添加到数据库中。

这是我正在使用的变量:

表被传递给我创建的名为 addTables 的函数:

但我的 addTables 函数返回此错误:

我怀疑 Haskell 不喜欢不打印任何内容的列表推导?

任何帮助或建议将不胜感激。

0 投票
1 回答
665 浏览

haskell - HDBC-ODBC SQL Server 需要在 quickQuery 之后提交

我正在使用 ODBC 连接到本地 SQL Server 进入 HDBC。

上连接后quickQuery,我不能close它。我需要执行commit第一个。

这是应该的方式吗?commit当我只执行查询时,为什么有必要?

在 GHCi 上:

如果删除该commit conn行,则会出现异常:

该消息是葡萄牙语,意思是“无效的交易状态”。

0 投票
1 回答
153 浏览

haskell - 缺少“可转换的 SqlValue UTCTime”?

我试图将 a 转换SqlValueUTCTime这样:

但 GHC 抱怨说我缺少一个Convertible实例来执行此操作:

当我查看HDBC 源代码时,实例就UTCTime在那里。

我错过了什么吗?

0 投票
1 回答
407 浏览

mysql - HDBC ODBC MySQL - 查询仅在编译时失败

我的程序使用 runghc 运行,但相同的程序在编译时出现错误“在查询期间丢失与 MySQL 服务器的连接”时始终失败。失败与长时间运行的查询无关(它是小表上的 CREATE VIEW)。MySQL 错误日志中没有任何内容,并且 log_warnings=1。环境 - ubuntu (13.04 ;-), 本地数据库)

0 投票
1 回答
519 浏览

ado.net - F# 中的 Haskell HDBC 优雅?

Haskell 的简洁和优雅让我印象深刻。但是我在 .Net 公司工作,所以当我可以摆脱它时我会使用 F#——我可能是全国数百个使用它的唯一一个。

ADO.NET 或 F# 是否提供了与 HDBC 一样简洁和优雅的东西executeMany?我正在通过Real World Haskell。在第 21 章中,它提供了这个例子:

我想在我的 F# 中获得这种优雅和简洁。我已经看到很多关于使用参数化查询来避免 SQL 注入攻击的炒作。在这种情况下,我不使用它们有以下三个原因:

  1. 我发现 .Net 中的参数化查询丑陋而繁琐。
  2. 我的数据来自公司办公室,所以它(大部分)是干净的。
  3. 我的表有 34 列。我鄙视用 34 列参数化查询的想法。

这是我的 F# 代码:

出于安全原因,我已重命名表的字段。

因为表格上的所有字段都是文本,所以我可以轻松地将它们 Array.map 以转义和引用值。

每天有 9,000 到 10,000 条记录要导入到这两个表中的每一个,我希望尽可能高效地执行此操作。因此我对executeManyHaskell 感兴趣。不过,我也喜欢参数化查询背后的想法,也喜欢 Hasekll 实现它们的方式。在 F# 中是否存在与简洁和优雅相当的东西?