flash.dataSQLViewSchema Экземпляр SQLViewSchema используется для хранения сведений об определенном представлении базы данных.flash.data:SQLTableSchema Экземпляр SQLViewSchema используется для хранения сведений об определенном представлении базы данных. Он содержит имя представления (свойство name), инструкцию SQL, используемую для создания представления (свойство sql) и сведения о столбцах представления (свойство columns).

Для получения сведений о схеме представления используется метод SQLConnection.loadSchema(), с помощью которого загружаются сведения о схеме. Следует предварительно убедиться, что в качестве аргумента type используются значение null или SQLViewSchema. В полученном экземпляре SQLSchemaResult свойство views содержит массив экземпляров SQLViewSchema, представляющих представления базы данных.

Как правило, экземпляры SQLViewSchema не создаются непосредственно в прикладном коде.

flash.data.SQLConnection.loadSchema()flash.data.SQLColumnSchemaSQLViewSchema Создает экземпляр SQLViewSchema.databaseStringИмя связанной базы данных. nameStringИмя вида. sqlStringИнструкция SQL, используемая для создания представления. columnsArrayМассив экземпляров SQLColumnSchema, которые описывают столбцы данного представления. Создает экземпляр SQLViewSchema. Как правило, конструктор SQLViewSchema не вызывается непосредственно в прикладном коде. Чтобы получить сведения о схеме базы данных, нужно вызвать метод SQLConnection.loadSchema().
SQLColumnSchema Класс SQLColumnSchema используется для хранения сведений о характеристиках определенного столбца в таблице базы данных.Object Класс SQLColumnSchema используется для хранения сведений о характеристиках определенного столбца в таблице базы данных.

Для получения сведений о схеме данных одной или нескольких таблиц базы данных используется метод SQLConnection.loadSchema(), с помощью которого загружаются сведения о схеме. Следует предварительно убедиться, что аргумент includeColumnSchema имеет значение true. В результирующем экземпляре SQLSchemaResult определение каждой таблицы и каждого представления содержит свойство columns — массив экземпляров SQLColumnSchema, представляющих столбцы таблицы или представления.

Как правило, экземпляры SQLColumnSchema не создаются непосредственно в прикладном коде.

flash.data.SQLConnection.loadSchema()flash.data.SQLTableSchemaflash.data.SQLViewSchemaSQLColumnSchema Создает экземпляр SQLColumnSchema.nameStringИмя столбца. primaryKeyBooleanУказывает, входит ли данный столбец в состав первичного ключа соответствующей таблицы. allowNullBooleanУказывает, может ли данный столбец содержать значения NULL. autoIncrementBooleanУказывает, является ли столбец автоинкрементным. dataTypeStringОбъявленный тип столбца. defaultCollationTypeStringПорядок сортировки, определенный для данного столбца. Это значение соответствует одной из констант класса SQLCollationType:
  • SQLCollationType.BINARY означает, что в столбце используется порядок сортировки BINARY.
  • SQLCollationType.NO_CASE означает, что в столбце используется порядок сортировки NOCASE, при котором сравнение текстов выполняется без учета регистра.
Создает экземпляр SQLColumnSchema. Как правило, конструктор SQLColumnSchema не вызывается непосредственно в прикладном коде. Чтобы получить сведения о схеме базы данных, нужно вызвать метод SQLConnection.loadSchema().
flash.data.SQLConnection.loadSchema()flash.data.SQLCollationType
allowNull Указывает, допустимы ли в данном столбце значения NULL.Boolean Указывает, допустимы ли в данном столбце значения NULL. У столбца, для которого объявлено ограничение NOT NULL, свойство allowNull имеет значение false. autoIncrement Указывает, является ли столбец автоинкрементным.Boolean Указывает, является ли столбец автоинкрементным. Автоинкрементный столбец — это особый вид столбца PRIMARY KEY. Для него создается последовательность целых чисел, и значение этого столбца автоматически принимает значение следующего числа в последовательности, когда в таблицу добавляется новая строка. dataType Определяет тип данных столбца в виде строки.String Определяет тип данных столбца в виде строки. Значение представляет собой символьное имя типа данных, указанное в инструкции CREATE TABLE, которая использовалась для определения таблицы, или null, если тип данных не был указан. defaultCollationType Указывает порядок сортировки данного столбца, используемый по умолчанию.String Указывает порядок сортировки данного столбца, используемый по умолчанию. Значение этого свойства соответствует одной из констант класса SQLCollationType:
  • SQLCollationType.BINARY означает, что в столбце используется порядок сортировки BINARY.
  • SQLCollationType.NO_CASE означает, что в столбце используется порядок сортировки NOCASE, при котором сравнение текстов выполняется без учета регистра.
flash.data.SQLCollationType
name Определяет имя столбца.String Определяет имя столбца. primaryKey Указывает, является ли столбец первичным ключом (или одним из столбцов, образующих составной ключ) соответствующей таблицы.Boolean Указывает, является ли столбец первичным ключом (или одним из столбцов, образующих составной ключ) соответствующей таблицы.
SQLColumnNameStyle Этот класс содержит константы, представляющие возможные значения свойства SQLConnection.columnNameStyle.Object Этот класс содержит константы, представляющие возможные значения свойства SQLConnection.columnNameStyle. Эти значения обозначают различные параметры, которые управляют форматированием имен столбцов (имен свойств) в объектах, возвращаемых в результате выполнения инструкции SQL SELECT. flash.data.SQLConnection.columnNameStyleDEFAULT Означает, что имена столбцов, возвращаемых инструкцией SELECT, имеют формат по умолчанию.defaultString Означает, что имена столбцов, возвращаемых инструкцией SELECT, имеют формат по умолчанию. В формате по умолчанию имена столбцов имеют вид [table-name]_[column-name], если в инструкцию SELECT входят несколько таблиц, или [column-name], если в инструкцию SELECT входит только одна таблица. flash.data.SQLConnection.columnNameStyleLONG Означает, что имена столбцов, возвращаемых инструкцией SELECT, имеют полный формат.longString Означает, что имена столбцов, возвращаемых инструкцией SELECT, имеют полный формат. В этом формате имена столбцов имеют вид [table-name]_[column-name] независимо от количества таблиц в инструкции SELECT. flash.data.SQLConnection.columnNameStyleSHORT Означает, что имена столбцов, возвращаемых инструкцией SELECT, имеют краткий формат.shortString Означает, что имена столбцов, возвращаемых инструкцией SELECT, имеют краткий формат. В этом формате имена столбцов имеют вид [column-name] независимо от количества таблиц в инструкции SELECT.

Если в результирующем наборе содержится несколько столбцов с одинаковыми именами, в объект, полученный в результате, будет добавлено только одно свойство с таким именем. Этому свойству будет присвоено значение последнего столбца с таким именем в результирующем наборе. Например, рассмотрим следующую инструкцию SELECT:

	 SELECT customers.customerId, addresses.customerId
	 FROM customers INNER JOIN addresses
	    ON customers.customerId = addresses.customerId
	 

Если эту инструкцию выполнить применительно к экземпляру SQLConnection, в котором имена столбцов имеют краткий формат, свойство customerId каждого полученного в результате объекта будет иметь значение столбца customerId таблицы addresses.

flash.data.SQLConnection.columnNameStyle
SQLSchema Класс SQLSchema является базовым классом для сведений о схеме таких объектов базы данных, как таблицы, представления и индексы.Object Класс SQLSchema является базовым классом для сведений о схеме таких объектов базы данных, как таблицы, представления и индексы.

Для получения сведений о схеме таблицы базы данных используется метод SQLConnection.loadSchema(), с помощью которого загружаются сведения о схеме. В полученном экземпляре SQLSchemaResult содержатся массивы экземпляров, представляющих объекты базы данных.

Как правило, экземпляры SQLSchema не создаются непосредственно в прикладном коде.

flash.data.SQLConnection.loadSchema()SQLSchema Создает экземпляр SQLSchema.databaseStringИмя связанной базы данных. nameStringИмя объекта базы данных. sqlStringИнструкция SQL, используемая для создания объекта базы данных. Создает экземпляр SQLSchema. Как правило, конструктор SQLSchema не вызывается непосредственно в прикладном коде. Чтобы получить сведения о схеме базы данных, нужно вызвать метод SQLConnection.loadSchema(). database Имя базы данных, к которой относится данный объект схемы.String Имя базы данных, к которой относится данный объект схемы. Главная база данных, связанная с экземпляром SQLConnection, называется main (файл базы данных, открытый с помощью метода open() или openAsync() экземпляра SQLConnection). Остальные базы данных, с которыми установлено соединение с помощью метода SQLConnection.attach(), называются так, как это указано в вызове метода attach(). flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()flash.data.SQLConnection.attach()name Имя объекта данной схемы.String Имя объекта данной схемы. У каждого объекта базы данных есть уникальное имя. Имя определяется в инструкции SQL, создающей данный объект (например, в инструкции CREATE TABLE для таблицы).

Например, если индекс базы данных создан с помощью следующей инструкции SQL, свойство name схемы этого индекса будет иметь значение customer_index:

CREATE INDEX customer_index ON customers (id)
sql Возвращает весь текст инструкции SQL, используемой при создании объекта схемы.String Возвращает весь текст инструкции SQL, используемой при создании объекта схемы. Каждый объект базы данных создается с помощью инструкции SQL.

Например, если индекс базы данных создан с помощью следующей инструкции SQL:

CREATE INDEX customer_index ON customers (id)

свойство sql схемы этого индекса будет содержать весь текст инструкции.

SQLCollationType Этот класс содержит константы, представляющие возможные значения параметра defaultCollationType конструктора SQLColumnSchema, а также свойства SQLColumnSchema.defaultCollationType.Object Этот класс содержит константы, представляющие возможные значения параметра defaultCollationType конструктора SQLColumnSchema, а также свойства SQLColumnSchema.defaultCollationType.

Эти значения представляют различные порядки сортировки, которые могут быть заданы для столбца в таблице базы данных. Порядок сортировки — это способ сортировки и сравнения данных, например, различаются ли в базе данных символы верхнего и нижнего регистра.

Дополнительные сведения об определении и использовании последовательностей сортировки см. в разделе «COLLATE» приложения «Поддержка SQL в локальных базах данных».

flash.data.SQLColumnSchema.defaultCollationTypeBINARY Указывает, что для столбца определен порядок сортировки BINARY.binaryString Указывает, что для столбца определен порядок сортировки BINARY. При сортировке типа SQLCollationType.BINARY байтовые значения двух значений сравниваются независимо от кодировки текста.

Если для значений класса хранения TEXT используется двоичная сортировка, то при сортировке и сравнении значений столбцов в базе данных различаются символы верхнего и нижнего регистра.

flash.data.SQLColumnSchema.defaultCollationType
NO_CASE Указывает, что для столбца определен порядок сортировки NOCASE.noCaseString Указывает, что для столбца определен порядок сортировки NOCASE. Если задана сортировка типа SQLCollationType.NO_CASE, то при сортировке и сравнении двух значений регистр не учитывается. flash.data.SQLColumnSchema.defaultCollationType
SQLSchemaResult Экземпляр SQLSchemaResult содержит данные, полученные в результате вызова метода SQLConnection.loadSchema().Object Экземпляр SQLSchemaResult содержит данные, полученные в результате вызова метода SQLConnection.loadSchema(). Он содержит четыре свойства типа Array с данными требуемой схемы в зависимости от значений аргументов, указанных при вызове метода SQLConnection.loadSchema().

Чтобы получить экземпляр SQLSchemaResult для вызова метода SQLConnection.loadSchema(), необходимо вызвать метод getSchemaResult() экземпляра SQLConnection. Как правило, экземпляры SQLSchemaResult не создаются непосредственно в прикладном коде.

flash.data.SQLConnection.loadSchema()flash.data.SQLConnection.getSchemaResult()SQLSchemaResult Создает экземпляр SQLSchemaResult.tablesArrayМассив экземпляров SQLTableSchema, как указано в запросе loadSchema(). viewsArrayМассив экземпляров SQLViewSchema, как указано в запросе loadSchema(). indicesArrayМассив экземпляров SQLIndexSchema, как указано в запросе loadSchema(). triggersArrayМассив экземпляров SQLTriggerSchema, как указано в запросе loadSchema(). Создает экземпляр SQLSchemaResult. Как правило, конструктор SQLSchemaResult не вызывается непосредственно в прикладном коде. Чтобы получить сведения о схеме базы данных, нужно вызвать метод SQLConnection.loadSchema(). flash.data.SQLConnection.loadSchema()indices Массив экземпляров SQLIndexSchema, требуемых для вызова метода SQLConnection.loadSchema().Array Массив экземпляров SQLIndexSchema, требуемых для вызова метода SQLConnection.loadSchema(). Если заданные базы данных не содержат индексов или в вызове метода loadSchema() указано, что индексы следует исключить из результата, свойство indices будет содержать пустой массив (массив, у которого свойство length равно 0). flash.data.SQLConnection.loadSchema()flash.data.SQLIndexSchematables Массив экземпляров SQLTableSchema, требуемых для вызова метода SQLConnection.loadSchema().Array Массив экземпляров SQLTableSchema, требуемых для вызова метода SQLConnection.loadSchema(). Если заданные базы данных не содержат индексов или в вызове метода loadSchema() указано, что таблицы следует исключить из результата, свойство tables будет содержать пустой массив (массив, у которого свойство length равно 0). flash.data.SQLConnection.loadSchema()flash.data.SQLTableSchematriggers Массив экземпляров SQLTriggerSchema, требуемых для вызова метода SQLConnection.loadSchema().Array Массив экземпляров SQLTriggerSchema, требуемых для вызова метода SQLConnection.loadSchema(). Если заданные базы данных не содержат индексов или в вызове метода loadSchema() указано, что триггеры следует исключить из результата, свойство triggers будет содержать пустой массив (массив, у которого свойство length равно 0). flash.data.SQLConnection.loadSchema()flash.data.SQLTriggerSchemaviews Массив экземпляров SQLViewSchema, требуемых для вызова метода SQLConnection.loadSchema().Array Массив экземпляров SQLViewSchema, требуемых для вызова метода SQLConnection.loadSchema(). Если заданные базы данных не содержат индексов или в вызове метода loadSchema() указано, что представления следует исключить из результата, свойство views будет содержать пустой массив (массив, у которого свойство length равно 0). flash.data.SQLConnection.loadSchema()flash.data.SQLViewSchema
SQLTransactionLockType Этот класс содержит константы, представляющие возможные значения параметра option метода SQLConnection.begin().Object Этот класс содержит константы, представляющие возможные значения параметра option метода SQLConnection.begin(). flash.data.SQLConnection.begin()DEFERRED Указывает параметр отложенной блокировки транзакции.deferredString Указывает параметр отложенной блокировки транзакции. Для транзакции с отложенной блокировкой блокировка базы данных не требуется до первого обращения к базе данных. При отложенной транзакции до первой операции чтения или записи блокировка не требуется. flash.data.SQLConnection.begin()EXCLUSIVE Указывает параметр монопольной блокировки транзакции.exclusiveString Указывает параметр монопольной блокировки транзакции. Для транзакции с монопольной блокировкой требуется немедленная блокировка базы данных. Другие объекты SQLStatement, выполняемые применительно к этой же базе данных с использованием другого подключения SQLConnection (в этом же или другом приложении AIR), не смогут осуществлять в ней операции чтения или записи. flash.data.SQLConnection.begin()IMMEDIATE Указывает параметр немедленной блокировки транзакции.immediateString Указывает параметр немедленной блокировки транзакции. Для транзакции с немедленной блокировкой требуется немедленная блокировка базы данных. Другие объекты SQLStatement, выполняемые применительно к этой же базе данных с использованием другого подключения SQLConnection (в этом же или другом приложении AIR), смогут осуществлять в ней операции чтения, но не смогут осуществлять операции записи. Однако для других подключений, используемых для чтения данных из базы данных, первоначальное состояние данных в базе идентично состоянию базы данных до вызова метода begin() экземпляра подключения SQLConnection внутри транзакции. Любые незафиксированные изменения данных, произведенные в немедленно заблокированной транзакции, не доступны для других подключений. flash.data.SQLConnection.begin()SQLConnection Экземпляр SQLConnection используется для управления созданием файлов локальной базы данных SQL (локальных баз данных) и подключением к ним.flash.events:EventDispatcher Экземпляр SQLConnection используется для управления созданием файлов локальной базы данных SQL (локальных баз данных) и подключением к ним.

