RU/executeSQLSelect
Jump to navigation
Jump to search
Эта функция позволяет считать строки из указанной таблицы встроенной базы данных, если таковые существуют.
Встроенная база данных на 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 )