ErlMySQL --- 另一个用 Erlang 编写的 MySQL 客户端

来源:互联网 发布:mac windows 鼠标右键 编辑:程序博客网 时间:2024/04/29 15:12

ErlMySQL 是一个用 Erlang 编写的 MySQL 客户端,并提供接近 Connector/C 的 API。

ErlMySQL 采用底层的 TCP/IP Socket 连接到 MySQL 服务器,可最大限度的提升通讯的性能。

下载地址:

http://sourceforge.net/projects/erlmysql/

http://es.sourceforge.jp/projects/sfnet_erlmysql/releases/

首先系统需要安装erlang运行环境.

下载erl.mysql.client-vsn-1.1.3.zip文件,解压后进入目录,运行如下命令编译。

erlc -I include/ -o ebin/ src/*.erl

关于编译的更多参数,参考:http://erlang.org/doc/man/erlc.html

注意,文件名比较长,被我修改成mysql.client。如果ebin目录不存在,需要预先手动创建。

另外,如果运行时遇到如下错误:exception error: undefined function my:start_client/0

可以使用code:add_path在erlang路径中添加类库: code:add_path("/usr/lib/erlang/lib/mysql.client/ebin/").

关于code模块的用法,参考:http://erlang.org/doc/man/code.html

如果想在控制台里运行,可以使用-pa 参数启动erlang.

erl -pa /usr/lib/erlang/lib/mysql.client/ebin/

关于启动的更多参数,参考:http://erlang.org/doc/man/erl.html

关于该类库用法的更多资料:

http://www.trapexit.org/MySQL_native_client


以下是测试代码(仅供参考):

-module(mysql).-compile(export_all).-include("my.hrl").-include("test.hrl").start() ->code:add_path("/home/xxxx/Downloads/mysql.client/ebin"),my:start_client(),DS_def = #datasource{host = ?TEST_SERVER_HOST_NAME, port = ?TEST_SERVER_PORT, database = ?TEST_DB_NAME, user = ?TEST_USER,password = ?TEST_PASSWORD,    flags = #client_options{trans_isolation_level = serializable}},my:new_datasource(datasource, DS_def).get_connection() ->my:get_connection(datasource).fetch(Table) ->start(),Conn = get_connection(),{Metadata, Rowdata} = my:execute_query(Conn,"SELECT * FROM " ++ Table ++ " order by id"),my:close_connection(Conn),#metadata{field_metadata=Fields} = Metadata,Columns = lists:map(fun(#field_metadata{name=Name}) -> Name end, Fields),io:format("Columns: ~p~n", [Columns]),DataRows = lists:map(fun(#rs_row_data{data=Data}) -> Data end, Rowdata),io:format("DataRows: ~p~n", [DataRows])%[Data || #rs_row_data{data=Data} <- Rowdata].