gpt4 book ai didi

odbc - 如何通过 ODBC 从 Elixir 中选择数据?

转载 作者:行者123 更新时间:2023-12-04 08:33:37 27 4
gpt4 key购买 nike

我找不到任何文档或示例。到目前为止,我可以成功连接,但是我不知道选择和返回数据的语法。

:odbc.start()
{:ok, conn} = :odbc.connect('DSN=mydsn;UID=myuid;PWD=mypwd', [])
:odbc.execute_stmt(conn, 'select count(*) from mytable')
:odbc.stop()

** (UndefinedFunctionError) undefined function: :odbc.execute_stmt/2 (odbc) :odbc.execute_stmt(#PID<0.85.0>, 'select count(*) from mytable')



2015 年 10 月 6 日更新

我找到了如何做到这一点。我相信我找不到有关 Elixir 的任何文档,因为 Elixir 只是传递到 Erlang 库。

无论如何,它是 sql_query , 或 select_count :

{:selected, colNames, rows} = :odbc.sql_query(conn, 'select count(*) from mytable')

{:selected, ['COUNT'], [{'182'}]}



{:ok, count} = :odbc.select_count(conn, 'select * from mytable')

{:ok, 182}



2015 年 10 月 7 日更新

这是我的最终代码,我认为它更符合习惯:

:odbc.start()
case :odbc.connect('DSN=mydsn;UID=#{System.get_env("MY_UID")};PWD=#{System.get_env("MY_PASSWORD")}', []) do
{:ok, conn} ->
case :odbc.sql_query(conn, 'select count(*) from mytable') do
{:selected, _colNames, [{count}]} -> IO.puts "count = #{count}"
{:error, err} -> {:error, err}
end
{:error, err} -> {:error, err}
end
:odbc.stop()

最佳答案

这里有几件事:

1.) 我想你想要 :odbc.sql_query/2 .去年我使用 ODBC 构建了一个相当重要的应用程序来与 SQLServer 通信,我几乎在任何地方都使用了 sql_query。我会分享来源,但我不能。

2.) 我在 official Erlang ODBC docs 中找不到有关 execute_stmt 的任何文档(v2.11.1) 因此我认为它可能会被弃用。我确实找到了 an example使用 execute_stmt 但数量是四而不是二。看起来所涉及的 ODBC 版本(根据链接本身判断)相当旧——pre v1.0。

3.) 在 Elixir 中,我们倾向于避免重建已经在 Erlang 中构建的东西,除非有迫切需要这样做。由于 ODBC 已经存在于 Erlang 中并且它运行良好,我猜一般指导是从 Elixir 调用 Erlang 库。 Elixir 旨在使调用 Erlang 代码变得容易。

关于odbc - 如何通过 ODBC 从 Elixir 中选择数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32957256/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com