RU/executeSQLSelect: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
mNo edit summary
(Blanked the page)
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]]

Revision as of 16:22, 31 March 2016