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.
|
Forwardy i Handl - typ SQLx
#1
Napisano 10.08.2011 21:46
Jeśli się nie da to czy ktoś zna sposób wykonania 3 różnych zapytań SQL w 3 różnych pluginach podczas tego samego połączenia z bazą danych.
Dodam że myślałem nad wykonaniem tego za pomocą SQL_ThreadQuery(), a nie SQL_Execute() z tym że potrzebował bym przesłać do pozostałych 2 pluginów wartość typu Handle zwracaną przez SQL_MakeDbTuple().
Zabieg jaki chce osiągnąć to aby tylko w jednym pluginie podawane były adres, login, pass i nazwa do bazy danych, i zsynchronizowanie wykonywanych zapytań.
cFun.pl BaseBuilderPro v6.5.8 Tirant edit by diggs
IP: 80.82.16.66:27034
cFun.pl Only AWP - 1000 FPS [SkinsMod]
IP: 80.72.42.113:27015
#2
Napisano 10.08.2011 22:20
możesz udostępnić w ten sposób tuple do połączenia z bazą, który też jest typu Handle: i masz jeden plugin z tworzeniem uchwytu i reszta korzysta już tylko z niego (nie zna login i hasła)
#3
Napisano 11.08.2011 11:36
Chodzi mi o to jakie parametry musi mieć funkcja wywoływana przez forward.
public funkcja(zmienna) { new Handle:conection = zmienna; // pozostale operacje }Czy może
public funkcja(Handle:conection { // pozostale operacje }I czy aby na pewno to zadziała? Nie wiem jak w PAWN'ie ale w C++ jest tak że różne typy zmiennych zajmują różna ilość miejsca w pamięci. I biorąc, np wskaźnik typu int i pokażemy nim na miejsce w pamięci w której znajduje się wartość innego typu nie pokaże on właściwej wartości.
cFun.pl BaseBuilderPro v6.5.8 Tirant edit by diggs
IP: 80.82.16.66:27034
cFun.pl Only AWP - 1000 FPS [SkinsMod]
IP: 80.72.42.113:27015
#4
Napisano 11.08.2011 13:05
forward funkcja (Handle:Tuple);
public funkcja(Handle:conection) { // pozostale operacje }
W pawnie wszystkie zmienne proste mają ten sam rozmiar równy cellbits(32 lub 64) bitom. Nie ma mowy o typach danych, tutaj posługujemy się tagami. Wszystkie `wskaźniki` są indeksami tablic, a nie adresami w pamięci jak w C.
#5
Napisano 11.08.2011 15:24
g_fwpierwszy = CreateMultiForward("funkcja_fw", ET_CONTINUE, FP_CELL);
ExecuteForward(g_fwpierwszy, SqlConnection);Gdzie SqlConnection to
SqlConnection = SQL_Connect();Po sprawdzeniu czy nawiązano połączenie.
EDIT.
Ten sposób wywala błąd w lini ExecuteForward - Tag mistmatch - czy jak tam to się pisze, w każdym razie że typ jest niewłaściwy
Użytkownik diggs edytował ten post 11.08.2011 15:29
cFun.pl BaseBuilderPro v6.5.8 Tirant edit by diggs
IP: 80.82.16.66:27034
cFun.pl Only AWP - 1000 FPS [SkinsMod]
IP: 80.72.42.113:27015
#6
Napisano 11.08.2011 15:28
new iRet; ExecuteForward(g_fwpierwszy, iRet, SqlConnection);
i tutorial o SQLx, SQL_Connect() a potem Execute powoduje wykonanie zapytania w trybie synchronicznym, czyli serwer zatrzymuje się i czeka na odpowiedź MySQL; każde zapytanie spowoduje ok 200ms laga
#7
Napisano 11.08.2011 15:33
Co do SQL_Connect() dzięki za zwrócenie uwagi, bo również pisze jak byk w tutorialu a ja to znów przeoczyłem. Na szczęście nie mam dużo do poprawiania.
EDIT.
Może będziesz wiedział przy okazji do czego odnosi się ostatni parametr funkcji:
SQL_SimpleQuery ( Handle:db, const query[], error[]="", maxlength=0, &rows=0 )
Użytkownik diggs edytował ten post 11.08.2011 15:50
cFun.pl BaseBuilderPro v6.5.8 Tirant edit by diggs
IP: 80.82.16.66:27034
cFun.pl Only AWP - 1000 FPS [SkinsMod]
IP: 80.72.42.113:27015
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych