RU/executeSQLSelect: Difference between revisions
Jump to navigation
Jump to search
(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]] |
Latest revision as of 03:05, 1 April 2016
Эта функция позволяет считать строки из указанной таблицы встроенной базы данных, если таковые существуют.
Встроенная база данных на SQLite позволяет сохранять данные и получать к ним доступ из скриптов. Вызов этой функции будет соответствовать следующему запросу к базе данных:
[sql]SELECT <fields> FROM <tables> WHERE <conditions> LIMIT <limit>
Синтаксис
table executeSQLSelect ( string tableName, string fields, [ string conditions, int limit ] )
Обязательные аргументы
- tableName: Название таблицы, к которой совершается запрос. Не допускаются пробелы в имени.
- fields: Строка с именами полей, которые будут запрошены. Пробелы также не допускаются. Если полей несколько, то их разделяют запятой (,). Можно использовать звездочку(*), чтобы запросить все поля таблицы. При использовании звездочки обратите внимание на порядок, в котором вы будете извлекать значения из таблицы.
Дополнительные аргументы
- conditions: Дополнительные условия запроса. Если их несколько, то их соединяют логическими операторами (AND, OR).
- limit: Максимальное количество строк, которое вы хотели бы получить.
Вывод
Возвращает двумерную таблицу, результаты хранятся в ячейке с адреосм [номер_строки][название параметра]. Обратите внимание, что если ничего не будет найдено, то таблица будет пустой (нулевой длины). Проверить это можно с помощью оператора #.
Возвращает false, если были переданы некорректные аргументы.
Пример
В этом примере при загрузке карты создается SQL-таблица, и в ней сохраняется информация об одежде игрока.
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 )