Garry's Mod Wiki


The SQL library allows you to access powerful database software included with Garry's Mod. It is the preferred and fastest method of storing large amounts of data. The database is located in sv.db serverside and cl.db clientside, both in the Garry's Mod base folder. SQL is a whole scripting language in itself although relatively simple, it's something you'll need to read up on before using this library.

For setup, complete steps:

  1. Download the latest module for your server's operating system and architecture using the links from this page: (most often required gmsv_mysqloo_win32.dll).
  2. Download zip and copy catalog lua from archive to GarrysMod/garrysmod.
  3. Open addons/darkrpmodification/lua/darkrp_config and set need parameters in mysql.lua.

Example usage:

require( "mysqloo" ) db = mysqloo.connect( "", "username", "password", "DarkRP", 3306 ) function db:onConnected() print( "Database has connected!" ) local q = self:query( "SELECT * FROM userinformation" ) function q:onSuccess( data ) print( "Query successful!" ) PrintTable( data ) end function q:onError( err, sql ) print( "Query errored!" ) print( "Query:", sql ) print( "Error:", err ) end q:start() end function db:onConnectionFailed( err ) print( "Connection to database failed!" ) print( "Error:", err ) end db:connect()

Known GMod SQL settings:

  • No ATTACH and DETACH operations (SQLITE_OMIT_ATTACH = 1)
  • No Virtual Tables (SQLITE_OMIT_VIRTUALTABLE = 1)
  • Temp files are stored in memory (SQLITE_TEMP_STORE = 3)
  • No VACUUM operation


Tells the engine a set of queries is coming. Will wait until sql.Commit is called to run them. This is most useful when you run more than 100+ queries. This is equivalent to sql.Query("BEGIN")
Tells the engine to execute a series of queries queued for execution, must be preceded by sql.Begin This is equivalent to sql.Query("COMMIT").
boolean sql.IndexExists( string indexName )
Returns true if the index with the specified name exists.
string sql.LastError()
Returns the last error from a SQLite query.
table sql.Query( string query )
Performs a query on the local SQLite database, returns a table as result set, nil if result is empty and false on error.
table sql.QueryRow( string query, number row = 1 )
Performs the query like sql.Query, but returns the first row found. Basically equivalent to sql.Query("*query* LIMIT 1")
any sql.QueryValue( string query )
Performs the query like sql.QueryRow, but returns the first value found.
string sql.SQLStr( string string, boolean bNoQuotes = false )
Escapes dangerous characters and symbols from user input used in an SQLite SQL Query. this function is not meant to be used with external database engines such as MySQL. Escaping strings with inadequate functions is dangerous!
boolean sql.TableExists( string tableName )
Returns true if the table with the specified name exists.

Page Links

Special Pages



Render Time: 36ms

DB GetPage 4
Generate Html 7
SaveChanges (1) 10
Render Body 0
Render Sidebar 12