Функциональные возможности класса SQLConnection подразделяются на несколько категорий:

  • Файл локальной базы данных SQL создается и открывается вызовом метода open() экземпляра SQLConnection в свойстве sqlConnection экземпляра SQLStatement.

  • Класс SQLConnection также предоставляет состояние для инструкций SQL, включая механизм выполнения нескольких инструкций в одной транзакции. Управление транзакциями осуществляется с использованием методов begin(), commit() и rollback(). Кроме того, методы setSavepoint(), releaseSavepoint() и rollbackToSavepoint() позволяют коду определять точки сохранения и управлять ими. Они служат для разбивки транзакций на группы операций.

  • Класс SQLConnection обеспечивает доступ к сведениям о схемах подключенных баз данных. Схема базы данных содержит определения ее таблиц, столбцов, индексов и триггеров. Дополнительные сведения см. в описании метода loadSchema().

  • Класс SQLConnection предоставляет возможность шифрования баз данных с использованием стандарта AES в режиме CCM. Это обеспечивает как проверку подлинности, так и конфиденциальность данных. Для шифрования базы данных необходимо при ее создании указать 16-байтный ключ (с помощью ByteArray). В дальнейшем этот ключ можно изменить с помощью метода SQLConnection.reencrypt(). Шифрование снижает производительность при выполнении операций записи и чтения в отношении базы данных. Шифрование применяется к данным, хранящимся на диске, но не к данным во временной кэш-памяти. Шифрование не поддерживается для баз данных в памяти.

  • Экземпляр SQLConnection может использоваться для получения уведомлений о событиях на уровне базы данных и контроля всех аспектов конфигурации базы данных, включая размер страниц кэша, параметры отмены обработки и выполнения инструкций.

Экземпляр SQLConnection работает в одном или двух отдельных режимах выполнения: асинхронном и синхронном. Для синхронного выполнения при подключении к главной базе данных экземпляра SQLConnection необходимо использовать метод open(). Для асинхронного выполнения при подключении к главной базе данных экземпляра подключения необходимо использовать метод openAsync().

При асинхронном выполнении для определения завершения или сбоя операции используются прослушиватели или экземпляр Responder. Операции выполняются не в основном, а в фоновом потоке приложения, поэтому оно будет продолжать работать и взаимодействовать с пользователем даже во время выполнения операций с базой данных. Каждый асинхронный экземпляр SQLConnection выполняет инструкции SQL в собственной цепочке.

При асинхронном режиме выполнения сначала с помощью соответствующего метода вызывается определенная операция, а для определения ее завершения (или сбоя) необходимо зарегистрировать прослушиватель соответствующего события. Каждой операции соответствует событие, которое отправляется при ее успешном завершении. Например, если метод openAsync() завершается успешно (если открыто подключение базы данных), отправляется событие open. При сбое какой-либо операции отправляется событие error. Экземпляр SQLError в свойстве error объекта SQLErrorEvent содержит сведения об определенной ошибке, включая выполняемую операцию и причину ее сбоя.

При синхронном выполнении для определения завершения или сбоя операции не нужно регистрировать прослушиватели событий. Чтобы определить ошибки, заключите инструкции, которые их вызывают, в блоки try..catch. Из-за того что синхронные операции выполняются в основном потоке, при выполнении одной или нескольких операций с базой данных все функции приложения (включая обновление экрана и возможность работы с мышью и клавиатурой) приостанавливаются. Продолжительные операции могут привести к заметной остановке работы приложения.

flash.data.SQLStatementflash.events.SQLEventflash.events.SQLErrorEventflash.errors.SQLErrorБыстрое начало работы: асинхронная работа с локальной базой данных SQL (Flex)Быстрое начало работы: асинхронная работа с локальной базой данных SQL (Flash)Быстрое начало работы: асинхронная работа с локальной базой данных SQL (HTML)Быстрое начало работы: синхронная работа с локальной базой данных SQL (Flex)Быстрое начало работы: синхронная работа с локальной базой данных SQL (Flash)Быстрое начало работы: синхронная работа с локальной базой данных SQL (HTML)update Отправляется при изменении данных в любой таблице любой подключенной базы данных в результате выполнения команды SQL UPDATE.flash.events.SQLUpdateEvent.UPDATEflash.events.SQLUpdateEvent Отправляется при изменении данных в любой таблице любой подключенной базы данных в результате выполнения команды SQL UPDATE. Данные могут измениться непосредственно в результате выполнения инструкции UPDATE с помощью экземпляра SQLStatement или косвенно, в результате запуска триггера в ответ на выполнение инструкции. flash.data.SQLStatementsetSavepoint Отправляется после успешного выполнения метода setSavepoint().flash.events.SQLEvent.SET_SAVEPOINTflash.events.SQLEvent Отправляется после успешного выполнения метода setSavepoint(). setSavepoint()schema Отправляется при успешном вызове метода loadSchema() и готовности результатов схемы.flash.events.SQLEvent.SCHEMAflash.events.SQLEvent Отправляется при успешном вызове метода loadSchema() и готовности результатов схемы. loadSchema()rollbackToSavepoint Отправляется после успешного выполнения метода rollbackToSavepoint().flash.events.SQLEvent.ROLLBACK_TO_SAVEPOINTflash.events.SQLEvent Отправляется после успешного выполнения метода rollbackToSavepoint(). rollbackToSavepoint()rollback Отправляется при успешном вызове метода rollback().flash.events.SQLEvent.ROLLBACKflash.events.SQLEvent Отправляется при успешном вызове метода rollback(). rollback()releaseSavepoint Отправляется после успешного выполнения метода releaseSavepoint().flash.events.SQLEvent.RELEASE_SAVEPOINTflash.events.SQLEvent Отправляется после успешного выполнения метода releaseSavepoint(). releaseSavepoint()reencrypt Отправляется при успешном завершении операции вызова метода reencrypt().flash.events.SQLEvent.REENCRYPTflash.events.SQLEvent Отправляется при успешном завершении операции вызова метода reencrypt(). reencrypt()open Отправляется при успешном вызове метода openAsync().flash.events.SQLEvent.OPENflash.events.SQLEvent Отправляется при успешном вызове метода openAsync(). openAsync()insert Отправляется при изменении данных в любой таблице любой подключенной базы данных в результате выполнения команды SQL INSERT.flash.events.SQLUpdateEvent.INSERTflash.events.SQLUpdateEvent Отправляется при изменении данных в любой таблице любой подключенной базы данных в результате выполнения команды SQL INSERT. Данные могут измениться непосредственно в результате выполнения инструкции INSERT с помощью экземпляра SQLStatement или косвенно, в результате запуска триггера в ответ на выполнение инструкции. flash.data.SQLStatementerror Отправляется, если любая из асинхронных операций объекта SQLConnection вызывает ошибку.flash.events.SQLErrorEvent.ERRORflash.events.SQLErrorEvent Отправляется, если любая из асинхронных операций объекта SQLConnection вызывает ошибку. Экземпляр события SQLErrorEvent, которое отправляется в том случае, если свойство error объекта события содержит сведения об операции, при выполнении которой возникла ошибка. detach Отправляется при успешном вызове метода detach().flash.events.SQLEvent.DETACHflash.events.SQLEvent Отправляется при успешном вызове метода detach(). detach()delete Отправляется при изменении данных в любой таблице любой подключенной базы данных в результате выполнения команды SQL DELETE.flash.events.SQLUpdateEvent.DELETEflash.events.SQLUpdateEvent Отправляется при изменении данных в любой таблице любой подключенной базы данных в результате выполнения команды SQL DELETE. Данные могут измениться непосредственно в результате выполнения инструкции DELETE с помощью экземпляра SQLStatement или косвенно, в результате запуска триггера в ответ на выполнение инструкции. flash.data.SQLStatementdeanalyze Отправляется при успешном вызове метода deanalyze().flash.events.SQLEvent.DEANALYZEflash.events.SQLEvent Отправляется при успешном вызове метода deanalyze(). deanalyze()commit Отправляется при успешном вызове метода commit().flash.events.SQLEvent.COMMITflash.events.SQLEvent Отправляется при успешном вызове метода commit(). commit()close Отправляется при успешном вызове метода close().flash.events.SQLEvent.CLOSEflash.events.SQLEvent Отправляется при успешном вызове метода close(). close()compact Отправляется при успешном вызове метода compact().flash.events.SQLEvent.COMPACTflash.events.SQLEvent Отправляется при успешном вызове метода compact(). compact()cancel Отправляется при успешном вызове метода cancel().flash.events.SQLEvent.CANCELflash.events.SQLEvent Отправляется при успешном вызове метода cancel(). cancel()begin Отправляется при успешном вызове метода begin().flash.events.SQLEvent.BEGINflash.events.SQLEvent Отправляется при успешном вызове метода begin(). begin()attach Отправляется при успешном вызове метода attach().flash.events.SQLEvent.ATTACHflash.events.SQLEvent Отправляется при успешном вызове метода attach(). attach()analyze Отправляется при успешном завершении операции analyze().flash.events.SQLEvent.ANALYZEflash.events.SQLEvent Отправляется при успешном завершении операции analyze(). analyze()SQLConnection Создает экземпляр SQLConnection.если конструктор вызывается из какой-либо изолированной среды за пределами главной изолированной среды приложения. SecurityErrorSecurityError Создает экземпляр SQLConnection. addEventListener Регистрирует объект прослушивателя события на объекте EventDispatcher для получения прослушивателем уведомления о событии.typeStringТип события. listenerFunctionФункция прослушивателя, обрабатывающая событие. Эта функция должна принимать объект Event в качестве единственного параметра и не должна что-либо возвращать , как показано в примере: function(evt:Event):void

Эта функция может иметь любое имя.

useCaptureBooleanfalse Определяет, работает ли прослушиватель в фазе захвата или в целевой фазе и в фазе восходящей цепочки. Если значение useCapture равно true, прослушиватель обрабатывает событие только во время фазы захвата, но не во время целевой фазы или фазы восходящей цепочки. Если значение useCapture равно false, то прослушиватель обрабатывает событие только в целевой фазе или фазе восходящей цепочки. Чтобы прослушивать событие во всех трех фазах, необходимо вызвать addEventListener() дважды: один раз с useCapture в значении true, а другой — с useCapture в значении false. priorityint0.0Уровень приоритета прослушивателя событий. Приоритет определяется 32-разрядным целым числом со знаком. Чем больше число, тем выше приоритет. Все прослушиватели событий с приоритетом n обрабатываются перед прослушивателями с приоритетом n-1. Прослушиватели с одинаковым приоритетом обрабатываются в порядке их добавления. Значение приоритета по умолчанию равно 0. useWeakReferenceBooleanfalseОпределяет, является ли ссылка на listener «сильной» или «слабой». «Сильная» ссылка (по умолчанию) предотвращает удаление listener сборщиком мусора. «Слабая» ссылка не выполняет эту функцию.

Функции элементов уровня класса не подлежат удалению в качестве мусора, вследствие чего можно установить useWeakReference равным true для функций элементов уровня класса, не подвергая их возможности подобного удаления. Если свойству useWeakReference присвоить значение true для прослушивателя, который является вложенной внутренней функцией, то функция будет очищена и перестанет быть постоянной. При создании ссылок на внутреннюю функцию (возможно сохранение в другой переменной) она не будет собираться в качестве мусора и останется устойчивой.

Регистрирует объект прослушивателя события на объекте EventDispatcher для получения прослушивателем уведомления о событии. Можно регистрировать прослушиватели событий в любом узле из списка отображения для каждого типа события, фазы и приоритета.

После успешной регистрации прослушивателя событий невозможно изменить его приоритет путем дополнительных вызовов addEventListener(). Чтобы изменить приоритет прослушивателя, необходимо сначала вызвать метод removeListener(). Затем можно снова зарегистрировать прослушиватель с новым приоритетом.

Следует учесть, что после регистрации прослушивателя последующие вызовы метода addEventListener() с другим значением свойства type или useCapture приводят к регистрации другого прослушивателя. Например, прослушиватель, изначально зарегистрированный со значением useCapture, равным true, прослушивает только во время фазы захвата. Если вызвать метод addEventListener() еще раз с тем же объектом прослушивателя, но со свойством useCapture в значении false, то будет два прослушивателя: один — прослушивающий в фазе захвата, а другой — в целевой фазе и фазе восходящей цепочки.

Невозможно зарегистрировать прослушиватель события только для целевой фазы или для фазы восходящей цепочки. Эти фазы соединены при регистрации, поскольку восходящая цепочка применяется только к предшественникам целевого узла.

Если прослушиватель событий больше не нужен, его можно удалить, вызвав метод removeEventListener(), иначе могут возникнуть проблемы с памятью. Прослушиватели событий не удаляются из памяти автоматически, так как сборщик мусора не удаляет прослушиватель, пока существует объект, отправляющий соответствующее событие (если параметру useWeakReference не задано значение true).

Копирование экземпляра EventDispatcher не приводит к копированию прослушивателей событий, присоединенных к нему. (Если для вновь создаваемого узла требуется прослушиватель событий, его необходимо присоединить после создания узла.) При этом при перемещении экземпляра EventDispatcher присоединенные к нему прослушиватели событий перемещаются вместе с ним.

Если прослушиватель регистрируется для узла в тот момент, когда на нем обрабатывается событие, то в текущей фазе он не запускается, однако может запуститься в следующей фазе потока события, например в фазе восходящей цепочки.

Прослушиватель событий, удаленный из узла во время обработки события на этом узле, будет запускаться текущими операциями. После удаления прослушиватель событий больше не вызывается (если не будет снова зарегистрирован для дальнейшей обработки).

analyze Собирает статистику об индексах базы данных и сохраняет ее в базе данных.Если этот метод вызван, когда экземпляр SQLConnection не подключен к базе данных (свойство connected имеет значение false). IllegalOperationErrorflash.errors:IllegalOperationErrorесли произошел сбой операции в синхронном режиме выполнения. SQLErrorflash.errors:SQLErrorresourceNameStringnullИмя базы данных или таблицы, индексы которых требуется проанализировать. Если указанный ресурс является таблицей, которая имеет уникальное среди всех подключенных баз данных имя, необходимо указать только имя таблицы. Тем не менее, чтобы избежать неоднозначности, если имя таблицы окажется неуникальным, его можно указать в виде [database-name]. [table-name]. Если параметр resourceName имеет значение null (по умолчанию), анализируются все индексы подключенных баз данных. responderflash.net:RespondernullОбъект, для которого определены методы, вызываемые при успешном выполнении или сбое операции. В асинхронном режиме выполнения, если аргумент responder имеет значение null, по окончании выполнения отправляется событие analyze или error. Собирает статистику об индексах базы данных и сохраняет ее в базе данных. Статистика может использоваться оптимизатором запросов (той частью ядра СУБД, которая определяет самый эффективный способ выполнения каждой инструкции). Статистика помогает оптимизатору запросов лучшим образом выбрать один или несколько индексов при выполнении определенного запроса.

Если в базе данных определены индексы, но метод analyze() не вызван, среда выполнения все равно будет использовать их при выполнении инструкции. Но без дополнительных статистических данных, которые формируются с помощью метода analyze(), среда выполнения может выбрать не самый эффективный индекс для определенного запроса.

При изменении данных таблицы (в результате выполнения операторов INSERT, UPDATE или DELETE) изменяются также и индексы, связанные с этой таблицей. Статистические данные, которые формируются с помощью метода analyze(), не обновляются автоматически. Следовательно, после большого числа изменений данных может быть полезным повторный вызов метода analyze(). Однако польза, полученная от вызова метода analyze(), зависит от нескольких факторов, включая число индексов в таблице, соотношение числа измененных строк и общего числа строк в таблице, степень изменения проиндексированных данных таблицы и того, насколько измененные данные отличаются от ранее измененных данных.

Параметр resourceName указывает, выполняется ли операция для индексов всех подключенных баз данных, определенной базы данных или определенной таблицы.

Каждый раз при вызове данного метода все ранее созданные статистические данные стираются и повторно создаются для базы данных или таблицы, указанной в параметре resourceName (или для всех таблиц всех подключенных баз данных, если параметр resourceName имеет значение null). Этот метод можно вызывать в любое время, пока открыто подключение базы данных. Операция analyze() и ее статистические данные не включаются в транзакцию. Несмотря на это, не рекомендуется вызывать метод analyze(), если в данный момент в базе данных открыта транзакция (свойство inTransaction имеет значение true). Это связано с тем, что при вызове метода analyze() не учитываются любые изменения данных, схем таблиц или индексов, которые были выполнены в транзакции, но ещё не были зафиксированы, следовательно, на момент фиксации транзакции данные метода analyze() будут устаревшими.

Для удаления статистических данных, созданных с помощью метода analyze(), используется метод deanalyze().

