Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

SQL - dobrze?


  • Zamknięty Temat jest zamknięty
7 odpowiedzi w tym temacie

#1 zielu001

    Zaawansowany

  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:90
  • Lokalizacja:Zator
Offline

Napisano 10.08.2010 18:18

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?
  • +
  • -
  • 0

#2 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 10.08.2010 20:23

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];
}

  • +
  • -
  • 0

#3 zielu001

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:90
  • Lokalizacja:Zator
Offline

Napisano 10.08.2010 20:50

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 :)
  • +
  • -
  • 0

#4 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 10.08.2010 20:55

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

  • +
  • -
  • 0

#5 zielu001

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:90
  • Lokalizacja:Zator
Offline

Napisano 10.08.2010 21:24

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

  • +
  • -
  • 0

#6 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 10.08.2010 21:27

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
  • +
  • -
  • 1

#7 zielu001

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:90
  • Lokalizacja:Zator
Offline

Napisano 10.08.2010 21:33

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 -.&
  • +
  • -
  • 0

#8 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 10.08.2010 21:44

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

  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych