←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

SQL - dobrze?

Zablokowany

  • +
  • -
zielu001 - zdjęcie zielu001 10.08.2010

Witam, robię plugin oparty o SQL i mam problem, czy to ma wyglądać tak:

SQL_ThreadQuery(g_SqlTuple,"Wyslij_handle",zapytanie, "id");


czy

SQL_ThreadQuery(g_SqlTuple,"Wyslij_handle",zapytanie, id);

?
I jak potem pobrać ID z Data?
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 10.08.2010

new data[1];
data[0] = id;
SQL_ThreadQuery(g_SqlTuple,"Wyslij_handle",zapytanie, data, sizeof(data));

a data wraca z callbackiem
public Wyslij_handle(failstate, Handle:query, error[], errnum, data[], size, Float:queuetime){
	new id = data[0];
}
Odpowiedz

  • +
  • -
zielu001 - zdjęcie zielu001 10.08.2010

I jeszcze jedno pytanie czy muszę otwierać połączenie ze SQL za każdym razem gdy chce wykonać zapytanie?

10 sierpień 2010 - 21:50:
PS: Najlepiej jakiś przykład mały :)
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 10.08.2010

do ThreadQuery podajesz parametr tuple, który nie jest uchwytem połączenia z bazą danych tylko strukturą informacji o połączeniu, wystarczy, że stworzysz go raz w kodzie

jeśli używasz zwykłego zapytania z SQL_Connect to też nie musisz łączyć za każdym razem, tylko w razie potrzeby np.
połącz
select
select
insert
update
rozłącz
Odpowiedz

  • +
  • -
zielu001 - zdjęcie zielu001 10.08.2010

Czyli takie cos przejdzie: ??

        new error[128], errno
new Handle:g_SqlTuple = SQL_MakeDbTuple("localhost","root","","stats");
Handle:polaczenie = SQL_Connect(g_SqlTuple, errno, error, 127);
new zapytanie[512];
new Data[1];
Data[0] = id;
format(zapytanie, 511, "SELECT `username` from `stats_user` where username='%s'", nazwa_gracza[id]);
SQL_ThreadQuery(g_SqlTuple,"Wyslij_handle",zapytanie, Data, sizeof(Data));


I potem w każdym publicku też łączyć?
Użytkownik zielu001 edytował ten post 10.08.2010 21:25
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 10.08.2010

przed ThreadQuery nie musisz używać Connect, to są osobne metody

(Connect + Query) lub ThreadQuery

To zrób w plugin_cfg() z globalnym g_SqlTuple (jak nazwa wskazuje)
new Handle:g_SqlTuple = SQL_MakeDbTuple("localhost","root","","stats");

osobiście polecam właśnie Thread, wygodne i nie laguje
Odpowiedz

  • +
  • -
zielu001 - zdjęcie zielu001 10.08.2010

Aha czyli w include sqlx jest kilka metod :P Dzięki :) Jak coś bedzie jeszcze to będe pisać :PP

10 sierpień 2010 - 22:37:
Warning: Label name "Handle" shadows tag name on line 49

:(
Linijka w plugin_cfg to co dałeś ale usunąłem new i dałem new g_SqlTuple pod definicjami -.&
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 10.08.2010

raczej tak powinno być
new Handle:g_SqlTuple;
plugin_init(){ 
	g_SqlTuple = SQL_MakeDbTuple("localhost","root","","stats"); 
}
Odpowiedz
Zablokowany