|
|
| Line 1: |
Line 1: |
| __NOTOC__
| |
| {{RU/Server function}}
| |
| Эта функция позволяет считать строки из указанной таблицы встроенной базы данных, если таковые существуют.
| |
|
| |
|
| Встроенная база данных на SQLite позволяет сохранять данные и получать к ним доступ из скриптов. Вызов этой функции будет соответствовать следующему запросу к базе данных:
| |
| <syntaxhighlight lang="lua">[sql]SELECT <fields> FROM <tables> WHERE <conditions> LIMIT <limit></syntaxhighlight>
| |
|
| |
| ==Синтаксис==
| |
| <syntaxhighlight lang="lua">
| |
| table executeSQLSelect ( string tableName, string fields, [ string conditions, int limit ] )
| |
| </syntaxhighlight>
| |
|
| |
| ===Обязательные аргументы===
| |
| *'''tableName:''' Название таблицы, к которой совершается запрос. Не допускаются пробелы в имени.
| |
| *'''fields:''' Строка с именами полей, которые будут запрошены. Пробелы также не допускаются. Если полей несколько, то их разделяют запятой (,). Можно использовать звездочку(*), чтобы запросить все поля таблицы. При использовании звездочки обратите внимание на порядок, в котором вы будете извлекать значения из таблицы.
| |
|
| |
| ===Дополнительные аргументы===
| |
| *'''conditions:''' Дополнительные условия запроса. Если их несколько, то их соединяют логическими операторами (AND, OR).
| |
| *'''limit:''' Максимальное количество строк, которое вы хотели бы получить.
| |
|
| |
| ===Вывод===
| |
| Возвращает двумерную таблицу, результаты хранятся в ячейке с адреосм [номер_строки][название параметра]. Обратите внимание, что если ничего не будет найдено, то таблица будет пустой (нулевой длины). Проверить это можно с помощью оператора #.
| |
|
| |
| Возвращает ''false'', если были переданы некорректные аргументы.
| |
|
| |
| ==Пример==
| |
| В этом примере при загрузке карты создается SQL-таблица, и в ней сохраняется информация об одежде игрока.
| |
| <syntaxhighlight lang="lua">
| |
| function onMapLoad ()
| |
| -- если таблицы не существует, то создаем ее
| |
| executeSQLCreateTable ( "players", "clothes_head_texture TEXT, clothes_head_model TEXT, player TEXT" )
| |
| end
| |
| addEventHandler ( "onGamemodeMapStart", getRootElement(), onMapLoad )
| |
|
| |
| function addInfoToSQL( theSpawnpoint, theTeam )
| |
| sourcename = getPlayerName ( source ) -- узнаем имя игрока
| |
|
| |
| -- пытаемся запросить запись в базе данных для этого игрока
| |
| result = executeSQLSelect ( "players", "player", "player = '" .. sourcename .. "'" )
| |
| if ( type( result ) == "table" and #result == 0 ) or not result then -- если данных не обнаружено
| |
| outputChatBox ( "This is your first time here! Welcome " .. sourcename .. "!", source )
| |
| executeSQLInsert ( "players", "'none', 'none', '" .. sourcename .. "'" )
| |
| else
| |
| outputChatBox ( "Welcome back " .. sourcename .. "!", source )
| |
| executeSQLUpdate ( "players", "clothes_head_texture = 'hairgreen', clothes_head_model = 'somehead'",
| |
| "player = '" .. sourcename .. "'" )
| |
| end
| |
|
| |
| -- запрашиваем информацию об одежде игрока
| |
| result = executeSQLSelect ( "players", "clothes_head_texture, clothes_head_model", "player = '" .. sourcename .. "'" )
| |
| outputChatBox ( "Your head texture is " .. result[1].clothes_head_texture )
| |
| outputChatBox ( "Your head model is " .. result[1]['clothes_head_model'] )
| |
| end
| |
| addEventHandler ( "onPlayerSpawn", getRootElement(), addInfoToSQL )
| |
| </syntaxhighlight>
| |
|
| |
| ==Смотрите также==
| |
| {{RU/SQL_functions}}
| |
| [[en:executeSQLSelect]]
| |