2010-01-13 3 views
5

Ich frage mich nur, ob jemand ein funktionierendes Beispiel für die Verwendung des Moduls erlang-mysql (http://code.google.com/p/erlang-mysql-driver/) geben könnte.Erlang mysql Beispiel

Ich bin neu zu Erlang und ich versuche, einige alte Skripte mit ein paar Erlang Batch-Prozesse zu ersetzen. Ich bin in der Lage, eine Verbindung zur DB herzustellen und sogar eine Abfrage durchzuführen, aber ich bin mir nicht sicher, wie ich die Ergebnisse verwende. Hier ist, was ich derzeit habe:

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

Ich habe auch eine vorbereitete Erklärung, die ich auch nur eine Zeile erhalten bin mit (falls vorhanden), und es wäre hilfreich, zu wissen, wie die Ergebnisse für den Zugriff auf das als gut

Antwort

4

Dies ist in der source code von mysql.erl beschrieben:

Ihr Ergebnis {data, MySQLRes} sein wird.

FieldInfo = mysql:get_result_field_info(MysqlRes), wobei FieldInfo eine Liste von {Table, Field, Length, Name} Tupeln ist.

AllRows = mysql:get_result_rows(MysqlRes), wobei AllRows eine Liste von Listen ist, die jeweils eine Zeile darstellen.

+0

Danke, als Addon dazu: Was ist der beste Weg, um das Ergebnis zu parsen? Manchmal führt es zu 0 Zeilen oder manchmal wird es viele Zeilen geben. In diesem Licht, wenn ich die E-Mail-Adresse und den Namen greifen wollte (aus der Benutzertabelle, nehme an, dass die Struktur [ID, E-Mail, Name] ist). Ein Beispielcode dafür wäre wirklich toll. – Matt

+1

'[do_sg (E-Mail, Name) || [_, Email, Name] <- AllRows] '. Wenn Sie keine ID benötigen, sollten Sie sie nicht abfragen. – Zed

0

sollten Sie die Anzahl der Zeilen überprüfen, dann ausführen:

zB: Rowlen = erlang: Länge (Row), wenn Rowlen> 0 -> {Erfolg}; wahr -> {fehlgeschlagen, "Zeile ist null"} Ende.

0

Nachdem ich versucht habe, das ODBC-Modul zu verwenden, das mit Erlang/OTP geliefert wird, und ich auf Probleme stoße, empfehle ich den mysql/otp-Treiber. Ich habe ODBC damit in nur wenigen Stunden ersetzt und es funktioniert gut.

Sie haben gute documentation so werde ich hier keine Beispiele hinzufügen.