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

haskell - Haskell 中的并发数据库连接池

我是一名学习 Haskell 的 Java 程序员。
我在一个使用 Happstack 并通过 HDBC 与数据库对话的小型网络应用程序上工作。

我已经编写了selectexec函数,我像这样使用它们:

如您所见,非常简单。有查询参数结果
连接创建和提交/回滚内容隐藏在 select 和 exec 中。
这很好,我不想在我的“逻辑”代码中关心它。

坏点:

  • 每次调用都会创建一个新连接——这会降低负载时的性能
  • DB url“users.db”是硬编码的 - 我不能在其他项目中重用这些功能而无需编辑

问题 1:如何引入一个具有一些已定义(最小、最大)并发连接数的连接池,以便在 select/exec 调用之间重用连接?

问题 2:如何使“users.db”字符串可配置?(如何将其移至客户端代码?)

它应该是一个透明的特性:用户代码不应该需要明确的连接处理/释放。

0 投票
2 回答
1649 浏览

macos - Haskell、HDBC、ODBC、MySQL 和 Mac OS X

我正在尝试使用 Haskell(版本 6.10.3)和 HDBC 连接到 MySQL 数据库。我选择用 Haskell ODBC 来做。我使用 cabal 安装 HDBC (2.1.1) 和 HDBC-ODBC (2.1.0.0)。我已经下载并安装了 MySQL ODBC 驱动程序 (5.1.5)。我使用 macports 安装 unixODBC (2.2.14_1)。所有这些都基于 Mac OS X (10.5.8)。

我大部分时间都在使用此页面http://en.wikibooks.org/wiki/Haskell/Database上的说明。在这一点上:

"# 将 mysql 驱动程序添加到 odbcinst.ini 文件(在 $ODBC_HOME/etc/ 下)和 $HOME/.odbc.ini 中的数据源。"

看起来 unixODBC 的 macports 版本将所有内容都安装在 /opt/local/ 下。我已经将 odbcinst.ini 放入 /opt/local/etc/ 并在我的主目录中创建了一个 .odbc.ini ,看起来像这样(请注意,我已经尝试过 UID vs. USERNAME 和 PWD vs密码):

我已经编写并编译了这个 Haskell 程序:

当我尝试“DSN = myodbc”的DSN时,它会出错:

但是,当我尝试“DSN=myodbc;UID=[hidden];PWD=[hidden]”的 DSN 时,它会列出数据库中的所有表。

0 投票
1 回答
471 浏览

haskell - FireBird 数据库的 HDBC 驱动程序

有人能指出我的 HDBC(Haskell) 驱动程序用于 FireBird 数据库吗,谷歌上没有出现任何内容。目前我最好的选择是使用 HDBC-ODBC 桥从 Haskell 程序连接到 FireBird 数据库吗?

0 投票
3 回答
19146 浏览

mysql - 确定 MySQL 连接是否仍然存在的最便宜的方法

我有一个用于基于 Web 的数据服务的 MySQL 连接池。当它开始为请求提供服务时,它会从池中获取一个连接以供使用。问题是,如果在使用该特定连接后出现了明显的暂停,则服务器可能已将其超时并关闭其结束。我希望能够在池管理代码中检测到这一点。

诀窍是:我编码的环境只给了我一个非常抽象的连接API。我基本上只能执行SQL语句。我无权访问实际的套接字或直接访问 MySQL 客户端 API。

所以,问题是:我可以在连接上执行以确定它是否正常工作的最便宜的 MySQL 语句是什么。例如SELECT 1;应该可以,但我想知道是否有更便宜的东西?也许某些东西甚至没有通过网络,而是在 MySQL 客户端库中处理并有效地回答了相同的问题?

澄清:我不关心检查 MySQL 服务器是否正在运行,或者它的数据库配置是否足以回答查询。如果这些事情发生了,那么服务执行的后续 SQL 将获取并处理相应的错误。我只关心 TCP 连接是否打开......因为如果服务器关闭它,那么 Web 服务的 SQL 将收到一个错误,表示“只需重新连接并重试”,一旦关闭,这样做会很不方便服务代码的垃圾。

