如何处理odbc:start()的返回值。功能在erlang?

时间:2019-01-14 05:37:41

标签: erlang odbc

我是Erlang的新手, 我正在尝试使用erlang进行odbc程序

步骤1:-启动odbc
步骤2:-如果odbc已启动(即odbc:connect())。          否则什么都不做

odbc:start()。返回两种类型的值,

如果首次连接返回{ok}
如果已连接,则返回{error,{already_started,odbc}}

如何处理这两种类型的返回值,

如何编写以下程序

-module(test). 
-export([init/0])
init()->
    return_value = odbc:start(),
    if 
        return_value  == {ok} ->
            {ok1, Ref1} = odbc:connect("DSN=mysqlserver;UID=test;PWD=test", []),
        return_value  == {error, {already_started,odbc}}->
           do_nothing
        true ->
           return {error,something_wrong}
    end. 

-module(test). -export([init/0]) init()-> return_value = odbc:start(), if return_value == {ok} -> {ok1, Ref1} = odbc:connect("DSN=mysqlserver;UID=test;PWD=test", []), return_value == {error, {already_started,odbc}}-> do_nothing true -> return {error,something_wrong} end.

1 个答案:

答案 0 :(得分:0)

我已经使用case语句来处理返回。

-module(test). 

-export([init/0]).

init()->
    case odbc:start()  of 
        ok ->
            io:fwrite("Started ~n");
        {error,{already_started,odbc}} ->
            io:fwrite("Already Connceted ~n")
    end.

在终端

2> c(test).
{ok,test}
3> test:init().
Started 
ok
4> test:init().
Already Connceted 
ok

这是正确的方法吗?