LUA:SQLite Tutorial

From GMod Wiki

(Difference between revisions)
Jump to: navigation, search
(Sql Tutorial)
 
Line 1: Line 1:
-
==Sql Tutorial==
+
{{Article|
-
 
+
category = Lua |
-
Edit by Xyro(Quincy18 on FP) : The Facepunch thread is a bit more advanced (images etc.) So if you don't understand anything try too look it up there
+
name = SQLite in Garry's Mod|
-
 
+
author = [[User:Xyro|Xyro]]|
-
Also notice that this tutorial lets you learn how to interact with the garrysmod built in databases, not an external database.
+
contributor = [[User:Kahn|Kahn]]|
-
 
+
date = August 9, 2009  |
-
This Tutorial was written entirely by quincy18 [http://www.facepunch.com/member.php?u=118659], a Facepunch user. His original thread can be found here.[http://www.facepunch.com/showthread.php?t=777892]
+
description = This is an introduction to the usage of SQLite in Garry's Mod.}}
-
 
+
__TOC__
-
This tutorial is going to teach you how to make a stats and money system, via MySQL. By the end you should have a fairly decent understanding of the tool.
+
==Introduction==
 +
This tutorial is going to teach you how to make a stats and money system, via SQLite. By the end you should have a fairly decent understanding of the tool.
Save it in you gamemode folder as sql_database.lua, so you may reference it at any time.
Save it in you gamemode folder as sql_database.lua, so you may reference it at any time.
Line 13: Line 14:
Onto the tutorial!
Onto the tutorial!
-
----
 
-
== What Do We Need? ==
+
=== What Do We Need? ===
'''Knowledge Prior to Using the Tutorial:'''
'''Knowledge Prior to Using the Tutorial:'''
Line 36: Line 36:
-
== Basic SQL Knowledge ==
+
=== Basic SQL Knowledge ===
'''First and foremost: This assumes you have an IQ above 10, and will not explain to you advanced topics.'''
'''First and foremost: This assumes you have an IQ above 10, and will not explain to you advanced topics.'''
Line 61: Line 61:
After reading, the above, let's continue on.
After reading, the above, let's continue on.
-
----
+
=== Coding ===
-
 
+
-
== Coding ==
+
Fortunately for us, GMod will create the database for us.
Fortunately for us, GMod will create the database for us.
Line 164: Line 162:
end
end
</lua>
</lua>
-
The above code, shows us how we can do MySQL error handling!
+
The above code, shows us how we can do SQLite error handling!
-
 
+
-
----
+
If you're comfortable with the above information, move on to the next part!
-
If your comfortable with the above information, move on to [[Lua:SQLite Tutorial: Part 2|Part 2]] of the tutorial!
+
{{CatNavFoot|middle = Lua_Tutorial_Series|middlecaption=Back to Lua Tutorial Series|right = Lua:SQLite Tutorial: Part 2|rightcaption = Part 2}}

Latest revision as of 21:36, 3 November 2009

Lua: SQLite in Garry's Mod
Page white text.png Description:This is an introduction to the usage of SQLite in Garry's Mod.
link=User:Xyro Original Author:Xyro
Group.png Contributors:Kahn
Calendar.png Created:August 9, 2009

Contents

Introduction

This tutorial is going to teach you how to make a stats and money system, via SQLite. By the end you should have a fairly decent understanding of the tool.

Save it in you gamemode folder as sql_database.lua, so you may reference it at any time.

Onto the tutorial!


What Do We Need?

Knowledge Prior to Using the Tutorial:

- A basic knowledge of SQL.

- Some Lua experience.

Actual Coding Knowledge:

- A database setup function.

- A players setup function.

- A retrieving function.

- A saving function.

All of the above is explained in this tutorial.


Basic SQL Knowledge

First and foremost: This assumes you have an IQ above 10, and will not explain to you advanced topics.

SQL has different parts, a database, tables and rows.

A database can be called a main file to store your tables and a table is where you store you're different variables.

Look at this basic schematic to get a better idea of what is being said: [1]


It is recommended, that you read the following pages, as they will explain most of the functions used in this tutorial:

http://www.w3schools.com/sql/sql_syntax.asp

http://www.w3schools.com/sql/sql_select.asp

http://www.w3schools.com/sql/sql_where.asp

http://www.w3schools.com/sql/sql_insert.asp

http://www.w3schools.com/sql/sql_update.asp


After reading, the above, let's continue on.

Coding

Fortunately for us, GMod will create the database for us.

So lets get started.

We begin by creating a function called tables_exist and adding an if statement to see if the table we want to make exists.

 
function tables_exist()
	if sql.TableExists("player_info") && sql.TableExists("player_skills") then //sql.TableExists does exactly what it says
		Msg("Both tables already exist !")
	else
		// Create the tables
	end
end
 

Next we need to check if either one of the tables doesn't exist and if they don't create them:

 
function tables_exist()
	if (sql.TableExists("player_info") && sql.TableExists("player_skills")) then
		Msg("Both tables already exist !")
	else
		if (!sql.TableExists("player_info")) then // ! = not
			// Create the table here
		end
		if (!sql.TableExists("player_skills")) then
			// Create the table here
		end
	end
end
 

Now we need to create our table:

 
CREATE TABLE player_info
 

Next, we have to add the rows to our table:

 
query = "CREATE TABLE player_info ( unique_id varchar(255), money int )"
 

Here I added a variable to hold our query (What we instruct the database to do) and added a unique id for the steam id so we can sort somebody out of our database (varchar mean that it can be a number or a letter) we can do the same for the other table :

 
query = "CREATE TABLE player_skills ( unique_id varchar(255), speech int, fish int, farm int )"
 

Now that all of that is done, let's put it altogether:

 
function tables_exist()
	if (sql.TableExists("player_info") && sql.TableExists("player_skills")) then
		Msg("Both tables already exist !")
	else
		if (!sql.TableExists("player_info")) then
			query = "CREATE TABLE player_info ( unique_id varchar(255), money int )"
			result = sql.Query(query)
		end
		if (!sql.TableExists("player_skills")) then
			query = "CREATE TABLE player_skills ( unique_id varchar(255), speech int, fish int, farm int )"
			result = sql.Query(query)
		end
	end
end
 

There, now it's all in one piece. Notice, the sql.Query() function. It allows us to send queries (instructions) to the database. It is necessary to use, so that our database receives the code, and can check for errors, if any.

Next, let's make sure everything worked well:

 
function tables_exist()
 
	if (sql.TableExists("player_info") && sql.TableExists("player_skills")) then
		Msg("Both tables already exist !")
	else
		if (!sql.TableExists("player_info")) then
			query = "CREATE TABLE player_info ( unique_id varchar(255), money int )"
			result = sql.Query(query)
			if (sql.TableExists("player_info")) then
				Msg("Succes ! table 1 created \n")
			else
				Msg("Somthing went wrong with the player_info query ! \n")
				Msg( sql.LastError( result ) .. "\n" )
			end	
		end
		if (!sql.TableExists("player_skills")) then
			query = "CREATE TABLE player_skills ( unique_id varchar(255), speech int, fish int, farm int )"
			result = sql.Query(query)
			if (sql.TableExists("player_skills")) then
				Msg("Succes ! table 2 created \n")
			else
				Msg("Somthing went wrong with the player_skills query ! \n")
				Msg( sql.LastError( result ) .. "\n" )
			end	
		end
	end
 
end
 

The above code, shows us how we can do SQLite error handling!

If you're comfortable with the above information, move on to the next part!

Yarin Kaul Icon ArrowSquare32.png Back to Lua Tutorial Series

Part 2 Yarin Kaul Icon ArrowSquare32 right.png


Personal tools
Namespaces
Variants
Actions
Navigation
Lua Scripting
Functions
Hooks
Toolbox