Probleme beim Auslesen von Werten aus DB

  • Guten Abend liebe Community,



    ich schreibe der Zeit ein kleines Script, welches ein Wert aus einer Tabelle heraus nehmen soll.


    C
    1. _query = format ["SELECT rank FROM gang_ranking WHERE player='%1'",_unitID];
    2. hint format["QUERY: %1",_query];
    3. _queryResult = [_query,2] call DB_fnc_asyncCall;
    4. _tmp = [_queryResult select 0] call DB_fnc_numberSafe;


    Der hint zeigt mir auch den richtigen SQL Statement an. "SELECT rank FROM gang_ranking WHERE player = '[PlayerID]'"



    Wenn ich aber den _queryresault per hint anzeigen lasse kommt einfach nur "any".



    Tabellenaufbau:



    id = int(11) A_I Primärschlüssel
    gang_name = text
    player = varchar(17)
    rank = int(int)
    inGang = tinyint(4)



    Ich stehe der Zeit etwas auf dem schlauch, auch weil mir die Logs keine Fehler anzeigen.



    Wenn ich mir dann andere SQL Statements anschaue sind die ja eigentlich gleich



    C
    1. _query = format ["SELECT id FROM gangs WHERE owner='%1' AND active='1'",_uid];
    2. _queryResult = [_query,2] call DB_fnc_asyncCall;
    3. _group setVariable ["gang_id",(_queryResult select 0),true];

    Wenn jemand ein Tipp hat wäre ich sehr nett, wenn er mir helfen würde.


    Es geht um das Script Altis Life.


    Mit freundlichen Grüßen,
    Zaickz

  • Also jetzt mal ins blaue geraten, ohne das Verwendete DBMS, die Zugriffsart(Provider) und den Datenbanktyp(SQL Standard) zu kennen, würde ich annehmen, das bei deinem SQL Statement irgend ein Fehler auftritt.
    Da du QueryResult Asyncron aufrufst, wird z.b. bei einer SQL Function die nicht zurückkehrt (Die Ergebnisausgabe läuft z.B. endlos) QueryResult auch nicht ordnungsgemäß initialisiert und gibt deswegen ein "Any" (irgendwas ist drinn, aber ich weis nich was) zurück :)
    Wäre jetzt nur ein Fall der möglich wäre. Ohne genaue Informationen ist das aber eh ein rummstochern im Heuhaufen. Baue vernünftige Logs ein. Lass dir alle SQL Statements ausgeben, führe Sie einzeln über die SQL Console(phpmyadmin?) aus und schau dir die Ergebnismengen an. Wenn da alles funktioniert bist du schonmal auf dem richtigen Weg.

  • Hi,


    das ganze geschieht sicher auf dem Server. Hast du mal versucht anstatt eines hints ein diag_log zu probieren und dir deine Query in den Logs ausgeben zu lassen?


    Die Ausgabe des Results ist eigentlich noch viel interessanter. Du möchtest ja rausfinden ob er dir was aus der DB zurück gibt. Probier das doch mal.


    @ntkernel32.dll:
    [_query,2] call DB_fnc_asyncCall;
    Der select 1 (also die 2) bedeutet, dass du etwas zurück haben möchtest. Bei einer 1 wird nichts zurückgegeben. Nur dass du dir in etwa vorstellen kannst wie die asyncCall funktioniert.