Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2016-03-30, 15:45


luki123luki123

Place Game






Wiek: 28
Na forum: 5275 dni
Posty: 1948
Nick w MP: LuKiO

Piwa: 6101

Respekt: 611
Respekt: 611Respekt: 611

SQL - SQLite

Witaj
, w tym poradniku nauczysz się rozróżniać czym jest SQLite, a czym jest samo SQL. Bardzo wiele osób myśli, że jest to to samo, ale tak nie jest. Kolejną rzeczą, którą się dowiesz w tym poradniku, jest to, że nauczysz się podstawowych zapytań SQL i będziesz je stosować w skryptach Lua. Na sam koniec dowiesz się, jakie są funkcje SQL (SQLite) w Lua i jak wygląda ich składnia oraz przykłady zastosowań.

Czym jest SQL?
Jest to język programowania (język zapytań), dzięki któremu możemy zarządzać bazą danych (SQLite i MSQL), dodawać, usuwać, aktualizować oraz pobierać dane z tabeli, a także tworzyć i modyfikować tabele w bazie danych.

Czym jest SQLite?
SQLite jest systemem zarządzania bazą danych (inaczej samą bazą danych). SQLite możemy otworzyć przy pomocy programu DB Browser for SQLite, który możemy pobrać tutaj. Bazę danych tę obsługuje język SQL, który tutaj opisuję.

SQL w MTA i jej funkcje

W tej części poradnika postaram się wyjaśnić, jakie są funkcje SQL w MTA i jak ich używać.

dbConnect
Na samym początku wyjaśnię, jak połączyć się z Twoją bazą danych i poprzez jaką funkcję. Funkcja nazywa się dbConnect i jest bardzo łatwa w zastosowaniu.
dbConnect jest funkcją typu Side-Server, możemy tylko używać jej po stronie server.

Składnia funkcji:
element dbConnect databaseTypehost )

*databaseType - tryb bazy danych, w tym przypadku sqlite
*host - miejsce docelowe pliku SQLite

Przykłady:
test_db dbConnect"sqlite""file.db" )

lub
test_db dbConnect"sqlite"":resname/file.db" )

lub
test_db dbConnect"sqlite"":/example/sub/dir/file.db" )


Teraz pokażę sprawdzenie, czy baza danych się połączyła.
local connect dbConnect "sqlite""file.db" )
if connect then
outputDebugString"Połączenie z bazą SQLite zakończyło się powodzeniem.")
else
outputDebugString"Połączenie z bazą SQLite zakończyło się niepowodzeniem.")
stopResource(getThisResource())
end

Link do Wiki Multi Theft Auto:

Więcej informacji znajdziesz w Wikipedii MTA:

dbConnect


dbQuery
Jest to funkcja, za pomocą której możemy zarządzać bazą danych SQLite, dodawać, usuwać, aktualizować, pobierać dane z tabeli oraz tworzyć, modyfikować tabele w bazie danych.
dbQuery jest funkcją typu Side-Server, możemy tylko używać jej po stronie server.
Uwaga: jest to najtrudniejsza do zrozumienia funkcja!

Składnia funkcji:
handle dbQuery databaseConnectionquery [,argumenty] )

*databaseConnection = zmienna, przez którą połączyliśmy się z bazą danych
*query = zapytania SQL, za pomocą których odczytamy, dodamy, usuniemy wartość [rekord] z tabeli i inne rzeczy.

Link do Wiki Multi Theft Auto:

Więcej informacji znajdziesz w Wikipedii MTA:

dbQuery


Dodawanie Rekordu do tabeli:
dbQuery connect"INSERT INTO TABELA ( Kolumna1, Kolumna2 ... ) VALUES ( ?,? ... )"Wartość1Wartość2 ...)

Wyjaśnienie:
connect = zmienna, przez którą połączyliśmy się z bazą danych
TABELA = Nazwa naszej Tabeli
Kolumna1, Kolumna2 ... = Kolumny w tabeli (TABELA), do których będziemy dodawać wartości
VALUES ( ?,? ... ) = W tym miejscu musimy dodać tyle, ile jest Kolumn podanych
Wartość1, Wartość2 ... = Tutaj podajemy nasze wartości (mogą być zmienne), które zapiszemy w naszej bazie danych

Przykład:
local connect dbConnect "sqlite""file.db" )
if connect then
outputDebugString"Połączenie z bazą SQLite zakończyło się powodzeniem.")
else
outputDebugString"Połączenie z bazą SQLite zakończyło się niepowodzeniem.")
stopResource(getThisResource())
end

for i,v in ipairs (getElementsByType("player")) do
local name getPlayerName(v)
local id getElementData(v"Player:ID")
dbQuery connect"INSERT INTO player ( name, id ) VALUES ( ?,? )"nameid)
end


Aktualizowanie Rekordu w tabeli:
dbQuery connect"UPDATE TABELA SET Kolumna = ?"wartość)

Wyjaśnienie:
connect = zmienna, przez którą połączyliśmy się z bazą danych
TABELA = Nazwa naszej Tabeli
Kolumna = Kolumna, którą chcemy zaktualizować
wartość = Podana wartość, którą chcemy zaktualizować rekord w kolumnie

Przykład:
local connect dbConnect "sqlite""file.db" )
if connect then
outputDebugString"Połączenie z bazą SQLite zakończyło się powodzeniem.")
else
outputDebugString"Połączenie z bazą SQLite zakończyło się niepowodzeniem.")
stopResource(getThisResource())
end

