问题标签 [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 投票
1 回答
188 浏览

haskell - 如何用 HDBC 填写 SQL IN 占位符的参数?

我正在尝试用 Database.HDBC.PostgreSQL 做这样的事情:

其中 ids 是 [Int]。但我得到了错误

如何用 HDBC 填写 IN 占位符?

0 投票
1 回答
146 浏览

database - 如何在haskell中使用HDBC有效地检查条目是否存在?

就像我的问题中提到的那样,我对要在其中插入一些数据的表有一个唯一约束。我必须检查数据是否已经存在,如果没有则插入。

那是我似乎无法做到的。这是我的代码:

没有错误,它可以编译,但是当我给它一个不存在的电子邮件时,模式匹配失败。

0 投票
1 回答
266 浏览

database - 使用 Haskell 的 HDBC,我可以跨多个线程使用单个 SQLite 连接吗?

如果我想跨多个线程使用 Haskell 的 HDBC 从 SQLite 数据库查询(读取),我可以使用单个连接,还是每个线程都有自己的连接?谢谢。

0 投票
1 回答
130 浏览

sql - Database.HDBC 是否支持命名参数?

我不喜欢依赖位置参数,可以使用HDBC吗?

我可以看到传递[(String, SqlValue)]而不是作为参数传递给这个包[SqlValue]的各种执行函数。

简而言之,我宁愿

0 投票
1 回答
161 浏览

haskell - HDBC 和单个语句中的多个结果集:仅返回第一个结果集

我正在寻找一种方法让HDBC在单个语句中支持多个结果集

这只会返回[[SqlInt32 1,SqlInt32 2,SqlInt32 3],[SqlInt32 2,SqlInt32 3,SqlInt32 4]]

我们在这里看到第二个结果集的结果被丢弃了

我想知道是否有除 quickQuery 之外的其他功能可以支持此功能?

理想情况下,返回类型应该是[[[SqlValue]]]而不是[[SqlValue]]这样,第一个最外层列表将对应于查询返回的每个结果集。

如果HDBC没有为它提供方法,还有什么其他包可以处理返回多个结果集的语句?

编辑:实际上,无需更改 API 的解决方案就是让它以这种方式工作:

我检查了,在 sqlserver 的情况下,它确实返回了 rows2 的空列表

0 投票
1 回答
672 浏览

postgresql - 如何通过 HDBC 将二进制数据放入 postgres?

我有一个 Haskell 应用程序,作为许多步骤之一,它需要在数据库中存储和检索原始二进制 blob 数据。相反,我并没有完全决定将这些数据存储在普通磁盘文件中,但这确实开始导致另一轮权限问题,所以现在我想使用数据库。

我创建了一个包含 type 列的表bytea

我在内存中有一个惰性字节串。

当我这样打电话时

postgres 对数据有点生气。确切的错误信息是

我也毫无疑问地知道我在数据流中有 NUL 值。那么,考虑到所有这些,安全编码数据以进行插入的正确方法是什么?


更新

这是我的桌子的描述

这是一个模块的全文,它演示了我在添加 jamsdidh 的代码后遇到的当前问题。我的错误消息已从上面的编码问题更改为“bytea 类型的输入语法无效”。

0 投票
1 回答
254 浏览

sql - 从 SQL 数据库反序列化数据

我有一个由数据库支持的小应用程序(SQLite,但它与问题并不真正相关)。我已经定义了一些类型,例如:

这些类型映射到数据库中的表。当我读取数据时,我最终会编写如下函数:

(为了清楚起见,我省略了处理错误。)

编写这样的函数真的很烦人,感觉就像创建了很多样板。有没有更惯用的方法将一组 SqlValues 转换为 Haskell 数据?

0 投票
1 回答
221 浏览

haskell - 从 Haskell HDBC 的单个事务中严格向 SQLite 提交多个 SQL 语句

我的 Haskell 技能还处于起步阶段,单子让我很困惑。

但是,我需要构建一个函数,将所有装置安装在 sqlite3 数据库中。

当我尝试运行它时,我得到以下输出:

我想得到的只是表明一切都很好的东西。请注意,我似乎需要严格,否则在创建新表之前并不总是超过“DROP TABLE”语句。

另外,如果我可以一次问两个问题: setup 最终将以类似的方式设置 12 个表。在这种情况下,有什么方法可以在包含所涉及函数的列表上将 setup 构造为 ($ conn) 的 fmap?当然,这会使代码变得更好。

0 投票
1 回答
115 浏览

haskell - 如何有效地使用我从 SQLite3 和 HDBC 获得的嵌套单子

我不得不承认,当谈到有效地使用 monad 时,我还没有“在那里”,所以如果这是一个简单的问题,请原谅我。我还必须为没有提供工作代码而道歉,因为这个问题更多地与一个概念相关,而不是我目前正在研究的实际实现。

我正在使用 SQLite(3) 数据库,当然想向它发送查询并返回结果。已经在 IO 中,该fetchAllRows函数返回一个[[SqlValue]]需要转换的。由于 SQLite 在什么是文本和什么是浮点值方面非常自由(而 Haskell 在类型方面根本不自由),使用安全转换safeFromSql似乎是合适的。现在,如果你设法在一个函数中完成所有这些,你最终会得到这个函数

或类似的东西,对吧?在我看来,使用嵌套单子的结构可能足够普遍(并且足够麻烦),以至于有一种标准的方法可以让我更容易使用我不知道的方法?

0 投票
1 回答
230 浏览

sql - 生成的 SQL 查询不返回与 sqlite3 HDBC 中相应的静态查询相同的内容

我在 Haskell 中生成 SQL 查询并使用 HDBC 将它们提交到 SQLite(3) 数据库。现在,这个函数返回一个查询:

其中,当应用于数据库时返回正确的内容:

输出:

[[SqlByteString "1",SqlByteString "2",SqlByteString "3",SqlByteString "0.149383838383838",SqlByteString "0.312777777777778",SqlByteString "秒"],[SqlByteString "1",SqlByteString "2",SqlByteString "6",SqlByteString "0.507488888888889",SqlByteString "0.655905050505051",SqlByteString "第四"],[SqlByteString "2",SqlByteString "2",SqlByteString "3",SqlByteString "0.149383838383838",SqlByteString "0.312777777777778",SqlByteString "第二" 2",SqlByteString "2",SqlByteString "6",SqlByteString "0.507488888888889",SqlByteString "0.655905050505051",SqlByteString "第四"],[SqlByteString "3",SqlByteString "2",SqlByteString "3",SqlByteString "0.149383838383838",SqlByteString "0.312777777777778",SqlByteString "秒"],[SqlByteString "3",SqlByteString "2",SqlByteString "6",SqlByteString " 0.507488888888889",SqlByteString "0.655905050505051",SqlByteString "第四"]]

现在,当我需要在查询中插入几个小的动态部分时,就像这样(抱歉,您必须滚动到字符串的末尾才能看到这个):

并做同样的事情,我得到:

[]

为什么第二个查询不返回任何内容(或者实际上是相同的内容)?

有任何想法吗?

编辑:

我对此进行了进一步的调查,认为这可能与懒惰有关。好的,现在已经改造成这样的:

不幸的是,这对问题没有帮助(当我 :sprint ghci 中函数的返回值时,它仍然没有被评估)。因此,不知何故,懒惰可能是问题所在,但我不知道如何对此进行全面评估..?请问,有什么想法吗?