Wysłany: 2016-03-30, 15:45
luki123luki123
Place Game
Wiek: 28 Na forum: 5275 dni Posty: 1948
Nick w MP: LuKiO
Piwa : 6101
SQL - SQLite
Witaj
[you]
, 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 ( databaseType , host )
*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 ( databaseConnection , query [, 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ść1 , Wartość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 ( ?,? )" , name , id )
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 = ?" , id , name )
end
addEventHandler ( "onPlayerLogin" , getRootElement (), login )
Pobieranie Rekordów z tabeli:
dbQuery ( connect , "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 = dbQuery ( connect , "SELECT * FROM player" )
local result = dbPoll ( qh , - 1 )
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 = dbQuery ( connect , "SELECT * FROM player WHERE name = ?" , name )
local result = dbPoll ( qh , - 1 )
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 ( databaseConnection , query [, 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 ( queryHandle , timeout )
*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
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: