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

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



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值