Is MySQL on BYOND this laggy or am I doing it wrong? I am going to be relying on a lot of MySql commands to manipulate databases within the game, and if its going to lag that much I might as well stick with a BYOND save file....
EDIT: Here is the code I'm using;
var/mysql/server //contains all network databases
proc
initialize_sql_database()
server = new (/*data here*/)
mob/verb/add_record()
server.Add_Record(3, src.real_name, md5(ckey(src.real_name) + "encoder"), 1, src.ckey)
mysql
var
DBConnection/dbcon
ready = 0
New(sql_host, sql_database, sql_user, sql_password)
. = ..()
dbcon = new /DBConnection()
var/connected = dbcon.Connect("dbi:mysql:[sql_database]:[sql_host]", sql_user, sql_password)
if(!connected || !dbcon.IsConnected())
world.log << "Database Connection error: [dbcon.ErrorMsg()]"
ready = 0
else
ready = 1
proc
Quote(text)
if(isnull(text))
text="NULL"
else
text="[text]"
return dbcon.Quote(text)
GetRecordNames()
if(!dbcon.IsConnected())
world << "Database Disconnected: [dbcon.ErrorMsg()]"
return 0
var
query_sql = "SELECT * FROM `records` WHERE `id` = 1"
DBQuery/query = dbcon.NewQuery(query_sql)
var/list/chars = new
if(!query.Execute())
world << "GetRecordNames failed:\n\t[query_sql]\n\t[query.ErrorMsg()]"
return 0
while(query.NextRow())
var/list/columns = query.GetRowData()
chars += columns["name"]
return chars
RecordNameUsed(name)
if(!dbcon.IsConnected())
world.log << "Database Disconnected: [dbcon.ErrorMsg()]"
return 0
var
query_sql = "SELECT COUNT(*) FROM `records` WHERE `name` = [Quote(name)]"
DBQuery/query = dbcon.NewQuery(query_sql)
if(!query.Execute())
world.log << "RecordNameUsed failed:\n\t[query_sql]\n\t[query.ErrorMsg()]"
return 1
while(query.NextRow())
if(text2num("[query.item[1]]") > 0)
return 1
return 0
GetRecord(name, agency)
if(!dbcon.IsConnected())
world << "Database Disconnected: [dbcon.ErrorMsg()]"
return 0
var
query_sql = "SELECT * FROM `records` WHERE `name` = [Quote(name)] OR `agency` = [Quote(agency)]"
DBQuery/query = dbcon.NewQuery(query_sql)
if(!query.Execute())
world << "GetRecord failed:\n\t[query_sql]\n\t[query.ErrorMsg()]"
return 0
if(query.NextRow())
//var/list/columns = query.GetRowData()
//world<<columns["name"]
return 1
Add_Record(agency, name, fingerprint, version, ckey)
name = ckey(name)
ckey = ckey(ckey)
if(!dbcon.IsConnected())
world.log << "Database Disconnected: [dbcon.ErrorMsg()]"
return 0
var/query_sql
var/upd = {"
agency = [Quote(agency)],
name = [Quote(name)],
fingerprint = [Quote(fingerprint)],
version = [Quote(version)],
ckey = [Quote(ckey)]
"}
if(GetRecord(name)) ///it exists, change query
query_sql = "UPDATE `records` SET [upd] WHERE name = [Quote(name)]"
else
query_sql = "INSERT INTO `records` SET [upd]"//(`agency`, `name`, `fingerprint`, `version`, `ckey`) VALUES ([Quote(agency)], [Quote(name)],[Quote(fingerprint)],[Quote(version)],[Quote(ckey)])"
var
DBQuery/query = dbcon.NewQuery(query_sql)
if(!query.Execute())
world << "Createrecord failed:\n\t[query_sql]\n\t[query.ErrorMsg()]"
return 0
return 1
Delete_Record(name)
if(!name)
return 0
name = ckey(name)
if(!dbcon.IsConnected())
world << "Database Disconnected: [dbcon.ErrorMsg()]"
return 0
var
query_sql = "DELETE FROM `records` WHERE `name` = [Quote(name)]"
DBQuery/query = dbcon.NewQuery(query_sql)
if(!query.Execute())
world << "Deleterecord failed:\n\t[query_sql]\n\t[query.ErrorMsg()]"
return 0
return 1
SaveItems(key,item[])
SaveCharacter(key)
You should show some code.
P.S: And get a CSS that isn't completely unreadable in IE. :)