Matt
Matt

Reputation: 450

Erlang mysql example

Just wondering if anyone could give a working example of using the erlang-mysql module (http://code.google.com/p/erlang-mysql-driver/).

I am new to erlang and I am trying to replace some old scripts with a few erlang batch processes. I am able to connect to the DB and even complete a query, but I am not sure how I use the results. Here is what I currently have:

-include("../include/mysql.hrl").
...
mysql:start_link(p1, "IP-ADDRESS", "erlang", "PASSWORD", "DATABASE"),
Result1 = mysql:fetch(p1, <<"SELECT * FROM users">>),
io:format("Result1: ~p~n", [Result1]),
...

I also have a prepared statement that I am also using to get just one row (if it exists) and it would be helpful to know how to access the results on that as well

Upvotes: 5

Views: 10962

Answers (3)

Roman Rabinovich
Roman Rabinovich

Reputation: 918

After trying to use the ODBC module that comes with Erlang/OTP, and running into problems, I recommend the mysql/otp driver. I replaced ODBC with it in just a few hrs and it works fine.

They have good documentation so I will not add examples here.

Upvotes: 0

miscry
miscry

Reputation: 1

you should check the count of rows, then execute:

eg: RowLen = erlang:length(Row), if RowLen > 0 -> {success}; true -> {failed, "Row is null"} end.

Upvotes: 0

Zed
Zed

Reputation: 57658

This is described in the source code of mysql.erl:

Your result will be {data, MySQLRes}.

FieldInfo = mysql:get_result_field_info(MysqlRes), where FieldInfo is a list of {Table, Field, Length, Name} tuples.

AllRows = mysql:get_result_rows(MysqlRes), where AllRows is a list of lists, each representing a row.

Upvotes: 4

Related Questions