2010-01-13 14 views
5

Zastanawiasz się, czy ktoś mógłby dać przykład użycia modułu erlang-mysql (http://code.google.com/p/erlang-mysql-driver/).Erlang mysql example

Jestem nowy w erlangu i staram się zastąpić niektóre stare skrypty kilkoma procesami wsadowymi typu erlang. Mogę połączyć się z DB, a nawet ukończyć zapytanie, ale nie jestem pewien, w jaki sposób korzystam z wyników. Oto, co aktualnie mam:

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

Mam też przygotowane oświadczenie, że używam również uzyskać tylko jeden wiersz (jeśli istnieje) i dobrze byłoby wiedzieć, jak uzyskać dostęp do wyników na tym, jak dobrze

Odpowiedz

4

jest to opisane w source code z mysql.erl:

swój wynik będzie {data, MySQLRes}.

FieldInfo = mysql:get_result_field_info(MysqlRes), gdzie FieldInfo to lista krotek {Table, Field, Length, Name}.

, gdzie AllRows to lista list, z których każda reprezentuje wiersz.

+0

Dzięki, jako dodatek do tego: Jaki jest najlepszy sposób na przeanalizowanie wyniku? Czasami będzie to 0 wierszy lub czasami będzie wiele wierszy. W tym świetle, jeśli potrzebuję pobrać adres e-mail i nazwę (z tabeli użytkownika, przyjmij strukturę: [identyfikator, adres e-mail, nazwa]). Jakiś przykładowy kod byłby naprawdę świetny. – Matt

+1

'[do_sg (e-mail, nazwa) || [_, Email, Name] <- AllRows] '. btw, jeśli nie potrzebujesz identyfikatora, nie powinieneś go przesyłać. – Zed

0

należy sprawdzić liczbę wierszy, następnie wykonać:

np RowLen = Erlang: długość (wiersz), jeśli RowLen> 0 -> {sukces}; true -> {failed, "Wiersz jest pusty"} koniec.

0

Po próbie użycia modułu ODBC dostarczanego z Erlang/OTP i napotkania problemów, polecam sterownik mysql/otp. Wymieniłem ODBC na to w kilka godzin i działa dobrze.

Mają dobre documentation, więc nie będę dodawać przykłady tutaj.