当前位置: 首页 > 工具软件 > ErlMySQL > 使用案例 >

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

班凌
2023-12-01

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]
.



 类似资料: