[Selfmade] Problem mit Datenbanken

  • Hallo ihr,

    es gibt leider Sachen mit denen ich mich sehr schwer tue, eines davon ist das Thema "Datenbanken". Ich nutze die MTA internen SQL Funktionen und habe ein Problem mit einer eigenen Datenbank.

    Zum Problem:

    Ich habe eine eigene Datenbank "maps.db" in meinem Resourcen-Root-Ordner. Beim starten der Resource baue ich einmalig die Verbindung zur Datenbank auf und nutze diese auch solange die Resource aktiv ist. Die Verbindung erstelle ich wie folgt:

    Lua
    self.dbConnectionMaps = dbConnect("sqlite", "maps.db")

    Das schließen der Verbindung erfolgt bei beenden der Datenbankklasse dann so:

    Lua
    if (self.dbConnectionMaps) then
        destroyElement(self.dbConnectionMaps)
        self.dbConnectionMaps = nil
    end

    Beim starten einer Map möchte ich nun checken, ob es in der Datenbank die Tabelle "maps" gibt und erstelle sie falls nicht existent:

    Lua
    if (self.dbConnectionMaps) then
        dbExec(self.dbConnectionMaps, "CREATE TABLE IF NOT EXISTS maps (MapName TEXT, PlayedTimes NUMBER)")
    end

    Desweiteren wird die nun gestartete Map in die Tabelle geschrieben:

    Lua
    if (self.dbConnectionMaps) then
        dbQuery(self.dbConnectionMaps, "INSERT INTO maps VALUES (?,?)", mapName, 1)
    end

    Das funktioniert auch super, wenn ich mir die Datenbank nach beenden des Servers anschaue, dann steht dort die Map drin:

    dbProb.PNG

    Was ist nun das Problem? Das alles funktioniert nur beim ersten Mal starten des Servers. Sobald ich das ein zweites Mal versuche kann die Datenbank nicht mehr gelesen werden. Fehler:


    Ich habe doch aber ingame gar keine Möglichkeit festzulegen in welchem Format (UTF-8 oder ANSI) ich die DB speichern möchte. Von außen lässt sie sich weiterhin öffnen. Irgendwelche Ideen dazu oder Verbesserungsvorschläge?

    Einmal editiert, zuletzt von Sam@ke (21. September 2014 um 14:47)

  • Dieses Thema enthält 7 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!