luaORM beta
Datenbanken sind in Multi Theft Auto das Mittel der Wahl, um Daten zu speichern. Aber geht das nicht auch einfacher, als ständig jedmögliche SQL-Syntax zu schreiben? Früher vielleicht nicht, mit luaORM nun schon.
Was ist luaORM?
luaORM ist ein kleines Script, welches dir das Leben mit Datenbanken in MTA einfacher machen soll. Es soll dir erspart bleiben,
Beispiel:
Lua
--Verbindung aufbauen...
databaseConnect("sqlite", "test.db")
--Einen Datensatz holen
local dataID = databaseLoadData("players", "username = 'einstein'")
--Erst einmal ein paar Daten ausgeben
outputServerLog("The field 'id' has the value '"..tostring(databaseGetValue(dataID, "id")).."' of type "..type(databaseGetValue(dataID, "id")))
outputServerLog("The field 'playerID' has the value '"..tostring(databaseGetValue(dataID, "playerID")).."' of type "..type(databaseGetValue(dataID, "playerID")))
outputServerLog("The field 'money' has the value '"..tostring(databaseGetValue(dataID, "money")).."' of type "..type(databaseGetValue(dataID, "money")))
outputServerLog("The field 'username' has the value '"..tostring(databaseGetValue(dataID, "username")).."' of type "..type(databaseGetValue(dataID, "username")))
--Klar können wir das Zeug auch einfach ändern
databaseSetValue(dataID, "money", 50000)
--Und wenn ein Feld in der Datenbank gar nicht existiert? Denk einfach nicht drüber nach, luaORM nimmt dir genau das ab!
databaseSetValue(dataID, "diesesFeldGibtEsEigentlichGarNicht", ":(")
--Und am Ende nur noch speichern
databaseSave(dataID)
Alles anzeigen
Beispiel 2:
Lua
--Verbindung aufbauen...
databaseConnect("sqlite", "test.db")
--Hole alle Spieler, die mehr als 1000000$ besitzen
local dataTable = databaseLoadData("players", "money > 1000000")
for index, dataID in pairs(dataTable) do
--Können die doch gar nicht selbst erwirtschaftet haben, also weg damit...
databaseSetValue(dataID, "money", 0)
--Uuuuuuuund speichern...
databaseSave(dataID)
end
Alles anzeigen
Alle Funktionen die das Tool aktuell beinhaltet:
Lua
boolean databaseConnect(databaseType, host, username, password, options) --Aktuell _NUR_ sqlite, mysql noch nicht
table/dataID databaseLoadData(tableName, searchInt)
dataID databaseNewData(tableName)
mixed databaseGetValue(dataID, field)
boolean databaseSetValue(dataID, field, value)
boolean databaseTrash(dataID)
boolean databaseSave(dataID)
boolean databaseEnd(dataID) --Wenn keine Daten gespeichert werden sollen und der Lesezugriff beendet ist, sollte dies genutzt werden
Bitte beachtet, dass es sich hierbei nur um eine Art 'Preview' handelt, um mir frühzeitig Feedback einzuholen. Es sollte also mehr als zwei mal nachgedacht werden, bevor man es einsetzt.
Wo finde ich das Zeug?
HIER: http://mirm.eu/mta/orm.lua