RU/executeSQLSelect

From Multi Theft Auto: Wiki
Revision as of 10:16, 10 July 2010 by Damage22 (talk | contribs) (Created page with '__NOTOC__ {{RU/Server function}} Эта функция позволяет считать строки из указанной таблицы встроенной базы дан…')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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 )

Смотрите также

Template:RU/Registry functions