deanalyze()analyzeflash.events:SQLEventОтправляется после успешного завершения операции. Отправляется после успешного завершения операции.errorflash.events:SQLErrorEventОтправляется после сбоя операции в асинхронном режиме выполнения. Отправляется после сбоя операции в асинхронном режиме выполнения.
attach Добавляет новую базу данных в экземпляр SQLConnection, присваивая ей заданное имя.Когда параметр name является пустой строкой ("") или имеет значение null ArgumentErrorArgumentErrorЕсли параметр reference имеет значение, отличное от экземпляра flash.filesystem.File ArgumentErrorArgumentErrorКогда аргумент encryptionKey не имеет значение null и его свойство length не равно 16 байтам ArgumentErrorArgumentErrorКогда параметр reference имеет значение null, а аргумент encryptionKey не имеет значение null ArgumentErrorArgumentErrorЕсли экземпляр SQLConnection не подключен к базе данных (свойство connected имеет значение false), или если в данный момент открыта транзакция (свойство inTransaction имеет значение true). IllegalOperationErrorflash.errors:IllegalOperationErrorесли произошел сбой операции в синхронном режиме выполнения. SQLErrorflash.errors:SQLErrornameStringИмя, используемое для определения только что подключенной базы данных. Это имя можно использовать в операторах SQL, чтобы в явном виде указать принадлежность таблицы определенной базе данных в формате [database-name]. [table-name]. Имена main и temp зарезервированы и не могут использоваться. referenceObjectnullСсылка на подключаемый файл базы данных (экземпляр flash.filesystem.File). Если ссылка ссылается на отсутствующий файл, то создается новый файл базы данных или генерируется ошибка в зависимости от значения, указанного в параметре openMode при вызове метода open() или openAsync() для подключения главной базы данных.

Если параметр имеет значение null, то создается и подключается база данных в оперативной памяти.

responderflash.net:RespondernullОбъект, для которого определены методы, вызываемые при успешном выполнении или сбое операции. При асинхронном режиме выполнения, если аргумент responder имеет значение null, по окончании выполнения отправляется событие attach или error. encryptionKeyflash.utils:ByteArraynullКлюч шифрования для файла базы данных. Если вызов метода attach() создает базу данных, эта база данных шифруется, а указанный ключ используется в качестве ключа шифрования базы данных. Если вызов этого метода присоединяет существующую зашифрованную базу данных, это значение должно совпадать с ключом шифрования базы данных, иначе произойдет ошибка. Если присоединяемая база данных не зашифрована или требуется создать незашифрованную базу данных, это значение должно быть null (по умолчанию).

Действительным считается ключ шифрования длиной 16 байтов. Базу данных в памяти зашифровать невозможно, поэтому этот параметр должен иметь значение null, если параметр reference имеет значение null.

Если при присоединении зашифрованной базы данных предоставленный ключ шифрования не совпадает с ключом шифрования базы данных, выдается исключение. В синхронном режиме выполнения выдается исключение SQLError. В асинхронном режиме выполнения отправляется событие SQLErrorEvent, а свойство error объекта события содержит экземпляр SQLError. В любом из этих случаев свойство errorID объекта SQLError имеет значение 3138 («Открытый файл не является файлом базы данных»).

Параметр encryptionKey доступен, начиная с AIR 1.5.

Добавляет новую базу данных в экземпляр SQLConnection, присваивая ей заданное имя. Подключение базы данных позволяет использовать ее в инструкциях SQL, выполняемых применительно к экземпляру SQLConnection.

Если база данных уже подключена с использованием заданного имени, вызов метода attach() приведет к появлению ошибки. Тем не менее, одну и ту же базу данных можно подключить несколько раз, используя уникальные имена. К одному экземпляру SQLConnection можно подключить не более 10 баз данных.

Любой оператор SQL можно выполнить применительно к базе данных, которая подключена с помощью метода attach(), вызванного для главной базы данных (базы данных, которая подключена с помощью метода open() или openAsync()). Оператор SQL может обращаться к таблицам из любых баз данных, которые подключены к экземпляру SQLConnection, связанному с оператором, включая возможность обращения к таблицам из нескольких баз данных в одном операторе. Когда среда выполнения анализирует имена таблиц в инструкции, она осуществляет поиск по базам данных экземпляра SQLConnection в порядке их подключения, начиная с базы данных, которая была подключена с помощью метода open() или openAsync(). Чтобы в явном виде указать имя таблицы, в инструкции нужно использовать имя базы данных (как указано в передаваемом в метод attach() параметре name).

Для удаления базы данных, подключенной с помощью метода attach(), используется метод detach(). При закрытии экземпляра SQLConnection (с помощью метода close()) все подключенные базы данных отсоединяются.

Подключенная база данных использует тот же режим выполнения (синхронный или асинхронный), что и главная, в зависимости от метода, с помощью которого была подключена главная база данных open() или openAsync().

open()openAsync()detach()attachflash.events:SQLEventОтправляется после успешного завершения операции. Отправляется после успешного завершения операции.errorflash.events:SQLErrorEventОтправляется после сбоя операции в асинхронном режиме выполнения. Отправляется после сбоя операции в асинхронном режиме выполнения.
begin Начинает транзакцию, в рамках которой в отношении базы данных подключения или сгруппированных баз данных выполняются инструкции SQL.Если этот метод вызван, когда экземпляр SQLConnection не подключен к базе данных (свойство connected имеет значение false). IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли указанный параметр не является одной из констант класса SQLTransactionLockType. ArgumentErrorArgumentErrorесли произошел сбой операции в синхронном режиме выполнения. SQLErrorflash.errors:SQLErroroptionStringnullУказывает стратегию блокировки, используемую данной транзакцией. Может принимать значение одной из констант, определенных в классе SQLTransactionLockType:
  • SQLTransactionLockType.DEFERRED обозначает, что блокировка не выполняется до первой операции чтения или записи.
  • SQLTransactionLockType.EXCLUSIVE обозначает, что блокировка выполняется при первой возможности, при этом другие экземпляры подключения SQLConnection не осуществлять в базе данных операции чтения и записи.
  • SQLTransactionLockType.IMMEDIATE обозначает, что блокировка выполняется при первой возможности, при этом другие экземпляры SQLConnection смогут осуществлять операции чтения из базы данных, но не смогут осуществлять операции записи.

Значение по умолчанию (null) эквивалентно константе SQLTransactionLockType.DEFERRED.

responderflash.net:RespondernullОбъект, для которого определены методы, вызываемые при успешном выполнении или сбое операции. При асинхронном режиме выполнения, если аргумент responder имеет значение null, по окончании выполнения отправляется событие begin или error.
Начинает транзакцию, в рамках которой в отношении базы данных подключения или сгруппированных баз данных выполняются инструкции SQL.

По умолчанию каждая инструкция SQL выполняется в рамках своей транзакции, которая завершается после успешного выполнения или сбоя инструкции. При создании транзакции с помощью метода begin() создается новая ручная транзакция. После этого все инструкции SQL, выполненные применительно к экземпляру SQLConnection, находятся внутри транзакции, поэтому все действия и изменения, которые ими выполнены, можно зафиксировать (сделать постоянными) или откатить (отменить) не по одному, а только все одновременно.

Для завершения транзакции используется метод commit() или rollback() в зависимости от того, что необходимо сделать с изменениями, сделанными инструкциями из транзакции: сделать их постоянными или отменить.

Ступенчатые вызовы метода begin() игнорируются. Можно создать точки сохранения, которые напоминают закладки внутри транзакции, вызвав метод setSavepoint(). После этого можно частично сохранять или отменять выполнение инструкций SQL путем вызова методов releaseSavepoint() и rollbackToSavepoint(). Однако если транзакция запущена с помощью метода begin(), изменения сохраняются в базе данных только после вызова метода commit().

Если подключение к базе данных закрывается при открытой транзакции, AIR автоматически выполняет откат транзакции. (Примечание. В AIR 1.1 и в предыдущих версиях при закрытии подключения открытая транзакция автоматически фиксируется.)

В транзакции могут быть как инструкции, выполняемые в одной базе данных, так и инструкции, выполняемые в различных подключенных базах данных.

Следующий пример демонстрирует выполнение нескольких инструкций SQL INSERT в рамках одной транзакции. Сначала добавляется строка в таблицу employees (сотрудники). Затем извлекается первичный ключ только что вставленной строки и используется для добавления строки в связанную таблицу phoneNumbers (номера телефонов). package { import flash.data.SQLConnection; import flash.data.SQLResult; import flash.data.SQLStatement; import flash.display.Sprite; import flash.events.SQLErrorEvent; import flash.events.SQLEvent; import flash.filesystem.File; public class MultiInsertTransactionExample extends Sprite { private var conn:SQLConnection; private var insertEmployee:SQLStatement; private var insertPhoneNumber:SQLStatement; public function MultiInsertTransactionExample():void { // define where to find the database file var appStorage:File = File.applicationStorageDirectory; var dbFile:File = appStorage.resolvePath("ExampleDatabase.db"); // open the database connection conn = new SQLConnection(); conn.addEventListener(SQLErrorEvent.ERROR, errorHandler); conn.addEventListener(SQLEvent.OPEN, openHandler); conn.openAsync(dbFile); } // Called when the database is connected private function openHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.OPEN, openHandler); // start a transaction conn.addEventListener(SQLEvent.BEGIN, beginHandler); conn.begin(); } // Called when the transaction begins private function beginHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.BEGIN, beginHandler); // create and execute the first SQL statement: // insert an employee record insertEmployee = new SQLStatement(); insertEmployee.sqlConnection = conn; insertEmployee.text = "INSERT INTO employees (lastName, firstName, email) " + "VALUES (:lastName, :firstName, :email, :birthday)"; insertEmployee.parameters[":lastName"] = "Smith"; insertEmployee.parameters[":firstName"] = "Bob"; insertEmployee.parameters[":email"] = "bsmith@example.com"; insertEmployee.parameters[":birthday"] = new Date(1971, 8, 12); insertEmployee.addEventListener(SQLEvent.RESULT, insertEmployeeHandler); insertEmployee.addEventListener(SQLErrorEvent.ERROR, errorHandler); insertEmployee.execute(); } // Called after the employee record is inserted private function insertEmployeeHandler(event:SQLEvent):void { insertEmployee.removeEventListener(SQLEvent.RESULT, insertEmployeeHandler); insertEmployee.removeEventListener(SQLErrorEvent.ERROR, errorHandler); // Get the employee id of the newly created employee row var result:SQLResult = insertEmployee.getResult(); var employeeId:Number = result.lastInsertRowID; // Add a phone number to the related phoneNumbers table insertPhoneNumber = new SQLStatement(); insertPhoneNumber.sqlConnection = conn; insertPhoneNumber.text = "INSERT INTO phoneNumbers (employeeId, type, number) " + "VALUES (:employeeId, :type, :number)"; insertPhoneNumber.parameters[":employeeId"] = employeeId; insertPhoneNumber.parameters[":type"] = "Home"; insertPhoneNumber.parameters[":number"] = "(555) 555-1234"; insertPhoneNumber.addEventListener(SQLEvent.RESULT, insertPhoneNumberHandler); insertPhoneNumber.addEventListener(SQLErrorEvent.ERROR, errorHandler); insertPhoneNumber.execute(); } // Called after the phone number record is inserted private function insertPhoneNumberHandler(event:SQLEvent):void { insertPhoneNumber.removeEventListener(SQLEvent.RESULT, insertPhoneNumberHandler); insertPhoneNumber.removeEventListener(SQLErrorEvent.ERROR, errorHandler); // No errors so far, so commit the transaction conn.addEventListener(SQLEvent.COMMIT, commitHandler); conn.commit(); } // Called after the transaction is committed private function commitHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.COMMIT, commitHandler); trace("Transaction complete"); } // Called whenever an error occurs private function errorHandler(event:SQLErrorEvent):void { // If a transaction is happening, roll it back if (conn.inTransaction) { conn.addEventListener(SQLEvent.ROLLBACK, rollbackHandler); conn.rollback(); } trace(event.error.message); trace(event.error.details); } // Called when the transaction is rolled back private function rollbackHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.ROLLBACK, rollbackHandler); // add additional error handling, close the database, etc. } } } Следующий пример демонстрирует выполнение нескольких инструкций SQL DELETE в рамках одной транзакции. Транзакция используется для удаления записи сотрудника. Сначала удаляются связанные строки в таблице phoneNumbers. Затем удаляется строка записи сотрудника из таблицы employees. package { import flash.data.SQLConnection; import flash.data.SQLResult; import flash.data.SQLStatement; import flash.display.Sprite; import flash.events.SQLErrorEvent; import flash.events.SQLEvent; import flash.filesystem.File; public class MultiDeleteTransactionExample extends Sprite { private var conn:SQLConnection; private var deleteEmployee:SQLStatement; private var deletePhoneNumbers:SQLStatement; private var employeeIdToDelete:Number = 25; public function MultiDeleteTransactionExample():void { // define where to find the database file var appStorage:File = File.applicationStorageDirectory; var dbFile:File = appStorage.resolvePath("ExampleDatabase.db"); // open the database connection conn = new SQLConnection(); conn.addEventListener(SQLErrorEvent.ERROR, errorHandler); conn.addEventListener(SQLEvent.OPEN, openHandler); conn.openAsync(dbFile); } // Called when the database is connected private function openHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.OPEN, openHandler); // start a transaction conn.addEventListener(SQLEvent.BEGIN, beginHandler); conn.begin(); } // Called when the transaction begins private function beginHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.BEGIN, beginHandler); // Create and execute the first SQL statement: // Delete an employee's phone number records deletePhoneNumbers = new SQLStatement(); deletePhoneNumbers.sqlConnection = conn; deletePhoneNumbers.text = "DELETE FROM phoneNumbers " + "WHERE employeeId = :employeeId"; deletePhoneNumbers.parameters[":employeeId"] = employeeIdToDelete; deletePhoneNumbers.addEventListener(SQLEvent.RESULT, deletePhoneNumbersHandler); deletePhoneNumbers.addEventListener(SQLErrorEvent.ERROR, errorHandler); deletePhoneNumbers.execute(); } // Called after the phone number records are deleted private function deletePhoneNumbersHandler(event:SQLEvent):void { deletePhoneNumbers.removeEventListener(SQLEvent.RESULT, deletePhoneNumbersHandler); deletePhoneNumbers.removeEventListener(SQLErrorEvent.ERROR, errorHandler); deleteEmployee = new SQLStatement(); deleteEmployee.sqlConnection = conn; deleteEmployee.text = "DELETE FROM employees " + "WHERE employeeId = :employeeId"; deleteEmployee.parameters[":employeeId"] = employeeIdToDelete; deleteEmployee.addEventListener(SQLEvent.RESULT, deleteEmployeeHandler); deleteEmployee.addEventListener(SQLErrorEvent.ERROR, errorHandler); deleteEmployee.execute(); } // Called after the employee record is deleted private function deleteEmployeeHandler(event:SQLEvent):void { deleteEmployee.removeEventListener(SQLEvent.RESULT, deleteEmployeeHandler); deleteEmployee.removeEventListener(SQLErrorEvent.ERROR, errorHandler); // No errors so far, so commit the transaction conn.addEventListener(SQLEvent.COMMIT, commitHandler); conn.commit(); } // Called after the transaction is committed private function commitHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.COMMIT, commitHandler); trace("Transaction complete"); } // Called whenever an error occurs private function errorHandler(event:SQLErrorEvent):void { // If a transaction is happening, roll it back if (conn.inTransaction) { conn.addEventListener(SQLEvent.ROLLBACK, rollbackHandler); conn.rollback(); } trace(event.error.message); trace(event.error.details); } // Called when the transaction is rolled back private function rollbackHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.ROLLBACK, rollbackHandler); // add additional error handling, close the database, etc. } } }
commit()rollback()setSavepoint()releaseSavepoint()rollbackToSavepoint()flash.data.SQLTransactionLockTypebeginflash.events:SQLEventОтправляется после завершения операции. Отправляется после завершения операции.errorflash.events:SQLErrorEventОтправляется после сбоя операции в асинхронном режиме выполнения. Отправляется после сбоя операции в асинхронном режиме выполнения.
cancel Прерывает все инструкции SQL, выполняемые в текущий момент в базах данных, подключенных к данному экземпляру SQLConnection.Если этот метод вызван, когда экземпляр SQLConnection не подключен к базе данных (свойство connected имеет значение false). IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли произошел сбой операции в синхронном режиме выполнения. SQLErrorflash.errors:SQLErrorresponderflash.net:RespondernullОбъект, для которого определены методы, вызываемые при успешном выполнении или сбое операции. При асинхронном режиме выполнения, если аргумент responder имеет значение null, по окончании выполнения отправляется событие cancel или error. Прерывает все инструкции SQL, выполняемые в текущий момент в базах данных, подключенных к данному экземпляру SQLConnection. Этот метод используется для завершения продолжительных или вышедших из-под контроля запросов.

Если в момент вызова метода cancel() выполняются инструкции, этот метод прерывает их выполнение и выполняет откат всех незавершенных обновлений или транзакций. Если в текущий момент нет выполняемых инструкций, этот метод выполняет откат открытой транзакции, в противном случае ничего не происходит.

flash.data.SQLStatementcancelflash.events:SQLEventОтправляется после успешного завершения операции. Отправляется после успешного завершения операции.errorflash.events:SQLErrorEventОтправляется после сбоя операции в асинхронном режиме выполнения. Отправляется после сбоя операции в асинхронном режиме выполнения.
close Закрывает текущее подключение базы данных.Если произошел сбой операции в синхронном режиме выполнения. SQLErrorflash.errors:SQLErrorresponderflash.net:RespondernullОбъект, для которого определены методы, вызываемые при успешном выполнении или сбое операции. При асинхронном режиме выполнения, если аргумент responder имеет значение null, по окончании выполнения отправляется событие close или error. Закрывает текущее подключение базы данных. Также происходит отсоединение всех подключенных баз данных.

Если во время вызова метода close() есть открытая транзакция, она отменяется. При очистке экземпляра SQLConnection среда выполнения автоматически вызывает метод close(), включая те случаи, когда приложение AIR закрыто, а экземпляр SQLConnection по-прежнему подключен к базе данных.

closeflash.events:SQLEventОтправляется после успешного завершения операции. Отправляется после успешного завершения операции.errorflash.events:SQLErrorEventОтправляется после сбоя операции в асинхронном режиме выполнения. Отправляется после сбоя операции в асинхронном режиме выполнения.
commit Фиксирует существующую транзакцию, в результате чего все действия, выполненные ее инструкциями, применяются к базе данных окончательно.Если экземпляр SQLConnection не подключен к базе данных (свойство connected имеет значение false), или если в текущий момент нет открытых транзакций (свойство inTransaction имеет значение false). IllegalOperationErrorflash.errors:IllegalOperationErrorresponderflash.net:RespondernullОбъект, для которого определены методы, вызываемые при успешном выполнении или сбое операции. При асинхронном режиме выполнения, если аргумент responder имеет значение null, по окончании выполнения отправляется событие commit или error. Фиксирует существующую транзакцию, в результате чего все действия, выполненные ее инструкциями, применяются к базе данных окончательно.

Промежуточные точки сохранения, выполняющие роль закладок в транзакции, можно создать с помощью метода setSavepoint(). С помощью точек сохранения можно сохранять фрагменты транзакции путем вызова метода releaseSavepoint() или отменять фрагменты транзакции с помощью метода rollbackToSavepoint(). Однако если транзакция запущена с помощью метода begin(), изменения сохраняются в базе данных только после завершения всей транзакции с помощью метода commit().

Если в транзакции используются точки сохранения, инструкции, отмененные с помощью метода rollbackToSavepoint(), не сохраняются в базе данных вместе с транзакцией. Инструкции, сохраненные с помощью метода releaseSavepoint() или не отмененные в процессе выполнения, сохраняются в базе данных.

begin()rollback()setSavepoint()releaseSavepoint()rollbackToSavepoint()commitflash.events:SQLEventОтправляется после успешного завершения операции. Отправляется после успешного завершения операции.errorflash.events:SQLErrorEventОтправляется после сбойного завершения операции. Отправляется после сбойного завершения операции.
compact Освобождает все неиспользуемое место в базе данных.Если экземпляр SQLConnection не подключен к базе данных (свойство connected имеет значение false), или если в данный момент открыта транзакция (свойство inTransaction имеет значение true). IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли произошел сбой операции в синхронном режиме выполнения. SQLErrorflash.errors:SQLErrorresponderflash.net:RespondernullОбъект, для которого определены методы, вызываемые при успешном выполнении или сбое операции. При асинхронном режиме выполнения, если аргумент responder имеет значение null, по окончании выполнения отправляется событие compact или error. Освобождает все неиспользуемое место в базе данных. После удаления объекта (таблицы, индекса или триггера) из базы данных остается пустое место. Из-за этого файл базы данных становится больше, чем необходимо, но операции INSERT выполняются быстрее. Со временем из-за операций INSERT и DELETE структура файла базы данных становится фрагментированной, из-за чего замедляется доступ к содержимому базы данных. Данный метод сжимает файл базы данных, уничтожая пустые страницы и располагая данные таблиц без разрывов, а в противном случае — очищает структуру файла базы данных.

Операцию compact() невозможно выполнить для файла подключенной базы данных, выполнение возможно только для файла главной (исходной) базы данных, который открыт с помощью экземпляра SQLConnection. Эта операция завершается сбоем, если есть активная транзакция, и не выполняет никаких действий применительно к базе данных, которая хранится в оперативной памяти.

compactflash.events:SQLEventОтправляется после успешного завершения операции. Отправляется после успешного завершения операции.errorflash.events:SQLErrorEventОтправляется после сбоя операции в асинхронном режиме выполнения. Отправляется после сбоя операции в асинхронном режиме выполнения.
deanalyze Удаляет все статистические данные, созданные методом analyze().Если этот метод вызван, когда экземпляр SQLConnection не подключен к базе данных (свойство connected имеет значение false). IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли произошел сбой операции в синхронном режиме выполнения. SQLErrorflash.errors:SQLErrorresponderflash.net:RespondernullОбъект, для которого определены методы, вызываемые при успешном выполнении или сбое операции. При асинхронном режиме выполнения, если аргумент responder имеет значение null, по окончании выполнения отправляется событие deanalyze или error. Удаляет все статистические данные, созданные методом analyze().

Так как статистика, создаваемая методом analyze(), занимает место в базе данных, с помощью вызова метода deanalyze() можно его освободить, например после удаления некоторых индексов или таблиц.

Данная операция не включена в активную транзакцию.

analyze()deanalyzeflash.events:SQLEventОтправляется после успешного завершения операции. Отправляется после успешного завершения операции.errorflash.events:SQLErrorEventОтправляется после сбоя операции в асинхронном режиме выполнения. Отправляется после сбоя операции в асинхронном режиме выполнения.
detach Отсоединяет дополнительную базу данных, ранее подключенную к экземпляру SQLConnection с помощью метода attach().Если аргумент name имеет значение null или содержит пустую строку (""). ArgumentErrorArgumentErrorЕсли этот метод вызван, когда экземпляр SQLConnection не подключен к базе данных (свойство connected имеет значение false) или в рамках экземпляра подключения SQLConnection открыта транзакция (свойство inTransaction имеет значение true). IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли произошел сбой операции в синхронном режиме выполнения. SQLErrorflash.errors:SQLErrornameStringЗаданное имя отсоединяемой базы данных. responderflash.net:RespondernullОбъект, для которого определены методы, вызываемые при успешном выполнении или сбое операции. При асинхронном режиме выполнения, если аргумент responder имеет значение null, по окончании выполнения отправляется событие detach или error. Отсоединяет дополнительную базу данных, ранее подключенную к экземпляру SQLConnection с помощью метода attach(). Одна и та же база данных может быть подключена несколько раз под разными именами, поэтому, если отсоединить одно подключение, остальные продолжат работать. Базу данных нельзя отсоединить, если подключение содержит открытую транзакцию (если свойство inTransaction имеет значение true). attach()detachflash.events:SQLEventОтправляется после успешного завершения операции. Отправляется после успешного завершения операции.errorflash.events:SQLErrorEventОтправляется после сбоя операции в асинхронном режиме выполнения. Отправляется после сбоя операции в асинхронном режиме выполнения.getSchemaResult Обеспечивает доступ к результату вызова метода loadSchema().flash.data:SQLSchemaResult Обеспечивает доступ к результату вызова метода loadSchema(). Метод getSchemaResult() работает как очередь результатов с порядком доступа к элементам «первым поступил — первым обслужен» (FIFO, First In — First Out). Каждый раз после завершения вызова метода loadSchema() (каждый раз, когда в асинхронном режиме выполнения отправляется событие schema) в очередь добавляется новый объект SQLSchemaResult. Каждый раз при вызове метода getSchemaResult() возвращается и удаляется из очереди самый первый результат (тот, который был добавлен в очередь первым). Если в очереди не осталось объектов, метод getSchemaResult() возвращает null.

Если подключение базы данных закрыто, метод возвращает null.

loadSchema()событие схемы данных
loadSchema Загружает сведения о схеме данных из присоединенной или любой подключенной базы данных.Если данный метод вызывается, когда экземпляр SQLConnection не подключен к базе данных (свойство connected имеет значение false). IllegalOperationErrorflash.errors:IllegalOperationErrorКогда указанное значение аргумента type представляет собой недопустимый тип. ArgumentErrorArgumentErrorЕсли при использовании синхронного режима выполнения в качестве параметров имени или базы данных указано недопустимое значение. SQLErrorflash.errors:SQLErrortypeClassnullУказывает тип загружаемой схемы данных. Значение null (по умолчанию) обозначает, что должны быть загружены все данные схемы. Если в качестве этого параметра указать значение, отличное от null, это сузит область полученной в результате схемы данных, при этом из результатов будут удалены все потенциально ненужные сведения, а сама операция станет более эффективной. Значение должно представлять собой имя одного из следующих классов:
  • SQLIndexSchema
  • SQLTableSchema
  • SQLTriggerSchema
  • SQLViewSchema
nameStringnullУказывают, для каких ресурсов загружается схема данных. Использование данного значения в зависимости от заданного аргумента type. Обычно это значение представляет собой имя объекта базы данных, например, имя таблицы, индекса, представления и т. д. Если оно задано, то в результат попадает только схема объекта базы данных с указанным именем.

Если задано недопустимое значение, отправляется событие error (или генерируется ошибка в синхронном режиме выполнения). Чтобы значение параметра type было допустимым, оно должно соответствовать типу указанного объекта, как указано в описании метода.

Если аргумент name имеет значение null, в результат попадут все схемы заданного типа. Если задано недопустимое значение, отправляется событие error.

databaseStringmainИмя базы данных, для которой загружается схема данных. Если задано недопустимое значение, отправляется событие error. includeColumnSchemaBooleantrueУказывает, содержит ли в результат сведения о схеме столбцов таблиц и представлений. responderflash.net:RespondernullОбъект, для которого определены методы, вызываемые при успешном выполнении или сбое операции. При асинхронном режиме выполнения, если аргумент responder имеет значение null, по окончании выполнения отправляется событие schema или error.
Загружает сведения о схеме данных из присоединенной или любой подключенной базы данных. Схема данных отражает структуру таблиц, столбцов, индексов и триггеров базы данных.

Для обращения к загруженной схеме данных используется метод SQLConnection.getSchemaResult().

В асинхронном режиме выполнения событие schema отправляется в случае успешного завершения операции. В случае сбоя операции отправляется событие error.

Сочетание значений параметров type и name определяет тип данных схемы, создаваемой с помощью метода loadSchema(), а следовательно, и значения свойств создаваемого экземпляра SQLSchemaResult. В нижеприведенной таблице перечислены допустимые пары аргументов type и name и формируемые в результате данные схемы:

аргумент typeаргумент nameОбъекты, для которых извлекаются данные схемы: nullnullвсе объекты базы данных (все таблицы, представления, триггеры и индексы)SQLIndexSchemanullвсе индексы базы данныхSQLIndexSchemaдопустимое имя таблицывсе индексы, определенные для заданной таблицыSQLIndexSchemaдопустимое имя индексазаданный индексSQLTableSchemanullвсе таблицы базы данныхSQLTableSchemaдопустимое имя таблицызаданная таблицаSQLTriggerSchemanullвсе триггеры базы данныхSQLTriggerSchemaдопустимое имя таблицывсе триггеры, связанные с заданной таблицейSQLTriggerSchemaдопустимое имя представлениявсе триггеры, связанные с заданным представлением SQLTriggerSchemaдопустимое имя триггеразаданный триггер SQLViewSchemanullвсе представления базы данныхSQLViewSchemaдопустимое имя представлениязаданное представление

Если сочетание аргументов type и name не соответствует ни одному из перечисленных, в асинхронном режиме выполнения отправляется событие error, а в синхронном — генерируется исключение. Например, если аргумент type имеет значение SQLViewSchema, а аргумент name содержит имя таблицы (вместо имени представления), возникнет ошибка, указывающая на отсутствие в базе данных объекта указанного типа с заданным именем.

Если база данных пуста (не содержит таблиц, представлений, триггеров или индексов), вызов метода loadSchema() приведет к ошибке.

getSchemaResult()событие схемы данныхflash.data.SQLIndexSchemaflash.data.SQLTableSchemaflash.data.SQLTriggerSchemaflash.data.SQLViewSchemaschemaflash.events:SQLEventОтправляется после успешного завершения операции. Отправляется после успешного завершения операции.errorflash.events:SQLErrorEventОтправляется после сбойного завершения операции. Отправляется после сбойного завершения операции.
openAsync Открывает асинхронное подключение к файлу базы данных с заданным местоположением в файловой системе, создает и открывает новый файл базы данных с заданным местоположением или создает и открывает базу данных в оперативной памяти.Если экземпляр SQLConnection уже имеет открытое подключение к базе данных (свойство connected имеет значение true). IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли параметр reference имеет значение, отличное от экземпляра flash.filesystem.File ArgumentErrorArgumentErrorКогда аргумент encryptionKey не имеет значение null и его свойство length не равно 16 байтам ArgumentErrorArgumentErrorКогда параметр reference имеет значение null, а аргумент encryptionKey не имеет значение null ArgumentErrorArgumentErrorЕсли задан недопустимый параметр pageSize. Включает передачу размера страницы, если используется режим SQLMode.READ. ArgumentErrorArgumentErrorreferenceObjectnullМестоположение открытого файла базы данных. Значение должно быть экземпляром класса flash.filesystem.File. Если параметр имеет значение null, то создается и подключается база данных в оперативной памяти. openModeStringcreateУказывает режим, в котором будет открыта база данных. Может принимать значение любой константы, определенной в классе SQLMode. Значением по умолчанию является SQLMode.CREATE, которое указывает, что в случае отсутствия файла базы данных с заданным местоположением он будет создан. Если параметр openMode имеет значение SQLMode.READ, а указанный файл отсутствует, отправляется событие ошибки. Этот параметр игнорируется, если параметр reference имеет значение null. responderflash.net:RespondernullОбъект, для которого определены методы, вызываемые при успешном выполнении или сбое операции. Если аргумент responder имеет значение null, по окончании выполнения отправляется событие open или error. autoCompactBooleanfalseУказывает, выполняется ли в базе данных автоматическое занятие неиспользуемого места. Этот параметр допустим только при создании новой базы данных или при открытии файла базы данных, в которой нет созданных таблиц. По умолчанию место, которое освобождается при удалении данных, остается в базе данных и при необходимости используется повторно. Если этому параметру задать значение true, свободное место будет повторно использоваться базой данных автоматически. Это может со временем привести к фрагментации данных в базе данных и отрицательно сказаться на производительности, потому что каждый раз при записи данных в базу потребуется дополнительная обработка. Чтобы в любое время принудительно восстановить неиспользуемое место в файле базы данных и дефрагментировать этот файл, используется метод compact().

Этот параметр игнорируется, если параметр openMode имеет значение SQLMode.READ.

pageSizeint1024Указывает размер страницы базы данных (в байтах). Этот параметр допустим только при создании новой базы данных или при открытии файла базы данных, в которой нет созданных таблиц. Значением должна быть степень двойки, которая больше или равна 512, но меньше или равна 32768. Значением по умолчанию является 1024 байта. Данное значение можно задать только до создания таблиц. При попытке изменить это значение после создания таблиц будет выдана ошибка. encryptionKeyflash.utils:ByteArraynullКлюч шифрования для файла базы данных. Если вызов метода openAsync() создает базу данных, эта база данных шифруется, а указанный ключ используется в качестве ключа шифрования базы данных. Если вызов этого метода открывает зашифрованную базу данных, это значение должно совпадать с ключом шифрования базы данных, иначе произойдет ошибка. Если открываемая база данных не зашифрована, это значение должно быть null (по умолчанию), иначе произойдет ошибка.

Действительным считается ключ шифрования длиной 16 байтов. Базу данных в памяти зашифровать невозможно, поэтому этот параметр должен иметь значение null, если параметр reference имеет значение null.

Если при открытии зашифрованной базы данных предоставленный ключ шифрования не совпадает с ключом шифрования базы данных, отправляется событие SQLErrorEvent. Свойство error объекта события содержит экземпляр SQLError. Свойство errorID этого объекта SQLError имеет значение 3138 («Открытый файл не является файлом базы данных»).

Параметр encryptionKey доступен, начиная с AIR 1.5.

Открывает асинхронное подключение к файлу базы данных с заданным местоположением в файловой системе, создает и открывает новый файл базы данных с заданным местоположением или создает и открывает базу данных в оперативной памяти. Операции создания и открытия базы данных, а также все остальные операции, выполняемые с использованием данного экземпляра SQLConnection, выполняются асинхронно при открытии базы данных с помощью этого метода. Это включает в себя выполнение инструкций и другие операции, выполняемые экземпляром SQLStatement, связанным с данным экземпляром SQLConnection. Для синхронного выполнения операций вместо него подключение базы данных следует открывать с помощью метода open().

Подключив базу данных, используйте экземпляр SQLStatement для выполнения инструкций SQL. Операции на уровне базы данных, такие как начало или завершение транзакций, загрузка данных схемы и другие, выполняются при помощи экземпляра SQLConnection.

Базе данных, присоединенной с помощью метода openAsync(), автоматически назначается имя main, которое можно использовать для явного указания имен таблиц в операторах SQL в формате [database-name]. [table-name].

open()close()flash.data.SQLModeopenflash.events:SQLEventОтправляется после успешного завершения операции. Отправляется после успешного завершения операции.errorflash.events:SQLErrorEventОтправляется после сбоя операции. Соединение никогда не остается открытым после сбоя операции. Отправляется после сбоя операции.
open Открывает синхронное подключение к файлу базы данных с заданным местоположением в файловой системе, создает и открывает новый файл базы данных с заданным местоположением или создает и открывает базу данных в оперативной памяти.Если экземпляр SQLConnection уже имеет открытое подключение к базе данных (свойство connected имеет значение true). IllegalOperationErrorflash.errors:IllegalOperationErrorПри сбое операции. Соединение никогда не остается открытым после сбоя операции. SQLErrorflash.errors:SQLErrorЕсли параметр reference имеет значение, отличное от экземпляра flash.filesystem.File ArgumentErrorArgumentErrorКогда аргумент encryptionKey не имеет значение null и его свойство length не равно 16 байтам ArgumentErrorArgumentErrorКогда параметр reference имеет значение null, а аргумент encryptionKey не имеет значение null ArgumentErrorArgumentErrorЕсли задан недопустимый параметр pageSize. Включает передачу размера страницы, если используется режим SQLMode.READ. ArgumentErrorArgumentErrorreferenceObjectnullМестоположение открытого файла базы данных. Значение должно быть экземпляром класса flash.filesystem.File. Если параметр имеет значение null, то создается и подключается база данных в оперативной памяти. openModeStringcreateУказывает режим, в котором будет открыта база данных. Может принимать значение любой константы, определенной в классе SQLMode. Значением по умолчанию является SQLMode.CREATE, которое указывает, что в случае отсутствия файла базы данных с заданным местоположением он будет создан. Если параметр openMode имеет значение SQLMode.READ, а указанный файл отсутствует, возникает ошибка. Этот параметр игнорируется, если параметр reference имеет значение null. autoCompactBooleanfalseУказывает, выполняется ли в базе данных автоматическое занятие неиспользуемого места. Этот параметр допустим только при создании новой базы данных или при открытии файла базы данных, в которой нет созданных таблиц. По умолчанию место, которое освобождается при удалении данных, остается в базе данных и при необходимости используется повторно. Если этому параметру задать значение true, свободное место будет повторно использоваться базой данных автоматически. Это может со временем привести к фрагментации данных в базе данных и отрицательно сказаться на производительности, потому что каждый раз при записи данных в базу потребуется дополнительная обработка. В любое время можно освободить неиспользуемое пространство файла базы данных и выполнить дефрагментацию этого файла с помощью метода compact().

Этот параметр игнорируется, если параметр openMode имеет значение SQLMode.READ.

pageSizeint1024Указывает размер страницы базы данных (в байтах). Этот параметр допустим только при создании новой базы данных или при открытии файла базы данных, в которой нет созданных таблиц. Значением должна быть степень двойки, которая больше или равна 512, но меньше или равна 32768. Значением по умолчанию является 1024 байта. Данное значение можно задать только до создания таблиц. При попытке изменить это значение после создания таблиц будет выдана ошибка. encryptionKeyflash.utils:ByteArraynullКлюч шифрования для файла базы данных. Если вызов метода open() создает базу данных, эта база данных шифруется, а указанный ключ используется в качестве ключа шифрования базы данных. Если вызов этого метода открывает зашифрованную базу данных, это значение должно совпадать с ключом шифрования базы данных, иначе произойдет ошибка. Если открываемая база данных не зашифрована или требуется создать незашифрованную базу данных, это значение должно быть null (по умолчанию), иначе произойдет ошибка.

Действительным считается ключ шифрования длиной 16 байтов. Базу данных в памяти зашифровать невозможно, поэтому этот параметр должен иметь значение null, если параметр reference имеет значение null.

Если при открытии зашифрованной базы данных предоставленный ключ шифрования не совпадает с ключом шифрования базы данных, выдается исключение SQLError. В таком случае свойство errorID объекта SQLError имеет значение 3138 («Открытый файл не является файлом базы данных»).

Параметр encryptionKey доступен, начиная с AIR 1.5.

Открывает синхронное подключение к файлу базы данных с заданным местоположением в файловой системе, создает и открывает новый файл базы данных с заданным местоположением или создает и открывает базу данных в оперативной памяти. Операции создания и открытия базы данных, а также все остальные операции, выполняемые с использованием данного экземпляра SQLConnection, выполняются синхронно при открытии базы данных с помощью этого метода. Это включает в себя выполнение инструкций и другие операции, выполняемые экземпляром SQLStatement, связанным с данным экземпляром SQLConnection. Для асинхронного выполнения операций вместо него подключение базы данных следует открывать с помощью метода openAsync().

Подключив базу данных, используйте экземпляр SQLStatement для выполнения инструкций SQL. Операции на уровне базы данных, такие как начало или завершение транзакций, загрузка данных схемы и другие, выполняются при помощи экземпляра SQLConnection.

Базе данных, присоединенной с помощью метода open(), автоматически назначается имя main. Его можно использовать для явного указания имен таблиц в операторах SQL в формате [database-name]. [table-name].

openAsync()close()flash.data.SQLModeopenflash.events:SQLEventОтправляется после успешного завершения операции. Отправляется после успешного завершения операции.
reencrypt Изменяет ключ шифрования зашифрованной базы данных.Когда значение newEncryptionKey имеет значение null или его свойство length не равно 16 байтам. ArgumentErrorArgumentErrorЕсли подключение не открыто или имеется открытая транзакция. IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли произошел сбой операции в синхронном режиме выполнения. SQLErrorflash.errors:SQLErrornewEncryptionKeyflash.utils:ByteArrayОбъект ByteArray, содержащий новый ключ шифрования базы данных. Действительным считается ключ шифрования длиной 16 байтов. responderflash.net:RespondernullОбъект, для которого определены методы, вызываемые при успешном выполнении или сбое операции. Если аргумент responder имеет значение null, по окончании выполнения отправляется событие reencrypt или error. Изменяет ключ шифрования зашифрованной базы данных. Этот метод влияет на ключ шифрования только главной базы данных (базы данных, подключенной с помощью метода open() или openAsync()). Метод reencrypt() можно вызвать только для базы данных, которая была зашифрована при создании. После создания зашифрованной базы данных она не может быть расшифрована. Таким же образом база данных, созданная без шифрования, не может быть впоследствии зашифрована.

Операция повторного шифрования выполняется в собственной транзакции. Если процесс повторного шифрования прерывается, база данных выполняет откат транзакции и ключ шифрования не меняется.

open()openAsync()attach()reencryptflash.events:SQLEventОтправляется после успешного завершения операции. Отправляется после успешного завершения операции.errorflash.events:SQLErrorEventОтправляется после сбоя операции. Отправляется после сбоя операции.
releaseSavepoint Этот метод сохраняет операции SQL, выполненные с момента создания последней точки сохранения или именованной точки сохранения.когда параметр name является пустой строкой (""). ArgumentErrorArgumentErrorЕсли экземпляр SQLConnection не подключен к базе данных (свойство connected имеет значение false), или если в текущий момент нет открытых транзакций (свойство inTransaction имеет значение false). IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли произошел сбой операции в синхронном режиме выполнения. SQLErrorflash.errors:SQLErrornameStringnullString — имя точки сохранения, после которой необходимо сохранить все операции SQL. Если значение не задано или этот параметр имеет значение null (по умолчанию), используется последняя безымянная точка сохранения (созданная вызовом метода setSavepoint() без значения name). В качестве значения name не может использоваться пустая строка (""). responderflash.net:RespondernullResponder — объект, для которого определены методы, вызываемые при успешном выполнении или сбое операции. При асинхронном режиме выполнения, если аргумент responder имеет значение null, по окончании выполнения отправляется событие releaseSavepoint или error. Этот метод сохраняет операции SQL, выполненные с момента создания последней точки сохранения или именованной точки сохранения.

Обратите внимание, что изменения сохраняются в базе данных только после сохранения всей транзакции. Если транзакция запущена с помощью метода begin(), то для сохранения всей транзакции необходимо вызвать метод commit(). Если транзакция запущена с помощью метода setSavepoint() при inTransaction со значением false, завершить всю транзакцию можно, вызвав метод commit(), releaseSavepoint() или rollbackToSavepoint() для первой точки сохранения транзакции.

Если код вызывает метод rollback(), отменяются все изменения, выполненные в ходе транзакции, независимо от того, вызывался ли метод releaseSavepoint() перед отменой транзакции.

Если этот метод вызывается без параметров (или со значением null для параметра name), сохраняются все изменения базы данных, внесенные с момента создания последней безымянной точки сохранения (путем вызова метода setSavepoint() без параметра name). Например, если метод setSavepoint() вызывался три раза, создано три точки сохранения. Вызов метода releaseSavepoint() для этой точки приводит к сохранению операций SQL, выполненных после создания третьей (самой последней) точки сохранения.

Если задано значение для параметра name, этот метод сохраняет все операции SQL, выполненные после создания точки сохранения с указанным именем. Если после указанной точки сохранения были созданы другие, также сохраняются операции, выполненные после создания последующих точек сохранения.

Когда точка сохранения снимается или отменяется, она удаляется вместе со всеми последующими точками сохранения. Если код выполняет дополнительные операции SQL после вызова метода releaseSavepoint() или rollbackToSavepoint() для удаления точки сохранения, эти операции относятся к последней из оставшихся точек сохранения. (Другими словами, они относятся к точке сохранения, созданной непосредственно перед удаленной.) Если точек сохранения не остается, операции относятся к основной транзакции.

setSavepoint()rollbackToSavepoint()releaseSavepointflash.events:SQLEventОтправляется после успешного завершения операции. Отправляется после успешного завершения операции.errorflash.events:SQLErrorEventОтправляется после сбоя операции в асинхронном режиме выполнения. Отправляется после сбоя операции в асинхронном режиме выполнения.
removeEventListener Удаляет прослушиватель из объекта EventDispatcher.typeStringТип события. listenerFunctionУдаляемый объект прослушивателя. useCaptureBooleanfalse Указывает, был ли прослушиватель зарегистрирован для фазы захвата или целевой фазы и фазы восходящей цепочки. Если прослушиватель зарегистрирован и для фазы захвата, и для фаз цели и восходящей цепочки, метод removeEventListener() необходимо вызвать дважды: один раз с useCapture() в значении true, а другой раз с useCapture() в значении false. Удаляет прослушиватель из объекта EventDispatcher. При отсутствии прослушивателя, зарегистрированного с объектом EventDispatcher, вызов этого метода не оказывает эффекта. rollbackToSavepoint Отменяет операции SQL, выполненные с момента создания последней точки сохранения или именованной точки сохранения.когда параметр name является пустой строкой (""). ArgumentErrorArgumentErrorЕсли экземпляр SQLConnection не подключен к базе данных (свойство connected имеет значение false), или если в текущий момент нет открытых транзакций (свойство inTransaction имеет значение false). IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли произошел сбой операции в синхронном режиме выполнения. SQLErrorflash.errors:SQLErrornameStringnullString — имя точки сохранения, до которой требуется выполнить откат изменений базы данных. Если значение не задано или этот параметр имеет значение null (по умолчанию), используется последняя безымянная точка сохранения (созданная вызовом метода setSavepoint() без значения name). В качестве значения name не может использоваться пустая строка (""). responderflash.net:RespondernullResponder — объект, для которого определены методы, вызываемые при успешном выполнении или сбое операции. При асинхронном режиме выполнения, если аргумент responder имеет значение null, по окончании выполнения отправляется событие rollbackToSavepoint или error. Отменяет операции SQL, выполненные с момента создания последней точки сохранения или именованной точки сохранения.

Обратите внимание, что если вся транзакция сохраняется с помощью метода commit(), все изменения, выполненные в ходе транзакции и не отмененные с помощью метода rollbackToSavepoint(), сохраняются в базе данных. Кроме того, метод rollback() навсегда отменяет все изменения, независимо от того, снимались (сохранялись) и отменялись ли отдельные точки сохранения до отмены транзакции.

Если этот метод вызывается без параметров (или со значением null для параметра name), отменяются все изменения базы данных, внесенные с момента создания последней безымянной точки сохранения (путем вызова метода setSavepoint() без параметра name).

Если задано значение для параметра name, этот метод отменяет все операции SQL, выполненные после создания точки сохранения с указанным именем. Если после указанной точки сохранения были созданы другие, также отменяются операции, выполненные после создания последующих точек сохранения.

Когда точка сохранения снимается или отменяется, она удаляется вместе со всеми последующими точками сохранения. Если код выполняет дополнительные операции SQL после вызова метода releaseSavepoint() или rollbackToSavepoint() для удаления точки сохранения, эти операции относятся к последней из оставшихся точек сохранения. (Другими словами, они относятся к точке сохранения, созданной непосредственно перед удаленной.) Если точек сохранения не остается, операции относятся к основной транзакции.

setSavepoint()releaseSavepoint()rollbackToSavepointflash.events:SQLEventОтправляется после успешного завершения операции. Отправляется после успешного завершения операции.errorflash.events:SQLErrorEventОтправляется после сбоя операции в асинхронном режиме выполнения. Отправляется после сбоя операции в асинхронном режиме выполнения.
rollback Выполняет откат существующей транзакции, созданной с помощью метода begin(), то есть все изменения, внесенные любыми инструкциями SQL в рамках данной транзакции, отменяются.Если экземпляр SQLConnection не подключен к базе данных (свойство connected имеет значение false), или если в текущий момент нет открытых транзакций (свойство inTransaction имеет значение false). IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли произошел сбой операции в синхронном режиме выполнения. SQLErrorflash.errors:SQLErrorresponderflash.net:RespondernullОбъект, для которого определены методы, вызываемые при успешном выполнении или сбое операции. При асинхронном режиме выполнения, если аргумент responder имеет значение null, по окончании выполнения отправляется событие rollback или error. Выполняет откат существующей транзакции, созданной с помощью метода begin(), то есть все изменения, внесенные любыми инструкциями SQL в рамках данной транзакции, отменяются.

Промежуточные точки сохранения в транзакции можно помечать с помощью метода setSavepoint(). С помощью точек сохранения можно сохранять фрагменты транзакции вызовом метода releaseSavepoint() или отменять фрагменты транзакции вызовом метода rollbackToSavepoint(). Однако вызов метода rollback() навсегда отменяет все изменения, выполненные в ходе транзакции, независимо от того, снимались и сохранялись ли отдельные точки сохранения перед отменой транзакции.

begin()commit()setSavepoint()releaseSavepoint()rollbackToSavepoint()rollbackflash.events:SQLEventОтправляется после успешного завершения операции. Отправляется после успешного завершения операции.errorflash.events:SQLErrorEventОтправляется после сбоя операции в асинхронном режиме выполнения. Отправляется после сбоя операции в асинхронном режиме выполнения.
setSavepoint Создается точка сохранения, выполняющая функцию закладки в транзакции базы данных.когда параметр name является пустой строкой (""). ArgumentErrorArgumentErrorЕсли данный метод вызывается, когда экземпляр SQLConnection не подключен к базе данных (свойство connected имеет значение false). IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли произошел сбой операции в синхронном режиме выполнения. SQLErrorflash.errors:SQLErrornameStringnullString — имя точки сохранения. Если значение не задано или параметр имеет значение null (по умолчанию), то следующий вызов метода releaseSavepoint() или rollbackToSavepoint() без параметра name сохраняет или отменяет операции SQL, выполненные после создания безымянной точки сохранения.

Если указанное имя дублирует имя предшествующей точки сохранения, следующий вызов метода SQLConnection.releaseSavepoint() или SQLConnection.rollbackToSavepoint() сохраняет или отменяет изменения, внесенные после создания самой последней точки сохранения с таким именем.

В качестве значения name не может использоваться пустая строка ("").

responderflash.net:RespondernullResponder — объект, для которого определены методы, вызываемые при успешном выполнении или сбое операции. При асинхронном режиме выполнения, если аргумент responder имеет значение null, по окончании выполнения отправляется событие setSavepoint или error.
Создается точка сохранения, выполняющая функцию закладки в транзакции базы данных. Точка сохранения представляет собой точку в пределах транзакции. Набор операций SQL, выполненных между двумя точками сохранения, можно сохранять или отменять отдельно от других операций с помощью методов releaseSavepoint() и rollbackToSavepoint(). Таким образом, использование точек сохранения позволяет обрабатывать набор операций SQL как вложенную транзакцию.

Если вызывается метод setSavepoint(), а транзакция еще не открыта с помощью метода begin(), то данный метод запускает транзакцию и создает точку сохранения в ее начале. Если транзакция уже открыта, то при вызове метода setSavepoint() создается точка сохранения в пределах транзакции.

Обратите внимание, что изменения сохраняются в базе данных только после сохранения всей транзакции. Если транзакция запущена с помощью метода begin(), то для сохранения всей транзакции необходимо вызвать метод commit(). Если транзакция запущена вызовом метода setSavepoint(), в котором inTransaction имеет значение false, то завершить всю транзакцию можно с помощью метода commit(). Транзакция также завершается автоматически, когда вызывается метод releaseSavepoint() или rollbackToSavepoint() для точки сохранения, созданной в начале транзакции.

Точке сохранения можно присвоить имя, задав значение для параметра name. Это позволяет сохранить или отменить все изменения, внесенные после создания определенной точки сохранения. Если имя не задано (по умолчанию), создается безымянная точка сохранения.

Когда точка сохранения снимается или отменяется, она удаляется вместе со всеми последующими точками сохранения. Если код выполняет дополнительные операции SQL после вызова метода releaseSavepoint() или rollbackToSavepoint() для удаления точки сохранения, эти операции относятся к последней из оставшихся точек сохранения. (Другими словами, они относятся к точке сохранения, созданной непосредственно перед удаленной.) Если точек сохранения не остается, операции относятся к основной транзакции.

begin()releaseSavepoint()rollbackToSavepoint()commit()rollback()setSavepointflash.events:SQLEventОтправляется после успешного завершения операции. Отправляется после успешного завершения операции.errorflash.events:SQLErrorEventОтправляется после сбоя операции в асинхронном режиме выполнения. Отправляется после сбоя операции в асинхронном режиме выполнения.
autoCompact Указывает, было ли включено автоматическое сжатие при создании текущей базы данных (значение параметра autoCompact, указанное при вызове метода open() или openAsync(), с помощью которого была создана база данных).Boolean Указывает, было ли включено автоматическое сжатие при создании текущей базы данных (значение параметра autoCompact, указанное при вызове метода open() или openAsync(), с помощью которого была создана база данных). Если это свойство имеет значение true, неиспользуемое место автоматически удаляется из базы данных после каждой операции записи, тем самым уменьшая размер файла базы данных. Если это свойство имеет значение false, место, занимаемое данными до удаления, остается в базе данных и при необходимости используется повторно. Даже если свойство autoCompact имеет значение false, с помощью метода compact() можно выполнить принудительное восстановление неиспользуемого места.

Если свойство connected имеет значение false, это свойство имеет значение false.

open()openAsync()
cacheSize Обеспечивает доступ к величине размера кэша данного подключения. Эта величина — максимальное количество дисковых страниц базы данных, которые могут одновременно находиться в памяти.uintЕсли осуществляется попытка задать это свойство, когда экземпляр SQLConnection не подключен к базе данных (свойство connected имеет значение false), или если в текущий момент открыта транзакция (свойство inTransaction имеет значение true). IllegalOperationErrorflash.errors:IllegalOperationError Обеспечивает доступ к величине размера кэша данного подключения. Эта величина — максимальное количество дисковых страниц базы данных, которые могут одновременно находиться в памяти. Каждая страница использует около 1,5 КБ памяти (в зависимости от значения параметра pageSize, указанного при вызове метода open() или openAsync(), с помощью которого была создана база данных). Размер кэша по умолчанию равен 2000. Если в приложении выполняются операции UPDATE или DELETE, которые изменяют большое количество строк в базе данных, увеличив размер кэша, можно ускорить работу за счет повышенного потребления памяти. open()openAsync()columnNameStyle Указывает, в каком виде имена столбцов представлены в результате выполнения инструкции SELECT.StringЕсли предпринимается попытка задать это свойство, когда экземпляр SQLConnection не подключен к базе данных (свойство connected имеет значение false). IllegalOperationErrorflash.errors:IllegalOperationError Указывает, в каком виде имена столбцов представлены в результате выполнения инструкции SELECT.

Константы, определенные в классе SQLColumnNameStyle, представляют собой возможные значения данного свойства:

  • SQLColumnNameStyle.LONG обозначает, что имена столбцов возвращаются в формате [table-name]_[column-name].
  • SQLColumnNameStyle.SHORT обозначает, что имена столбцов имеют формат [column-name]. Если существует несколько столбцов с одинаковым именем, в результирующий объект будет добавлено только одно свойство с таким именем.
  • SQLColumnNameStyle.DEFAULT является значением по умолчанию. Если используется это значение, то имена столбцов в результате форматируются в соответствии с количеством таблиц в инструкции SELECT, в которых есть столбцы с одинаковыми именами. Если в инструкции SELECT содержится только одна таблица, используется краткий формат имен [column-name]. Если в инструкции SELECT содержится несколько таблиц, соединенных вместе, всякий раз, когда из-за двух столбцов с одинаковым именем возникает конфликт имен, для них используется длинный формат имен [table-name]_[column-name].
flash.data.SQLColumnNameStyle
connected Указывает, имеет ли экземпляр SQLConnection открытое подключение к файлу базы данных.Boolean Указывает, имеет ли экземпляр SQLConnection открытое подключение к файлу базы данных. open()openAsync()close()inTransaction Указывает, используется ли это подключение транзакциями в данный момент.Boolean Указывает, используется ли это подключение транзакциями в данный момент. begin()commit()rollback()lastInsertRowID Последний идентификатор строки, созданный инструкцией SQL INSERT.Number Последний идентификатор строки, созданный инструкцией SQL INSERT. Уникальный идентификатор строки в таблице, используемый для поиска в базе данных. Это значение часто генерируется базой данных.

Значение равно нулю, если ни одна база данных не подключена или не выполнено ни одной инструкции INSERT.

Идентификатор строки для однократного выполнения инструкции SQL INSERT можно получить через свойство lastInsertRowID объекта SQLResult, возвращенного методом getResult() объекта SQLStatement (когда он вызывается после отправки объектом SQLStatement события result).

Дополнительные сведения о первичных ключах и созданных идентификаторах строк см. в разделах «CREATE TABLE» и «Выражения» в приложении «Поддержка SQL в локальных базах данных».

flash.data.SQLResult.lastInsertRowIDflash.events.SQLUpdateEvent.rowID
pageSize Указывает размер страницы базы данных (в байтах), заданный при создании текущей базы данных (значение параметра pageSize, указанное при вызове метода open() или openAsync(), с помощью которого была создана база данных).uint Указывает размер страницы базы данных (в байтах), заданный при создании текущей базы данных (значение параметра pageSize, указанное при вызове метода open() или openAsync(), с помощью которого была создана база данных).

Если свойство connected имеет значение false, это значение данного свойства равно 0.

Размер страницы базы данных можно менять (с помощью методов open() или openAsync()), пока в базе данных не будет создана первая таблица.

open()openAsync()
totalChanges Содержит общее число изменений данных, выполненных с момента открытия подключения к базе данных.Number Содержит общее число изменений данных, выполненных с момента открытия подключения к базе данных. Кроме отслеживания изменений, сделанных с помощью инструкций INSERT, DELETE и UPDATE, это значение включает изменения, вызванные триггерами.

При закрытии подключения к базе данных это значение сбрасывается в 0. Когда экземпляр SQLConnection не подключен к базе данных, значение равно 0.

flash.data.SQLResult.rowsAffected
SQLTriggerSchema Экземпляр SQLTriggerSchema используется для хранения сведений об определенном триггере базы данных.flash.data:SQLSchema Экземпляр SQLTriggerSchema используется для хранения сведений об определенном триггере базы данных. Он содержит имя триггера (свойство name), имя связанной таблицы (свойство table) и инструкцию SQL, используемый для создания триггера (свойство sql).

Для получения сведений о схеме триггера базы данных используется метод SQLConnection.loadSchema(), с помощью которого загружаются данные схемы. Следует предварительно убедиться, что в качестве аргумента type используется значение null или SQLTriggerSchema. В полученном экземпляре SQLSchemaResult свойство triggers содержит массив экземпляров SQLTriggerSchema, представляющих триггеры базы данных.

Как правило, экземпляры SQLTriggerSchema не создаются непосредственно в прикладном коде.

flash.data.SQLConnection.loadSchema()SQLTriggerSchema Создает экземпляр SQLTriggerSchema.databaseStringИмя связанной базы данных. nameStringИмя триггера. sqlStringИнструкция SQL, используемая для создания триггера. tableStringИмя таблицы, связанной с триггером. Создает экземпляр SQLTriggerSchema. Как правило, конструктор SQLTriggerSchema не вызывается непосредственно в прикладном коде. Чтобы получить сведения о схеме базы данных, нужно вызвать метод SQLConnection.loadSchema(). table Имя таблицы, для которой определен триггер, или имя представления, если триггер определен для представления.String Имя таблицы, для которой определен триггер, или имя представления, если триггер определен для представления.
SQLStatement Экземпляр SQLStatement используется для выполнения инструкции SQL в локальной базе данных SQL, открытой с помощью экземпляра SQLConnection.flash.events:EventDispatcher Экземпляр SQLStatement используется для выполнения инструкции SQL в локальной базе данных SQL, открытой с помощью экземпляра SQLConnection.

Чтобы связать экземпляр SQLStatement с экземпляром SQLConnection, необходимо задать экземпляр SQLConnection в качестве значения свойства sqlConnection экземпляра SQLStatement. Свойство text заполняется имеющимся текстом выполняемой инструкции SQL. При необходимости значения параметров инструкции SQL задаются с помощью свойства parameters, а для выполнения самой инструкции нужно вызвать метод execute().

Полное описание диалекта SQL, поддерживаемого в локальных базах данных SQL, см. в приложении «Поддержка SQL в локальных базах данных».

В асинхронном режиме выполнения методы execute() и next() выполняются в фоновом потоке, и при завершении или сбое операций среда выполнения отправляет события зарегистрированным прослушивателям событий или заданному экземпляру Responder. В синхронном режиме методы выполняются в основном потоке приложения. Это означает, что никакой другой код не может быть выполнен до тех пор, пока не завершатся текущие операции в базе данных. Кроме того, если в синхронном режиме выполнения произошел сбой метода, вместо отправки события ошибки среда выполнения генерирует исключение.

flash.data.SQLConnectionerror Отправляется, если во время операции произошла ошибка.flash.events.SQLErrorEvent.ERRORflash.events.SQLErrorEvent Отправляется, если во время операции произошла ошибка. execute()next()result Отправляется при успешном вызове метода execute() или next().flash.events.SQLEvent.RESULTflash.events.SQLEvent Отправляется при успешном вызове метода execute() или next(). После того как было отправлено событие result, для получения результатов выполнения инструкции можно вызвать метод getResult(). execute()next()getResult()SQLStatement Создает экземпляр SQLStatement.Если конструктор вызывается из какой-либо изолированной среды за пределами главной изолированной среды приложения. SecurityErrorSecurityError Создает экземпляр SQLStatement. cancel Отменяет выполнение инструкции. Отменяет выполнение инструкции. Как и метод SQLConnection.cancel(), данный метод используется, чтобы остановить продолжительный запрос или отменить запрос, находящийся в процессе выполнения. Однако, в отличие от метода SQLConnection.cancel(), этот метод отменяет только одну инструкцию. Если инструкции в текущий момент не выполняются, в результате вызова этого метода ничего не произойдет.

Непосредственно в ответ на завершение операции cancel() события не отправляются. Однако, если завершается операция cancel() и отменяется выполнение инструкции, экземпляр SQLStatement отправляет событие error, которое обозначает, что выполнение инструкции (вызов метода execute() или next()) не завершено. Если же при вызове метода execute() или next() задано значение параметра responder, будет вызван соответствующий обработчик ошибки. В любом случае у экземпляра SQLError, передаваемого прослушивателям, свойство errorID будет иметь значение 3118 («Операция прервана»).

clearParameters Удаляет все текущие значения параметров. Удаляет все текущие значения параметров. параметрыexecute Выполняет инструкцию SQL, которая содержится в свойстве text, применительно к базе данных, подключенной к объекту SQLConnection в свойстве sqlConnection.Если свойство text имеет значение null или содержит пустую строку (""); если свойство sqlConnection не задано; если экземпляр SQLConnection, указанный в свойстве sqlConnection, не подключен или если оператор выполняется в текущий момент. IllegalOperationErrorflash.errors:IllegalOperationErrorЕсли произошел сбой операции в синхронном режиме выполнения. SQLErrorflash.errors:SQLErrorprefetchint-1Когда в свойстве text задана инструкция SELECT, это значение обозначает количество строк, возвращаемых инструкцией за один раз. Значение по умолчанию равно -1. Это значит, что все строки результата будут возвращены инструкцией за один раз. Этот параметр используется совместно с методом next() для разделения больших результирующих наборов на меньшие наборы данных. При более быстром возврате результатов и разделении операций по их обработке приложение будет восприниматься пользователями как более производительное.

Если инструкция SQL представляет собой запрос SELECT и задан аргумент prefetch, значение которого больше нуля, данная инструкция будет выполняться до тех пор, пока не будет возвращен весь результирующий набор или не будет вызван один из методов SQLStatement.cancel() или SQLConnection.cancel(). Следует заметить, что из-за того, что во время выполнения количество строк в результирующем наборе неизвестно, курсор базы данных должен переместиться за последнюю строку результирующего набора до того, как завершится выполнение оператора. Если аргумент prefetch задан при вызове метода execute(), необходимо запросить не менее чем на одну запись больше, чем общее количество записей в результирующем наборе (либо с помощью значения prefetch, которое превышает количество строк в результирующем наборе, либо с помощью последующих вызовов метода next()), прежде чем свойство complete экземпляра SQLResult станет равным true.

responderflash.net:RespondernullОбъект, для которого определены методы, вызываемые при успешном выполнении или сбое операции. При асинхронном режиме выполнения, если аргумент responder имеет значение null, по окончании выполнения отправляется событие result или error.
Выполняет инструкцию SQL, которая содержится в свойстве text, применительно к базе данных, подключенной к объекту SQLConnection в свойстве sqlConnection.

Если аргумент responder имеет значение, отличное от null, указанный объект Responder определяет методы, вызываемые для обработки результатов операции. Если аргумент responder имеет значение null, при успешном завершении операции в асинхронном режиме отправляется событие result, а при сбое — событие error.

Чтобы просмотреть результат выполнения инструкции, например строки, созданные в результате выполнения инструкции SELECT, или первичный ключ инструкции INSERT, созданный базой данных, необходимо вызвать метод getResult(). Результаты можно просмотреть сразу после выполнения инструкции в синхронном режиме, а также после отправки события result в асинхронном режиме.

Перед выполнением каждая инструкция должна быть подготовлена (скомпилирована). При первом вызове метода execute() экземпляра SQLStatement среда выполнения подготавливает инструкцию. Когда инструкция подготовлена, она больше не требует повторной подготовки до тех пор, пока не изменится свойство text. Задание одного или нескольких параметров не требует повторной подготовки инструкции.

Следующий пример иллюстрирует выполнение SQLStatement с использованием прослушивателей событий для определения завершения или сбоя выполнения инструкции. var conn:SQLConnection; var dbStatement:SQLStatement; function init():void { conn = new SQLConnection(); conn.addEventListener(SQLEvent.OPEN, connOpenHandler); dbStatement = new SQLStatement(); dbStatement.sqlConnection = conn; dbStatement.text = "SELECT id, name, ssn FROM employees"; var dbFile:File = new File(File.separator + "employee.db"); conn.open(dbFile); } function connOpenHandler(event:SQLEvent):void { dbStatement.addEventListener(SQLEvent.RESULT, resultHandler); dbStatement.addEventListener(SQLErrorEvent.ERROR, errorHandler); dbStatement.execute(); } function resultHandler(event:SQLEvent):void { var result:SQLResult = dbStatement.getResult(); if (result != null) { var numRows:int = result.data.length; for (var i:int = 0; i < numRows; i++) { var row:Object = result.data[i]; trace("id:", row.id, ", name:", row.name, ", ssn:", row.ssn); } } } function errorHandler(event:SQLErrorEvent):void { trace("An error occured while executing the statement."); } Следующий пример иллюстрирует выполнение SQLStatement с использованием объекта Responder для указания на функции, вызываемые при завершении или сбое выполнения инструкции. var conn:SQLConnection; var dbStatement:SQLStatement; var employeeResponder:Responder; function init():void { conn = new SQLConnection(); conn.addEventListener(SQLEvent.OPEN, connOpenHandler); dbStatement = new SQLStatement(); dbStatement.sqlConnection = conn; dbStatement.text = "SELECT id, name, ssn FROM employees"; var dbFile:File = new File(File.separator + "employee.db"); conn.open(dbFile); } function connOpenHandler(event:SQLEvent):void { employeeResponder = new Responder(resultHandler, errorHandler); dbStatement.execute(-1, employeeResponder); } function resultHandler(result:SQLResult):void { if (result != null) { var numRows:int = result.data.length; for (var i:int = 0; i < numRows; i++) { var row:Object = result.data[i]; trace("id:", row.id, ", name:", row.name, ", ssn:", row.ssn); } } } function errorHandler(error:SQLError):void { trace("An error occured while executing the statement."); }
next()getResult()resultflash.events:SQLEventОтправляется после успешного выполнения инструкции или в том случае, если указано значение аргумента prefetch, а инструкция SELECT возвращает одну или несколько строк данных. Отправляется после успешного выполнения инструкции или в том случае, если задано значение аргумента prefetch, а инструкция SELECT возвращает одну или несколько строк данных.errorflash.events:SQLErrorEventОтправляется после сбоя операции в асинхронном режиме выполнения. Отправляется после сбоя операции в асинхронном режиме выполнения.
getResult Обеспечивает доступ к объекту SQLResult, который содержит результаты выполнения инструкции, включая все строки результата выполнения инструкции SELECT и другие сведения о выполнении всех выполненных инструкций.Объект SQLResult, который содержит результат вызова метода execute() или next(). flash.data:SQLResult Обеспечивает доступ к объекту SQLResult, который содержит результаты выполнения инструкции, включая все строки результата выполнения инструкции SELECT и другие сведения о выполнении всех выполненных инструкций. В асинхронном режиме выполнения данные результата не будут доступны, пока не отправлено событие result.

Если при выполнении инструкции SELECT метод execute() вызван с аргументом prefetch, имеющим значение по умолчанию -1, возвращаемый объект SQLResult будет содержать весь результирующий набор запроса.

Если аргумент prefetch указан при вызове метода execute() или next(), метод getResult() работает как очередь результатов с порядком доступа к элементам «первым поступил — первым обслужен» (FIFO, First In — First Out). Каждый раз при отправке события result к очереди добавляется новый объект SQLResult. Каждый раз при вызове метода getResult() возвращается и удаляется из очереди самый первый объект SQLResult (тот, который был добавлен в очередь первым). Если в очереди не осталось объектов SQLResult, метод getResult() возвращает null.

Следует заметить, что до удаления с помощью метода getResult() объекты SQLResult остаются в очереди. Например, если метод execute() вызывается несколько раз без вызова метода getResult(), объекты SQLResult, связанные с каждым вызовом метода execute(), остаются в очереди.

execute()next()событие результата
next Извлекает следующую часть результирующего набора инструкции SELECT.Если метод вызывается, а оператор в текущий момент не выполняется (свойство executing имеет значение false). IllegalOperationErrorflash.errors:IllegalOperationErrorесли произошел сбой операции в синхронном режиме выполнения. SQLErrorflash.errors:SQLErrorprefetchint-1Когда в свойстве text задана инструкция SELECT, это значение обозначает количество строк, возвращаемых инструкцией за один раз. Значение по умолчанию равно -1. Это значит, что все строки результата будут возвращены инструкцией за один раз. При более быстром возврате результатов и разделении операций по их обработке приложение будет восприниматься пользователями как более производительное. responderflash.net:RespondernullОбъект, для которого определены методы, вызываемые при успешном выполнении или сбое операции. Если аргумент responder имеет значение null, по окончании выполнения отправляется событие result или error. Извлекает следующую часть результирующего набора инструкции SELECT. Если в результирующем наборе больше не осталось строк, событие result отправляется, но в очередь getResult() больше не добавляются объекты SQLResult.

В асинхронном режиме выполнения, если аргумент responder имеет значение, отличное от null, указанный объект Responder обозначает методы, вызываемые для обработки результатов операции. Если аргумент responder имеет значение null, при успешном завершении операции отправляется событие result, а при сбое — событие error.

Этот метод может быть вызван только во время выполнения оператора. Если инструкция SQL представляет собой запрос SELECT и задан аргумент prefetch, значение которого больше нуля, инструкции будут выполняться до тех пор, пока не будет возвращен весь результирующий набор или не будет вызван метод SQLStatement.cancel() или SQLConnection.cancel().

Следующий пример иллюстрирует выполнение SQLStatement с явным указанием того, что при первом возврате результатов необходимо возвратить только первые 10 строк набора результатов. Код проверяет свойство complete объекта SQLResult и, если получены не все строки, вызывает метод next(). var conn:SQLConnection; var dbStatement:SQLStatement; function init():void { conn = new SQLConnection(); conn.addEventListener(SQLEvent.OPEN, connOpenHandler); dbStatement = new SQLStatement(); dbStatement.sqlConnection = conn; dbStatement.text = "SELECT id, name, ssn FROM employees"; var dbFile:File = new File(File.separator + "employee.db"); conn.open(dbFile); } function connOpenHandler(event:SQLEvent):void { dbStatement.addEventListener(SQLEvent.RESULT, resultHandler); dbStatement.addEventListener(SQLErrorEvent.ERROR, errorHandler); dbStatement.execute(10); } function resultHandler(event:SQLEvent):void { var result:SQLResult = dbStatement.getResult(); if (result != null) { var numRows:int = result.data.length; for (var i:int = 0; i < numRows; i++) { var row:Object = result.data[i]; trace("id:", row.id, ", name:", row.name, ", ssn:", row.ssn); } if (!result.complete) { dbStatement.next(10); } } } function errorHandler(event:SQLErrorEvent):void { trace("An error occured while executing the statement."); }
execute()resultflash.events:SQLEventОтправляется после успешного выполнения инструкции или в том случае, если указано значение аргумента prefetch и метод next() возвращает одну или несколько строк данных. Отправляется после успешного выполнения инструкции или в том случае, если задано значение аргумента prefetch и метод next() возвращает одну или несколько строк данных.errorflash.events:SQLErrorEventОтправляется после сбоя операции в асинхронном режиме выполнения. Отправляется после сбоя операции в асинхронном режиме выполнения.
executing Указывает, выполняется ли инструкция в текущий момент.Boolean Указывает, выполняется ли инструкция в текущий момент.

Это свойство имеет значение true, если после вызова метода execute() из базы данных были возвращены не все результаты.

execute()
itemClass Обозначает класс (тип данных), который используется для каждой строки, возвращенной в результате выполнения инструкции.Class Обозначает класс (тип данных), который используется для каждой строки, возвращенной в результате выполнения инструкции.

По умолчанию каждая строка, возвращаемая инструкцией SELECT, создается в виде экземпляра Object, при этом имена столбцов результирующего набора совпадают с именами свойств объекта, а значение каждого столбца равно значению соответствующего свойства.

Если в свойстве itemClass указать класс, каждая строка, возвращаемая инструкцией SELECT, которая выполняется данным экземпляром SQLStatement, создается в виде объекта заданного класса. Каждому свойству экземпляра itemClass присваивается значение из столбца с таким же именем, как и у свойства.

Любой класс, указанный в этом свойстве, должен иметь конструктор без параметров. Кроме того, в этом классе должно быть определено по одному свойству для каждого столбца, возвращаемого инструкцией SELECT. Считается ошибкой, если у столбца из списка SELECT в классе itemClass нет свойства с соответствующим именем.

Следующий код иллюстрирует использование свойства itemClass для создания во время выполнения экземпляров пользовательского класса из результатов, возвращенных инструкцией SQL SELECT. // Employee class definition package { public class Employee { public var name:String; public var ssn:String; public var id:uint; public override function toString():String { return "id: "+ id.toString() + " name: " + name + " ssn: " + ssn; } } } // using the Employee class as SQLStatement.itemClass var conn:SQLConnection; var dbStatement:SQLStatement; function init():void { conn = new SQLConnection(); conn.addEventListener(SQLEvent.OPEN, connOpenHandler); dbStatement = new SQLStatement(); dbStatement.sqlConnection = conn; dbStatement.text = "SELECT id, name, ssn FROM employees"; dbStatement.itemClass = Employee; var dbFile:File = new File(File.separator + "employee.db"); conn.open(dbFile); } function connOpenHandler(event:SQLEvent):void { dbStatement.addEventListener(SQLEvent.RESULT, resultHandler); dbStatement.execute(); } function resultHandler(event:SQLEvent):void { var result:SQLResult = dbStatement.getResult(); if (result != null) { var emp:Employee; var numRows:int = result.data.length; for (var i:int = 0; i < numRows; i++) { emp = result.data[i]; trace(emp.toString()); } } }
flash.data.SQLResult.data
parameters Служит в качестве ассоциативного массива, в который добавляются значения параметров, заданных в свойстве text инструкции SQL.Object Служит в качестве ассоциативного массива, в который добавляются значения параметров, заданных в свойстве text инструкции SQL. Ключами массива являются имена параметров. Если в тексте инструкции имеется параметр без имени, его ключом является индекс параметра.

Внутри текста инструкции SQL параметры обозначаются с помощью одного из следующих символов: «?», «:» или «@».

Маркеры «:» и «@» обозначают именованный параметр, а символы, следующие после маркера, обозначают имя параметра.

Например, в следующей инструкции SQL параметр с именем firstName задан с помощью символа «:»:

SELECT FROM employees WHERE firstName = :firstName

Маркер «?» обозначает проиндексированный (нумерованный) параметр. Каждому параметру автоматически назначается индекс в зависимости от последовательности параметров в тексте инструкции. Индексы параметров начинаются с нуля. Иными словами, индекс первого параметра равен 0.

Параметры используются для типизированной подстановки значений, которые неизвестны во время создания инструкции SQL. Использование параметров — это единственный способ обеспечить класс хранения значения, передаваемого в базу данных. Если параметры не используются, все значения преобразуются из своего текстового представления к классу хранения с учетом типов соответствующих столбцов. Дополнительные сведения о классах хранения и соответствии столбцов см. в разделе «Поддержка типов данных» в приложении «Поддержка SQL в локальных базах данных».

Параметры также используются как мера безопасности с целью предотвращения такого метода взлома, как атака путем внедрения кода SQL (SQL-инъекция). При атаке путем внедрения кода SQL пользователь вводит код SQL в доступное ему место (например, в поле ввода данных). Если приложение формирует инструкции SQL, непосредственно добавляя в текст инструкции данные, введенные пользователем, то в базе данных выполнится код SQL, введенный злоумышленником. В следующем примере показано добавление данных, введенных пользователем, в текст инструкции SQL. Этот способ использовать нельзя:

// assume the variables "username" and "password" // contain user-entered data var sql:String = "SELECT userId " + "FROM users " + "WHERE username = '" + username + "' " + " AND password = '" + password + "'"; var statement:SQLStatement = new SQLStatement(); statement.text = sql;

Использование параметров инструкции вместо добавления в его текст пользовательских значений предотвращает атаку путем внедрения кода SQL, потому что значения параметров обрабатываются явным образом как подставляемые значения, а не становятся частью текста инструкции. Ниже приведена рекомендуемая альтернатива предыдущему примеру:

// assume the variables "username" and "password" // contain user-entered data var sql:String = "SELECT userId " + "FROM users " + "WHERE username = :username " + " AND password = :password"; var statement:SQLStatement = new SQLStatement(); statement.text = sql; // set parameter values statement.parameters[":username"] = username; statement.parameters[":password"] = password;

Перед выполнением инструкции должны быть заданы значения всех параметров. Связывание (т. е. объединение с текстом инструкции) значений параметров, заданных в массиве parameters, осуществляется при вызове метода execute(). После вызова метода execute() никакие последующие изменения значений не будут применены к выполняемой инструкции. Однако при последующем вызове метода execute() будут использоваться измененные значения. Если в тексте инструкции есть параметр, для которого в свойстве parameters не задано значение, возникнет ошибка.

Чтобы удалить значения всех параметров в свойстве parameters, используется метод clearParameters().

Следующий пример иллюстрирует использование именованного параметра :firstName в инструкции SQL. // employees is a SQLStatement instance employees.text = "SELECT FROM employees WHERE first = :firstName"; employees.parameters[":firstName"] = "Sam"; employees.execute(); Следующий пример иллюстрирует использование параметра без имени в инструкции SQL. // employees is a SQLStatement instance employees.text = "SELECT FROM employees WHERE first = ?"; employees.parameters[0] = "Sam"; employees.execute();
textclearParameters()
sqlConnection Объект SQLConnection, который управляет подключением к одной или нескольким базам данных, применительно к которым выполняется инструкция.flash.data:SQLConnectionЕсли во время выполнения инструкции была предпринята попытка изменить значение этого свойства. IllegalOperationErrorflash.errors:IllegalOperationError Объект SQLConnection, который управляет подключением к одной или нескольким базам данных, применительно к которым выполняется инструкция. text Фактический текст инструкции SQL.StringЕсли во время выполнения инструкции была предпринята попытка изменить значение свойства text. IllegalOperationErrorflash.errors:IllegalOperationError Фактический текст инструкции SQL.

Текстом может быть любая допустимая конструкция языка SQL. Полное описание диалекта SQL, поддерживаемого в локальных базах данных SQL, см. в приложении «Поддержка SQL в локальных базах данных».

SQLMode Этот класс содержит константы, представляющие возможные значения параметра openMode методов SQLConnection.open() и SQLConnection.openAsync().Object Этот класс содержит константы, представляющие возможные значения параметра openMode методов SQLConnection.open() и SQLConnection.openAsync(). flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()CREATE Указывает, что подключение открыто для обновлений и в случае отсутствия указанного файла базы данных создается новый.createString Указывает, что подключение открыто для обновлений и в случае отсутствия указанного файла базы данных создается новый. В этом режиме для базы данных разрешены чтение и запись. Если база данных отсутствует, она создается до завершения операции. flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()READ Указывает, что подключение открыто в режиме только для чтения.readString Указывает, что подключение открыто в режиме только для чтения. В этом режиме запрещены операции записи в базу данных. Если база данных отсутствует, происходит сбой операции открытия. flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()UPDATE Указывает, что подключение открыто для обновлений, но в случае отсутствия указанного файла базы данных новый не создается.updateString Указывает, что подключение открыто для обновлений, но в случае отсутствия указанного файла базы данных новый не создается. В этом режиме для базы данных разрешены чтение и запись. Если база данных отсутствует, происходит сбой операции открытия. flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()EncryptedLocalStore Класс EncryptedLocalStore обеспечивает механизм постоянного зашифрованного хранилища данных.Object Класс EncryptedLocalStore обеспечивает механизм постоянного зашифрованного хранилища данных.

Поддержка в профилях AIR: эта функция поддерживается во всех компьютерных операционных системах, но не поддерживается на мобильных устройствах или в средах AIR для телевизионных устройств. Используйте свойство EncryptedLocalStore.isSupported, чтобы проверить наличие поддержки в среде выполнения. Дополнительные сведения о поддержке API-интерфейса в разных профилях см. в разделе «Поддержка в профилях AIR».

Среда выполнения AIR предоставляет локальное зашифрованное хранилище для каждого приложения AIR, установленного на компьютере пользователя. Это позволяет сохранять и извлекать данные, хранимые на жестком диске пользователя в зашифрованном виде, при этом другие пользователи не смогут расшифровать эти данные обычными методами. Отдельное зашифрованное локальное хранилище используется для каждого приложения AIR, а каждое приложение AIR использует такое хранилище для каждой учетной записи пользователя на компьютере.

Используйте локальное зашифрованное хранилище для конфиденциальной информации, такой как имена учетных записей и пароли для веб-служб. Локальное зашифрованное хранилище подходит для информации, которая должна быть защищена от других пользователей. Однако оно не позволяет защитить данные от других процессов, выполняемых в той же учетной записи пользователя. Поэтому локальное зашифрованное хранилище не подходит для защиты секретных данных приложения, таких как ключи шифрования или DRM.

Для установления связи зашифрованного локального хранилища с каждым приложением и пользователем AIR использует интерфейс DPAPI в Windows, KeyChain в Mac OS и KeyRing или KWallet в Linux. В зашифрованном локальном хранилище используется 128-разрядное шифрование AES-CBC.

Информация в зашифрованном хранилище доступна только приложениям AIR в своей изолированной программной среде.

В случае обновления приложения AIR, обновленная версия сохраняет доступ ко всем существующим данным в локальном зашифрованном хранилище, за исключением следующих случаев:

  • элементы добавлены с использованием параметра stronglyBound в значении true;
  • и существующее и новые версии опубликованы до AIR 1.5.3, а обновление подписано с помощью подписи миграции.

Ограничения локального зашифрованного хранилища

Данные в локальном зашифрованном хранилище защищаются с использованием учетных данных пользователя операционной системы. Никто другой не сможет получить доступ к данным в хранилище, не имя учетных данных этого пользователя. Однако данные не защищены от доступа со стороны приложений, запущенных активным пользователем. Таким образом, данные приложения, которые желательно сохранить в тайне от пользователей (например, ключи лицензирования или DRM), оказываются незащищенными. Локальное зашифрованное хранилище данных не подходит для такой информации. В нем можно хранить только личные данные пользователя, например пароли.

Данные в локальном зашифрованном хранилище могут быть потеряны по многим причинам. Например, пользователь может удалить приложение и зашифрованный файл. Кроме того, в результате обновления может измениться идентификатор издателя. Поэтому локальное зашифрованное хранилище следует рассматривать как личный кэш, а не как постоянное хранилище данных.

Параметр stronglyBound уже не используется, поэтому ему не следует задавать значение true. Значение true не обеспечивает дополнительной защиты данных. В то же время доступ к данным прекращается при каждом обновлении приложения, даже если идентификатор издателя остается прежним.

Если размер сохраняемых данных превышает 10 МБ, работа зашифрованного локального хранилища может быть замедлена.

При удалении приложения AIR программа удаления не удаляет данные из зашифрованного локального хранилища.

Ниже приводятся рекомендации по использованию локального зашифрованного хранилища.

  • Используйте локальное зашифрованное хранилище для конфиденциальных данных пользователя, таких как пароли (параметру stronglyBound следует задать значение false).
  • Не используйте локальное зашифрованное хранилище для закрытых данных приложения, таких как ключи лицензирования и DRM.
  • В приложении необходимо предусмотреть возможность воссоздания данных локального зашифрованного хранилища на случай их потери. Например, при необходимости можно повторно запрашивать данные для входа в учетную запись пользователя.
  • Не используйте параметр stronglyBound.
  • Если же параметру stronglyBound задается значение true, не перемещайте сохраненные элементы во время обновления. Вместо этого следует воссоздавать данные после обновления.
  • Храните только относительно небольшие объемы данных. Для больших объемов данных, используйте базу данных SQL для AIR с шифрованием.

Идентификатором элементов зашифрованного локального приложения является строка. Все элементы хранятся в виде массива байтов.

Данные зашифрованного локального хранилища помещаются во вложенный каталог, который находится внутри пользовательского каталога данных приложения. Путь к вложенному каталогу — Adobe/AIR/ELS/ с идентификатором приложения в конце.

Следующий код сохраняет строку в зашифрованном локальном хранилище, извлекает ее, а затем удаляет. var str:String = "Bob"; var bytes:ByteArray = new ByteArray(); bytes.writeUTFBytes(str); EncryptedLocalStore.setItem("firstName", bytes); var storedValue:ByteArray = EncryptedLocalStore.getItem("firstName"); trace(storedValue.readUTFBytes(storedValue.length)); // "Bob" EncryptedLocalStore.removeItem("firstName");
getItem Данные, соответствующие указанному имени.Аргумент name имеет значение null или представляет собой пустую строку. ArgumentErrorArgumentErrorДанные ByteArray. Если элемент с заданным свойством name не содержит данных, метод возвращает null. flash.utils:ByteArraynameStringИмя элемента в зашифрованном локальном хранилище. Данные, соответствующие указанному имени.

Если элемент с заданным именем отсутствует, метод возвращает null.

removeItem Удаляет элемент с заданным именем из зашифрованного локального хранилища.Аргумент name имеет значение null или представляет собой пустую строку. ArgumentErrorArgumentErrornameStringИмя элемента в зашифрованном локальном хранилище. Удаляет элемент с заданным именем из зашифрованного локального хранилища. reset Очищает все зашифрованное локальное хранилище, удаляя все данные. Очищает все зашифрованное локальное хранилище, удаляя все данные. setItem Хранит объект ByteArray под указанным именем.Аргумент name имеет значение null или представляет собой пустую строку. ArgumentErrorArgumentErrornameStringИмя элемента в зашифрованном локальном хранилище. dataflash.utils:ByteArrayДанные. stronglyBoundBooleanfalse(Устарело) Параметру stronglyBound следует задать значениеfalse (используемое по умолчанию). Если задано значение true, сохраненный элемент нельзя получить из измененных файлов приложения. Например, если пользователь устанавливает обновление, то приложение больше не может считывать тесно связанные данные, которые ранее были записаны в локальном зашифрованном хранилище данных. Хранит объект ByteArray под указанным именем. isSupported Свойству isSupported задается значение true, если текущая платформа поддерживает класс EncryptedLocalStore, в противном случае задается значение false.BooleanСообщает, доступно ли локальное зашифрованное хранилище в клиентской системе. Свойству isSupported задается значение true, если текущая платформа поддерживает класс EncryptedLocalStore, в противном случае задается значение false.
SQLIndexSchema Экземпляр SQLIndexSchema используется для хранения сведений об определенном индексе базы данных.flash.data:SQLSchema Экземпляр SQLIndexSchema используется для хранения сведений об определенном индексе базы данных. Доступны следующие сведения: имя связанной таблицы (свойство table), инструкция SQL, используемая для создания индекса (свойство sql), и имя индекса (свойство name).

Для получения сведений о схеме индекса базы данных используется метод SQLConnection.loadSchema(), с помощью которого загружаются сведения о схеме. Следует предварительно убедиться, что в качестве аргумента type используется значение null или SQLIndexSchema. В полученном экземпляре SQLSchemaResult свойство indices содержит массив экземпляров SQLIndexSchema, представляющих индексы базы данных.

Как правило, экземпляры SQLIndexSchema не создаются непосредственно в прикладном коде.

flash.data.SQLConnection.loadSchema()SQLIndexSchema Создает экземпляр SQLIndexSchema.databaseStringИмя связанной базы данных. nameStringИмя индекса. sqlStringИнструкция SQL, используемая для создания данного индекса. tableStringИмя таблицы, к которой относится данный индекс. Создает экземпляр SQLIndexSchema. Как правило, конструктор SQLIndexSchema не вызывается непосредственно в прикладном коде. Чтобы получить сведения о схеме базы данных, нужно вызвать метод SQLConnection.loadSchema(). flash.data.SQLConnection.getSchemaResult()flash.data.SQLSchemaResult.indicestable Имя таблицы, к которой относится данный индекс.String Имя таблицы, к которой относится данный индекс.
SQLTableSchema Экземпляр SQLTableSchema используется для хранения сведений об определенной таблице базы данных.flash.data:SQLSchema Экземпляр SQLTableSchema используется для хранения сведений об определенной таблице базы данных. Он содержит имя таблицы (свойство name), инструкцию SQL для создания таблицы (свойство sql) и сведения о столбцах (свойство columns).

Для получения сведений о схеме таблицы базы данных используется метод SQLConnection.loadSchema(), с помощью которого загружаются данные схемы. Следует предварительно убедиться, что в качестве аргумента type используется значение null или SQLTableSchema. В полученном экземпляре SQLSchemaResult свойство tables содержит массив экземпляров SQLTableSchema, представляющих таблицы базы данных.

Как правило, экземпляры SQLTableSchema не создаются непосредственно в прикладном коде.

flash.data.SQLConnection.loadSchema()flash.data.SQLColumnSchemaSQLTableSchema Создает экземпляр SQLTableSchema.databaseStringИмя связанной базы данных. nameStringИмя таблицы. sqlStringИнструкция SQL, используемая для создания таблицы. columnsArrayМассив экземпляров SQLColumnSchema, описывающих столбцы таблицы. Создает экземпляр SQLTableSchema. Как правило, конструктор SQLTableSchema не вызывается непосредственно в прикладном коде. Чтобы получить сведения о схеме базы данных, нужно вызвать метод SQLConnection.loadSchema(). flash.data.SQLConnection.getSchemaResult()flash.data.SQLSchemaResult.tablescolumns Массив экземпляров SQLColumnSchema, которые содержат сведения о схеме столбцов данной таблицы.Array Массив экземпляров SQLColumnSchema, которые содержат сведения о схеме столбцов данной таблицы. Если вызов метода SQlConnection.loadSchema() показывает, что из результата исключены сведения о столбцах, свойство columns будет содержать пустой массив (массив, у которого значение свойства length равно 0). flash.data.SQLColumnSchemaflash.data.SQLConnection.loadSchema()
SQLResult Класс SQLResult обеспечивает доступ к данным, возвращаемым в результате выполнения инструкции SQL (экземпляр SQLStatement).Object Класс SQLResult обеспечивает доступ к данным, возвращаемым в результате выполнения инструкции SQL (экземпляр SQLStatement).

Экземпляр SQLResult для инструкции SQL доступен с помощью метода SQLStatement.getResult() или в качестве аргумента, который передается в результирующий обработчик экземпляра Responder, указанного при вызове метода SQLStatement.execute() или SQLStatement.next(). Как правило, экземпляры SQLResult не создаются непосредственно в прикладном коде.

Объект SQLResult используется для обращения к строкам данных, возвращаемым инструкцией SELECT (с помощью свойства data), получения идентификатора строки для инструкции INSERT (с помощью свойства lastInsertRowID), определения количества строк, обработанных инструкцией INSERT, UPDATE или DELETE (с помощью свойства rowsAffected) или определения наличия дополнительных строк результата выполнения инструкции SELECT, которые не были извлечены (с помощью свойства complete).

flash.data.SQLStatement.getResult()flash.data.SQLStatement.execute()flash.data.SQLStatement.next()SQLResult Создает экземпляр SQLResult.dataArraynullМассив строк, возвращенный в результате выполнения инструкции. Если инструкция не возвращает ни одной строки, это значение должно быть равно null. rowsAffectedNumber0Указывает количество строк, обработанных выполненной инструкцией. completeBooleantrueУказывает, имеются ли дополнительные строки для выборки или все данные были возвращены. rowIDNumber0Если инструкция является операцией SQL INSERT, это новый уникальный идентификатор строки. Создает экземпляр SQLResult. Как правило, конструктор SQLResult не вызывается непосредственно в прикладном коде. Чтобы извлечь экземпляр SQLResult, связанный с определенным экземпляром SQLStatement, необходимо вызвать метод getResult() этого экземпляра. Экземпляр SQLResult также передается в качестве аргумента в функцию результирующего обработчика, если при вызове метода execute() или next() указан экземпляр Responder. complete Указывает, все ли данные, полученные в результате выполнения инструкции, были возвращены.Boolean Указывает, все ли данные, полученные в результате выполнения инструкции, были возвращены.

Если инструкция возвращает одну или несколько строк, это свойство указывает, все ли строки были возвращены. Если метод execute() объекта SQLStatement был вызван с заданным аргументом prefetch, в свойстве data объекта SQLResult будет возвращено только указанное количество строк полученных данных. Дополнительные данные станут доступны при последующем вызове метода SQLStatement.next(). Это свойство используется, чтобы определить, когда были возвращены конечные данные.

Следует заметить, что из-за того, что во время выполнения количество строк неизвестно, курсор базы данных должен переместиться за последнюю строку до того, как завершится выполнение инструкции. Если при вызове метода SQLStatement.execute() задан аргумент prefetch, необходимо запросить не менее чем на одну запись больше, чем общее количество записей в результирующем наборе, прежде чем свойство complete экземпляра SQLResult получит значение true.

flash.data.SQLStatement.execute()flash.data.SQLStatement.next()
data Данные, возвращаемые в результате выполнения инструкции, особенно инструкции SQL SELECT.Array Данные, возвращаемые в результате выполнения инструкции, особенно инструкции SQL SELECT.

Когда инструкция возвращает одну или несколько строк, это свойство является массивом, содержащим объекты, представляющие строки полученных данных. Каждый объект в массиве имеет свойства, имена которых соответствуют именам столбцов в полученном наборе данных.

Допустим, что выполняется следующая инструкция SQL SELECT:

SELECT lastName, firstName FROM employees

Предположим, что таблица employees (сотрудники) содержит десять строк, тогда свойство SQLResult.data будет представлять собой объект Array с десятью элементами. Каждый элемент — это объект с двумя свойствами: lastName и firstName.

Ситуация усложняется, если инструкция SELECT используется со сложным столбцом результатов, например с агрегатной функцией. Допустим, что выполняется следующая инструкция SQL:

SELECT departmentId, SUM(salary) FROM employees GROUP BY departmentId

В результате выполнения этой инструкции каждый объект в массиве data имеет два свойства: departmentId и SUM(salary). Однако SUM(salary) является недопустимым идентификатором. Если используется вычисляемый столбец, например агрегатной или другой функции, в инструкции SQL необходимо указать псевдоним для вычисляемого столбца. Псевдоним служит в качестве имени свойства в полученных объектах данных. Рассмотрим в качестве примера следующую альтернативу предыдущей инструкции:

SELECT departmentId, SUM(salary) AS salarySubtotal FROM employees GROUP BY departmentId

В массиве data этой инструкции полученные объекты имеют два свойства: departmentId и salarySubtotal.

Свойство data всегда является экземпляром Array независимо от того, сколько строк и столбцов содержится в наборе результатов. Например, следующая инструкция SELECT возвращает одну строку и один столбец, то есть одно значение:

SELECT COUNT(~~) AS numEmployees FROM employees

После выполнения запроса свойство data содержит объект Array с одним элементом. Этот элемент представляет собой объект с одним свойством numEmployees.

Если в полученных данных содержатся повторяющиеся имена столбцов, например если инструкция SELECT включает два разных столбца id из двух разных таблиц, то полученным свойствам присваиваются имена в соответствии со значением свойства SQLConnection.columnNameStyle. По умолчанию имя каждого столбца используется в качестве имени свойства, но если в наборе результатов встречается несколько столбцов с одинаковым именем, то для них используется формат длинного имени [table-name]_[column-name]. Это поведение можно изменить, задав нужное значение для свойства SQLConnection.columnNameStyle.

По умолчанию объекты в массиве data являются экземплярами класса Object. Однако если указать для свойства SQLStatement.itemClass определенный класс, то элементы массива data создаются в качестве экземпляров этого класса. Для каждого столбца в наборе результатов класс itemClass должен иметь свойство, имя которого точно соответствует имени столбца.

Если инструкция не возвращает данных, это свойство равно null. Это происходит, если выполняется не инструкция SELECT или если инструкция SELECT не возвращает ни одной строки.

Следующий код иллюстрирует использование свойства itemClass для создания во время выполнения экземпляров пользовательского класса из результатов, возвращенных инструкцией SQL SELECT. // Employee class definition package { public class Employee { public var name:String; public var ssn:String; public var id:uint; public override function toString():String { return "id: "+ id.toString() + " name: " + name + " ssn: " + ssn; } } } // using the Employee class as SQLStatement.itemClass var conn:SQLConnection; var dbStatement:SQLStatement; function init():void { conn = new SQLConnection(); conn.addEventListener(SQLEvent.OPEN, connOpenHandler); dbStatement = new SQLStatement(); dbStatement.sqlConnection = conn; dbStatement.text = "SELECT id, name, ssn FROM employees"; dbStatement.itemClass = Employee; var dbFile:File = new File(File.separator + "employee.db"); conn.open(dbFile); } function connOpenHandler(event:SQLEvent):void { dbStatement.addEventListener(SQLEvent.RESULT, resultHandler); dbStatement.execute(); } function resultHandler(event:SQLEvent):void { var result:SQLResult = dbStatement.getResult(); if (result != null) { var emp:Employee; var numRows:int = result.data.length; for (var i:int = 0; i < numRows; i++) { emp = result.data[i]; trace(emp.toString()); } } }
SQLConnection.columnNameStyleSQLStatement.itemClass
lastInsertRowID Последний идентификатор строки, созданный инструкцией SQL INSERT.Number Последний идентификатор строки, созданный инструкцией SQL INSERT.

Значение равно 0, если выполненная инструкция не была инструкцией INSERT.

Уникальный идентификатор строки в таблице, используемый для поиска в базе данных. Это значение часто генерируется базой данных.

Дополнительные сведения об основных клавишах и генерируемых идентификаторах строк см. в разделах «CREATE TABLE» и «Выражения» в приложении «Поддержка SQL в локальных базах данных».

flash.data.SQLConnection.lastInsertRowIDflash.events.SQLUpdateEvent.rowID
rowsAffected Указывает количество строк, обработанных операцией.Number Указывает количество строк, обработанных операцией. Учитываются только те изменения, которые были непосредственно указаны в инструкции INSERT, UPDATE или DELETE.

Дополнительные изменения, вызванные триггерами, не учитываются. Свойство SQLConnection.totalChanges используется для нахождения общего числа изменений, включая изменения, вызванные триггерами.

Следует учесть, что если связанной операцией SQL является инструкция DELETE без предложения WHERE (т. е. инструкция удаляет все строки таблицы), свойство rowsAffected всегда будет равно 0, независимо от числа удаленных строк. Чтобы узнать число удаленных строк, можно добавить предложение WHERE в виде WHERE 1 = 1. В этом случае будут удалены все строки, а свойство rowsAffected будет точно отражать их число. Однако, в зависимости от числа удаляемых строк, это может отрицательно сказаться на производительности инструкции.

flash.data.SQLConnection.totalChanges