我找不到任何文档或示例.到目前为止,我可以成功连接,但我不知道选择和返回数据的语法.
:odbc.start()
{:ok, conn} = :odbc.connect('DSN=mydsn;UID=myuid;PWD=mypwd', [])
:odbc.execute_stmt(conn, 'select count(*) from mytable')
:odbc.stop()
Run Code Online (Sandbox Code Playgroud)
**(UndefinedFunctionError)未定义函数:: odbc.execute_stmt/2(odbc):odbc.execute_stmt(#PID <0.85.0>,'从mytable中选择计数(*)')
2015年10月6日更新
我发现了怎么做.我相信我找不到有关Elixir的任何文档,因为Elixir只是对Erlang库进行了传递.
在任何情况下,它是sql_query或select_count:
{:selected, colNames, rows} = :odbc.sql_query(conn, 'select count(*) from mytable')
Run Code Online (Sandbox Code Playgroud)
{:已选中,['COUNT'],[{'182'}]}
{:ok, count} = :odbc.select_count(conn, 'select * from mytable')
Run Code Online (Sandbox Code Playgroud)
{:好的,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()
Run Code Online (Sandbox Code Playgroud)
这里有几件事:
1.)我认为你想要:odbc.sql_query/2。去年,我使用 ODBC 构建了一个相当大的应用程序来与 SQLServer 通信,并且几乎在任何地方都使用了 sql_query。我想分享来源,但我不能。
2.)我在官方 Erlang ODBC 文档(v2.11.1)中找不到任何关于execute_stmt 的文档,因此我认为它可能已被弃用。我确实找到了一个使用execute_stmt的示例,但数量是四而不是二。看起来所涉及的 ODBC 版本(从链接本身来看)相当旧——v1.0 之前的版本。
3.) 在 Elixir 中,我们倾向于回避重建已经在 Erlang 中构建的东西,除非有迫切需要这样做。由于 ODBC 已经存在于 Erlang 中并且运行得很好,我猜一般的指导是调用 Elixir 的 Erlang lib。Elixir 的设计目的是让调用 Erlang 代码变得更加容易。
| 归档时间: |
|
| 查看次数: |
1291 次 |
| 最近记录: |