关闭: hack/* ping */正是我正在寻找的那种东西,但是只能通过 JDBC 获得。阅读该 hack 的文档,很明显它被放在那里的原因与我想要它的原因完全相同。出于好奇,我在Haskel工作,使用HDBCHDBC-mysql。我将要求 HDBC-mysql 的作者添加一种mysql_ping()直接调用或通过类似 hack 调用的方法。

Vlad'sDO 1也是我所追求的那种东西,而且由于其他 hack 在 JDBC 之外不可用,我将使用它。

感谢所有精彩的讨论,尤其是@Vlad!

0 投票
1 回答
237 浏览

mysql - 转换时间以在mysql中使用

我正在尝试将时间戳加载到 mysql 中。我所有的时间都是 UTCTime 对象。HDBC mysql 实现似乎不喜欢 UTCTime 对象,尽管内部文档说它将所有时间都视为 UTC 时间。我相信我需要将 UTCTime 转换为 EpochTime,因为它看起来像 HDBC mysql 实现支持绑定 SqlEpochTime。我无法弄清楚如何获取我的 UTCTime 并从中获取 EpochTime。

0 投票
1 回答
592 浏览

haskell - Haskell HDBC-Sqlite3 总是返回 SqlByteString 值

我正在使用 HDBC sqlite3 haskell 驱动程序访问本地 sqlite3 数据库

结果,例如

我总是得到这样的结果:

这很奇怪!是的,标题包含“国家”符号,是的,我确定它id的类型为INTEGER.

所以问题是:

  1. 为什么 1 个 unicode 符号被威胁为 2 个类似 ascii 的符号?
  2. 为什么整数列会产生字节串值?
0 投票
1 回答
1159 浏览

haskell-platform - HDBC -odbc 与haskell连接

现在我想用 haskell 连接 db,我尝试使用 cabal 安装 HDBC-ODBC、HSQL-ODBC 和 HDBC-mysql,我能够配置 sqlite3,如何添加这些包?当我尝试使用 cabal 安装它时出现此错误

我能为此做些什么?

0 投票
2 回答
858 浏览

haskell - 无法加载 HDBC-postgresql

我在 Windows XP 上。我按照此页面上的步骤安装了 Yesod:http ://www.yesodweb.com/page/five-minutes

我创建了一个带有 Postgresql 持久性的脚手架应用程序。当我第一次运行“yesod devel”时,它给了我一个关于缺少一些 postgresql 包的错误(我不记得名字),所以我使用 cabal 安装它。现在,当我运行“yesod devel”时,它给了我以下错误:

我已经安装了 HDBC-postgresql-2.2.3.3 并且我已经安装了 --extra-lib-dirs 设置为所有 DLL 的 postgresql 的 bin 文件夹,但它没有帮助。

据我了解,它正在尝试加载 pq.dll,但我的系统上没有它,我有 libpq.dll,所以我尝试重命名 dll,但无济于事。我搞不清楚了。

请帮忙

康斯坦丁

0 投票
1 回答
527 浏览

postgresql - 如何在 Database.HaskellDB.HDBC.PostgreSQL 模块中使用 postgresqlConnect?

我不太确定如何使用postgresqlConnect模块中的函数Database.HaskellDB.HDBC.PostgreSQL连接到 PostgreSQL 数据库。Haddock 文档页面仅说明类型签名:

应该是什么a

如何连接到 PostgreSQL 服务器postgresqlConnect

0 投票
1 回答
291 浏览

mysql - HDBC-mysql“命令不同步”

我正在使用 Snap 0.6 和 Snaplet-hdbc 基础架构编写一个 Web 应用程序。在后端,我使用 HDBC-mysql 连接到 MySQL。但是在运行应用程序时,它会收到来自 MySQL 的“命令不同步,您现在无法运行此命令”错误。我为每个查询使用 withTransaction'。经过一番谷歌搜索,MySQL 似乎不支持多查询。但是如何使用 HDBC 来避免它呢?