function login ()
local player source
local name getPlayerName(player)
local id getElementData(player"Player:ID")
dbQuery connect"UPDATE player SET id = ? WHERE name = ?"idname)
end
addEventHandler"onPlayerLogin"getRootElement(), login )


Pobieranie Rekordów z tabeli:
dbQueryconnect"SELECT * FROM TABELA" )

Wyjaśnienie:
connect = zmienna, przez którą połączyliśmy się z bazą danych
TABELA = Nazwa naszej Tabeli

Przykłady:
local connect dbConnect "sqlite""file.db" )
if connect then
outputDebugString"Połączenie z bazą SQLite zakończyło się powodzeniem.")
else
outputDebugString"Połączenie z bazą SQLite zakończyło się niepowodzeniem.")
stopResource(getThisResource())
end

function pobierz_wynik (plr)
local qh dbQueryconnect"SELECT * FROM player" )
local result dbPollqh, -)
for i,row in ipairs (result) do
outputChatBox"Name: "..row["name"].." ID: "..row["id"], plr)
end
end
addCommandHandler"pobierz"pobierz_wynik)

lub:
local connect dbConnect "sqlite""file.db" )
if connect then
outputDebugString"Połączenie z bazą SQLite zakończyło się powodzeniem.")
else
outputDebugString"Połączenie z bazą SQLite zakończyło się niepowodzeniem.")
stopResource(getThisResource())
end

function pobierz_wynik (plr)
local name getPlayerName(plr)
local qh dbQueryconnect"SELECT * FROM player WHERE name = ?"name )
local result dbPollqh, -)
for i,row in ipairs (result) do
outputChatBox"Name: "..row["name"].." ID: "..row["id"], plr)
end
end
addCommandHandler"pobierz"pobierz_wynik)


Usuwanie Rekordu z tabeli:
dbQuery connect"DELETE FROM TABELA WHERE Kolumna= ?"wartość)

Wyjaśnienie:
connect = zmienna, przez którą połączyliśmy się z bazą danych
TABELA = Nazwa naszej Tabeli
Kolumna = Kolumna w naszej Bazie Danych
Wartość = Wartość, po której znajdziemy odpowiedni rekord i go usuniemy
WHERE = Słowo to oznacza "gdzie", w tym przypadku oznacza po czym

Przykład:
function usun_wynik (plr)
local name getPlayerName(plr)
dbQuery connect"DELETE FROM player WHERE name = ?"name)
end
addCommandHandler"usun"usun_wynik)


Tworzenie Tabeli w Bazie Danych:
dbQuery connect"CREATE TABLE IF NOT EXISTS TABELA ( kolumna1 type1, kolumna2 type2 )" )

Lepiej używać w tym celu funkcji dbExec
Wyjaśnienie:
connect = zmienna, przez którą połączyliśmy się z bazą danych
CREATE TABLE = Tworzy tabelę
IF NOT EXISTS = Sprawdza, czy tabela już istnieje
TABELA = Nazwa naszej Tabeli
kolumna1 = Nazwa kolumny
type1 = typ danych zapisanych w tabeli [typy]
kolumna2 = Nazwa kolumny
type2 = typ danych zapisanych w tabeli [typy]

Przykład:
local connect dbConnect "sqlite""file.db" )
if connect then
outputDebugString"Połączenie z bazą SQLite zakończyło się powodzeniem.")
else
outputDebugString"Połączenie z bazą SQLite zakończyło się niepowodzeniem.")
stopResource(getThisResource())
end

function create_table ()
dbExec connect"CREATE TABLE IF NOT EXISTS player ( name VARCHAR, id INTEGER )" )
end
addCommandHandler"stworz"create_table)


dbExec
Funkcja ta działa tak samo jak funkcja dbQuery, ale w przypadku tej funkcji wynik nie jest zwracany.
dbExec jest funkcją typu Side-Server, możemy tylko używać jej po stronie server.

Składnia funkcji:
dbExec databaseConnectionquery [,argumenty] )

*databaseConnection = zmienna, przez którą połączyliśmy się z bazą danych
*query = zapytania SQL, za pomocą których odczytamy, dodamy, usuniemy wartość [rekord] z tabeli i inne rzeczy.

Zapytania są takie same jak w dbQuery

Link do Wiki Multi Theft Auto:

Więcej informacji znajdziesz w Wikipedii MTA:

dbExec


dbPoll
Funkcja ta sprawdza postęp w zapytaniu do bazy danych.
dbPoll jest funkcją typu Side-Server, możemy tylko używać jej po stronie server.

Składnia funkcji:
table dbPoll queryHandletimeout )

*queryHandle = Zmienna przechowująca wynik zapytania
*timeout = czas oczekiwania na wynik zapytania

Link do Wiki Multi Theft Auto:

Więcej informacji znajdziesz w Wikipedii MTA:

dbPoll


Ostatnio zmieniony przez zugi 2025-05-05, 02:58, w całości zmieniany 3 razy  
Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 8 piw(a):
arian110, PenkY, Mikołajj, kxkuba, matixx123, chade, HarnesHa12, walohmaciejowsk
Tagi: poradnik :: sql :: sqlite
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA » Poradniki do LUA » PORADNIK SQL - SQLite Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku