问题标签 [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.
haskell - 如何用 HDBC 填写 SQL IN 占位符的参数?
我正在尝试用 Database.HDBC.PostgreSQL 做这样的事情:
其中 ids 是 [Int]。但我得到了错误
如何用 HDBC 填写 IN 占位符?
database - 如何在haskell中使用HDBC有效地检查条目是否存在?
就像我的问题中提到的那样,我对要在其中插入一些数据的表有一个唯一约束。我必须检查数据是否已经存在,如果没有则插入。
那是我似乎无法做到的。这是我的代码:
没有错误,它可以编译,但是当我给它一个不存在的电子邮件时,模式匹配失败。
database - 使用 Haskell 的 HDBC,我可以跨多个线程使用单个 SQLite 连接吗?
如果我想跨多个线程使用 Haskell 的 HDBC 从 SQLite 数据库查询(读取),我可以使用单个连接,还是每个线程都有自己的连接?谢谢。
haskell - HDBC 和单个语句中的多个结果集:仅返回第一个结果集
我正在寻找一种方法让HDBC在单个语句中支持多个结果集
这只会返回[[SqlInt32 1,SqlInt32 2,SqlInt32 3],[SqlInt32 2,SqlInt32 3,SqlInt32 4]]
我们在这里看到第二个结果集的结果被丢弃了
我想知道是否有除 quickQuery 之外的其他功能可以支持此功能?
理想情况下,返回类型应该是[[[SqlValue]]]
而不是[[SqlValue]]
这样,第一个最外层列表将对应于查询返回的每个结果集。
如果HDBC没有为它提供方法,还有什么其他包可以处理返回多个结果集的语句?
编辑:实际上,无需更改 API 的解决方案就是让它以这种方式工作:
我检查了,在 sqlserver 的情况下,它确实返回了 rows2 的空列表
postgresql - 如何通过 HDBC 将二进制数据放入 postgres?
我有一个 Haskell 应用程序,作为许多步骤之一,它需要在数据库中存储和检索原始二进制 blob 数据。相反,我并没有完全决定将这些数据存储在普通磁盘文件中,但这确实开始导致另一轮权限问题,所以现在我想使用数据库。
我创建了一个包含 type 列的表bytea
。
我在内存中有一个惰性字节串。
当我这样打电话时
postgres 对数据有点生气。确切的错误信息是
我也毫无疑问地知道我在数据流中有 NUL 值。那么,考虑到所有这些,安全编码数据以进行插入的正确方法是什么?
更新
这是我的桌子的描述
这是一个模块的全文,它演示了我在添加 jamsdidh 的代码后遇到的当前问题。我的错误消息已从上面的编码问题更改为“bytea 类型的输入语法无效”。
sql - 从 SQL 数据库反序列化数据
我有一个由数据库支持的小应用程序(SQLite,但它与问题并不真正相关)。我已经定义了一些类型,例如:
这些类型映射到数据库中的表。当我读取数据时,我最终会编写如下函数:
(为了清楚起见,我省略了处理错误。)
编写这样的函数真的很烦人,感觉就像创建了很多样板。有没有更惯用的方法将一组 SqlValues 转换为 Haskell 数据?
haskell - 从 Haskell HDBC 的单个事务中严格向 SQLite 提交多个 SQL 语句
我的 Haskell 技能还处于起步阶段,单子让我很困惑。
但是,我需要构建一个函数,将所有装置安装在 sqlite3 数据库中。
当我尝试运行它时,我得到以下输出:
我想得到的只是表明一切都很好的东西。请注意,我似乎需要严格,否则在创建新表之前并不总是超过“DROP TABLE”语句。
另外,如果我可以一次问两个问题: setup 最终将以类似的方式设置 12 个表。在这种情况下,有什么方法可以在包含所涉及函数的列表上将 setup 构造为 ($ conn) 的 fmap?当然,这会使代码变得更好。
haskell - 如何有效地使用我从 SQLite3 和 HDBC 获得的嵌套单子
我不得不承认,当谈到有效地使用 monad 时,我还没有“在那里”,所以如果这是一个简单的问题,请原谅我。我还必须为没有提供工作代码而道歉,因为这个问题更多地与一个概念相关,而不是我目前正在研究的实际实现。
我正在使用 SQLite(3) 数据库,当然想向它发送查询并返回结果。已经在 IO 中,该fetchAllRows
函数返回一个[[SqlValue]]
需要转换的。由于 SQLite 在什么是文本和什么是浮点值方面非常自由(而 Haskell 在类型方面根本不自由),使用安全转换safeFromSql
似乎是合适的。现在,如果你设法在一个函数中完成所有这些,你最终会得到这个函数
或类似的东西,对吧?在我看来,使用嵌套单子的结构可能足够普遍(并且足够麻烦),以至于有一种标准的方法可以让我更容易使用我不知道的方法?
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 中函数的返回值时,它仍然没有被评估)。因此,不知何故,懒惰可能是问题所在,但我不知道如何对此进行全面评估..?请问,有什么想法吗?