SQlite, fehler beim Abfragen

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo, ich habe mir heute vorgenommen mein Script von Textdateien zur Datenspeicherung per Datenbank umzuschreiben.
    Ausgewählt habe ich dafür SQlite.


    Nur habe ich jetzt das Problem, dass mein Server abstürzt, sobald ein Spieler spawnt.
    Laut Crashdetect bei folgender Zeile:

    public Float:sql_float (TABLE[],FELD[],where_is[]){
    new query[128];
    format(query,128,"SELECT `%s` FROM `%s` WHERE `Name` = '%s'",FELD,TABLE,where_is);
    new DBResult:result = db_query(Spielerdata,query);
    db_get_field(result,0,query,200);

    new Float:ID = floatstr(query);
    db_free_result(result); <--- hier

    return ID;
    }


    Falls einer was mit den Fehlercodes anfangen kann, hier die Ausgabe von Crashdetect.

    Spoiler anzeigen
    [21:29:33] [debug] Server crashed while executing script.amx
    [21:29:33] [debug] AMX backtrace:
    [21:29:33] [debug] #0 native db_get_field () [0044dd80] from samp-server.exe
    [21:29:33] [debug] #1 0010a934 in public Float:sql_float (TABLE[]=@0x00791ea4 "Accounts", FELD[]=@0x00791ec8 "weste", where_is[]=@0x00810178 "mbcool") at C:\Users\Max\Desktop\samp\gamemodes\script.pwn:17258
    [21:29:33] [debug] #2 000179f0 in public OnPlayerSpawn (playerid=0) at C:\Users\Max\Desktop\samp\gamemodes\script.pwn:1743
    [21:29:33] [debug] System backtrace:
    [21:29:33] [debug] #0 6e281c02 in ?? () from C:\Users\Max\Desktop\samp\plugins\crashdetect.DLL
    [21:29:33] [debug] #1 6e284056 in ?? () from C:\Users\Max\Desktop\samp\plugins\crashdetect.DLL
    [21:29:33] [debug] #2 6e27afcf in ?? () from C:\Users\Max\Desktop\samp\plugins\crashdetect.DLL
    [21:29:33] [debug] #3 6e281c2e in ?? () from C:\Users\Max\Desktop\samp\plugins\crashdetect.DLL
    [21:29:33] [debug] #4 0046c680 in ?? () from C:\Users\Max\Desktop\samp\samp-server.exe
    [21:29:33] [debug] #5 6e281c2e in ?? () from C:\Users\Max\Desktop\samp\plugins\crashdetect.DLL
    [21:29:33] [debug] #6 0046d530 in ?? () from C:\Users\Max\Desktop\samp\samp-server.exe


    Ich bedanke mich im Vorraus ;)

  • Du versuchst 200 Zeichen in 128 Zeichen zu packen.


    Das geht nicht ^^


    Der fehler befindet sich außerdem in db_get_field nicht ind db_free_result


    Zitat

    [21:29:33] [debug] #0 native db_get_field () [0044dd80] from samp-server.exe

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Ah...
    Ich werde es mal anpassen und schauen obs klappt :)




    //Leider immernoch das gleiche.
    (Ja ich weiß die Strings sind viel zu groß ^^
    Is ja nur testweise)


    Das komische ist auch, dass vorher die Daten über meine Funktion problemlos geladen werden.
    z.B. das Leben, ([21:46:22] erfolgreich! (sql_float leben) Rückgabewert: 100.000000)
    Die Funktion wird so aufgerufen:
    SetArmour(playerid,sql_float("Accounts","weste",pname));


    So sieht das ganze aus:
    public Float:sql_float (TABLE[],FELD[],where_is[]){
    new query[300];
    format(query,300,"SELECT `%s` FROM `%s` WHERE `Name` = '%s'",FELD,TABLE,where_is);
    new DBResult:result = db_query(Spielerdata,query);
    db_get_field(result,0,query,20);

    new Float:ID = floatstr(query);
    db_free_result(result);
    printf("erfolgreich! (sql_float %s) Rückgabewert: %f",FELD,ID);
    return ID;
    }



    //Hier die SetArmour Funktion:
    stock SetArmour(playerid,Float:armour) {
    if(armour > 0) { SetPVarInt(playerid,"amour",1); }
    else if(armour == 0) { DeletePVar(playerid,"amour"); }
    SetPlayerArmour(playerid,armour);
    return 1;
    }


    Spoiler anzeigen
    [21:46:24] [debug] Server crashed while executing script.amx
    [21:46:24] [debug] AMX backtrace:
    [21:46:24] [debug] #0 native db_get_field () [0044dd80] from samp-server.exe
    [21:46:24] [debug] #1 0010a850 in public Float:sql_float (TABLE[]=@0x00791e20 "Accounts", FELD[]=@0x00791e44 "weste", where_is[]=@0x008100f4 "mbcool") at C:\Users\Max\Desktop\samp\gamemodes\script.pwn:17255
    [21:46:24] [debug] #2 0001790c in public OnPlayerSpawn (playerid=2) at C:\Users\Max\Desktop\samp\gamemodes\script.pwn:1740
    [21:46:24] [debug] System backtrace:
    [21:46:24] [debug] #0 727d1c02 in ?? () from C:\Users\Max\Desktop\samp\plugins\crashdetect.DLL
    [21:46:24] [debug] #1 727d4056 in ?? () from C:\Users\Max\Desktop\samp\plugins\crashdetect.DLL
    [21:46:24] [debug] #2 727cafcf in ?? () from C:\Users\Max\Desktop\samp\plugins\crashdetect.DLL
    [21:46:24] [debug] #3 727d1c2e in ?? () from C:\Users\Max\Desktop\samp\plugins\crashdetect.DLL
    [21:46:24] [debug] #4 0046c680 in ?? () from C:\Users\Max\Desktop\samp\samp-server.exe
    [21:46:24] [debug] #5 727d1c2e in ?? () from C:\Users\Max\Desktop\samp\plugins\crashdetect.DLL
    [21:46:24] [debug] #6 0046d530 in ?? () from C:\Users\Max\Desktop\samp\samp-server.exe
    [21:46:24] [debug] #7 004988e9 in ?? () from C:\Users\Max\Desktop\samp\samp-server.exe
    [21:46:24] [debug] #8 0045aeda in ?? () from C:\Users\Max\Desktop\samp\samp-server.exe
    [21:46:24] [debug] #9 758c0816 in ?? () from C:\Windows\syswow64\KERNELBASE.dll
    [21:46:24] [debug] #10 758c0849 in ?? () from C:\Windows\syswow64\KERNELBASE.dll

    3 Mal editiert, zuletzt von VeryNice ()