Criação e modificação de um banco de dados

Adobe AIR 1.0 e posterior

Para que o seu aplicativo adicione ou recupere dados, deve haver um banco de dados com tabelas definidas nele que possam ser acessadas pelo aplicativo. Descrevemos aqui as tarefas de criação de um banco de dados e da estrutura de dados de um banco de dados. Embora usadas com menos frequência do que a inserção e a recuperação de dados, estas tarefas são necessárias para a maioria dos aplicativos.

Criação de um banco de dados

Para criar um arquivo de banco de dados, primeiro você deve criar uma instância do SQLConnection. Chame o método open() correspondente para abri-la no modo de execução síncrona ou o método openAsync() para abri-la no modo de execução assíncrona. Os métodos open() e openAsync() são usados para abrir uma conexão com um banco de dados. Se você passar uma ocorrência de File que se refira a um local de arquivo não existente para o parâmetro reference (o primeiro parâmetro), o método open() ou openAsync() criará um arquivo de banco de dados no local do arquivo e abrirá uma conexão com o banco de dados recém-criado.

Independentemente de você chamar o método open() ou openAsync() para criar um banco de dados, o nome do arquivo do banco de dados poderá ser qualquer nome de arquivo válido com qualquer extensão de nome de arquivo. Se você chamar o método open() ou openAsync() com null para o parâmetro reference , será criado um novo banco de dados na memória e não um arquivo de banco de dados no disco.

A listagem de código a seguir mostra o processo de criação de um arquivo de banco de dados (um novo banco de dados) usando o modo de execução assíncrona. Nesse caso, o arquivo de banco de dados é salvo no Apontar para o diretório de armazenamento do aplicativo com o nome de arquivo “DBSample.db”:

import flash.data.SQLConnection; 
import flash.events.SQLErrorEvent; 
import flash.events.SQLEvent; 
import flash.filesystem.File; 
     
var conn:SQLConnection = new SQLConnection(); 
     
conn.addEventListener(SQLEvent.OPEN, openHandler); 
conn.addEventListener(SQLErrorEvent.ERROR, errorHandler); 
     
// The database file is in the application storage directory 
var folder:File = File.applicationStorageDirectory; 
var dbFile:File = folder.resolvePath("DBSample.db"); 
     
conn.openAsync(dbFile); 
     
function openHandler(event:SQLEvent):void 
{ 
    trace("the database was created successfully"); 
} 
     
function errorHandler(event:SQLErrorEvent):void 
{ 
    trace("Error message:", event.error.message); 
    trace("Details:", event.error.details); 
} 
<?xml version="1.0" encoding="utf-8"?> 
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()"> 
    <mx:Script> 
        <![CDATA[ 
            import flash.data.SQLConnection; 
            import flash.events.SQLErrorEvent; 
            import flash.events.SQLEvent; 
            import flash.filesystem.File; 
             
            private function init():void 
            { 
                var conn:SQLConnection = new SQLConnection(); 
                 
                conn.addEventListener(SQLEvent.OPEN, openHandler); 
                conn.addEventListener(SQLErrorEvent.ERROR, errorHandler); 
                  
                // The database file is in the application storage directory 
                var folder:File = File.applicationStorageDirectory; 
                var dbFile:File = folder.resolvePath("DBSample.db"); 
                 
                conn.openAsync(dbFile); 
            } 
             
            private function openHandler(event:SQLEvent):void 
            { 
                trace("the database was created successfully"); 
            } 
             
            private function errorHandler(event:SQLErrorEvent):void 
            { 
                trace("Error message:", event.error.message); 
                trace("Details:", event.error.details); 
            } 
        ]]> 
    </mx:Script> 
</mx:WindowedApplication>
Nota: Embora a classe File permita apontar para um caminho nativo específico de arquivo, fazer isso pode levar a aplicativos que não funcionam em várias plataformas. Por exemplo, o caminho C:\Documents and Settings\joe\test.db só funciona no Windows. http://help.adobe.com/pt_BR/Flash/CS5/AS3LR/flash/filesystem/File.html Por essas razões, é melhor usar as propriedades estáticas da classe File, como o método File.applicationStorageDirectory e resolvePath() (como mostrado no exemplo anterior). Para obter mais informações, consulte Caminhos de objetos File .

Para executar operações de maneira síncrona, quando abrir uma conexão de banco de dados com a ocorrência de SQLConnection, chame o método open() . O seguinte exemplo mostra como criar e abrir uma ocorrência de SQLConnection que execute suas operações de maneira síncrona:

import flash.data.SQLConnection; 
import flash.errors.SQLError; 
import flash.filesystem.File; 
     
var conn:SQLConnection = new SQLConnection(); 
     
// The database file is in the application storage directory 
var folder:File = File.applicationStorageDirectory; 
var dbFile:File = folder.resolvePath("DBSample.db"); 
     
try 
{ 
    conn.open(dbFile); 
    trace("the database was created successfully"); 
} 
catch (error:SQLError) 
{ 
    trace("Error message:", error.message); 
    trace("Details:", error.details); 
} 
<?xml version="1.0" encoding="utf-8"?> 
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()"> 
    <mx:Script> 
        <![CDATA[ 
            import flash.data.SQLConnection; 
            import flash.errors.SQLError; 
            import flash.filesystem.File; 
             
            private function init():void 
            { 
                var conn:SQLConnection = new SQLConnection(); 
                 
                // The database file is in the application storage directory 
                var folder:File = File.applicationStorageDirectory; 
                var dbFile:File = folder.resolvePath("DBSample.db"); 
                  
                try 
                { 
                    conn.open(dbFile); 
                    trace("the database was created successfully"); 
                } 
                catch (error:SQLError) 
                { 
                    trace("Error message:", error.message); 
                    trace("Details:", error.details); 
                } 
            } 
        ]]> 
    </mx:Script> 
</mx:WindowedApplication>

Criação de tabelas de banco de dados

http://help.adobe.com/pt_BR/Flash/CS5/AS3LR/flash/data/SQLStatement.html#execute() Criar uma tabela em um banco de dados envolve executar uma instrução SQL nesse banco de dados usando o mesmo processo seguido para executar uma instrução SQL, como SELECT , INSERT , entre outras. Para criar uma tabela, use uma instrução CREATE TABLE , que inclui definições de colunas e restrições para a nova tabela. Para obter mais informações sobre como executar instruções SQL, consulte Trabalhar com instruções SQL .

O exemplo a seguir demonstra como criar uma tabela chamada “employees” em um arquivo de banco de dados existente usando o modo de execução assíncrona. http://help.adobe.com/pt_BR/Flash/CS5/AS3LR/flash/data/SQLConnection.html Observe que este código presume que há uma instância de SQLConnection denominada conn já instanciada e conectada a um banco de dados.

import flash.data.SQLConnection; 
import flash.data.SQLStatement; 
import flash.events.SQLErrorEvent; 
import flash.events.SQLEvent; 
     
// ... create and open the SQLConnection instance named conn ... 
     
var createStmt:SQLStatement = new SQLStatement(); 
createStmt.sqlConnection = conn; 
     
var sql:String =  
    "CREATE TABLE IF NOT EXISTS employees (" +  
    "    empId INTEGER PRIMARY KEY AUTOINCREMENT, " +  
    "    firstName TEXT, " +  
    "    lastName TEXT, " +  
    "    salary NUMERIC CHECK (salary > 0)" +  
    ")"; 
createStmt.text = sql; 
     
createStmt.addEventListener(SQLEvent.RESULT, createResult); 
createStmt.addEventListener(SQLErrorEvent.ERROR, createError); 
     
createStmt.execute(); 
     
function createResult(event:SQLEvent):void 
{ 
    trace("Table created"); 
} 
     
function createError(event:SQLErrorEvent):void 
{ 
    trace("Error message:", event.error.message); 
    trace("Details:", event.error.details); 
}
<?xml version="1.0" encoding="utf-8"?> 
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()"> 
    <mx:Script> 
        <![CDATA[ 
            import flash.data.SQLConnection; 
            import flash.data.SQLStatement; 
            import flash.events.SQLErrorEvent; 
            import flash.events.SQLEvent; 
             
            private function init():void 
            { 
                // ... create and open the SQLConnection instance named conn ... 
                 
                var createStmt:SQLStatement = new SQLStatement(); 
                createStmt.sqlConnection = conn; 
                 
                var sql:String =  
                    "CREATE TABLE IF NOT EXISTS employees (" +  
                    "    empId INTEGER PRIMARY KEY AUTOINCREMENT, " +  
                    "    firstName TEXT, " +  
                    "    lastName TEXT, " +  
                    "    salary NUMERIC CHECK (salary > 0)" +  
                    ")"; 
                createStmt.text = sql; 
                 
                createStmt.addEventListener(SQLEvent.RESULT, createResult); 
                createStmt.addEventListener(SQLErrorEvent.ERROR, createError); 
                 
                createStmt.execute(); 
            } 
             
            private function createResult(event:SQLEvent):void 
            { 
                trace("Table created"); 
            } 
             
            private function createError(event:SQLErrorEvent):void 
            { 
                trace("Error message:", event.error.message); 
                trace("Details:", event.error.details); 
            } 
        ]]> 
    </mx:Script> 
</mx:WindowedApplication>

O exemplo a seguir demonstra como criar uma tabela chamada “employees” em um arquivo de banco de dados existente usando o modo de execução síncrona. http://help.adobe.com/pt_BR/Flash/CS5/AS3LR/flash/data/SQLConnection.html Observe que este código presume que há uma instância de SQLConnection denominada conn já instanciada e conectada a um banco de dados.

import flash.data.SQLConnection; 
import flash.data.SQLStatement; 
import flash.errors.SQLError; 
     
// ... create and open the SQLConnection instance named conn ... 
     
var createStmt:SQLStatement = new SQLStatement(); 
createStmt.sqlConnection = conn; 
     
var sql:String =  
    "CREATE TABLE IF NOT EXISTS employees (" +  
    "    empId INTEGER PRIMARY KEY AUTOINCREMENT, " +  
    "    firstName TEXT, " +  
    "    lastName TEXT, " +  
    "    salary NUMERIC CHECK (salary > 0)" +  
    ")"; 
createStmt.text = sql; 
     
try 
{ 
    createStmt.execute(); 
    trace("Table created"); 
} 
catch (error:SQLError) 
{ 
    trace("Error message:", error.message); 
    trace("Details:", error.details); 
} 
<?xml version="1.0" encoding="utf-8"?> 
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()"> 
    <mx:Script> 
        <![CDATA[ 
            import flash.data.SQLConnection; 
            import flash.data.SQLStatement; 
            import flash.errors.SQLError; 
             
            private function init():void 
            { 
                // ... create and open the SQLConnection instance named conn ... 
                 
                var createStmt:SQLStatement = new SQLStatement(); 
                createStmt.sqlConnection = conn; 
                 
                var sql:String =  
                    "CREATE TABLE IF NOT EXISTS employees (" +  
                    "    empId INTEGER PRIMARY KEY AUTOINCREMENT, " +  
                    "    firstName TEXT, " +  
                    "    lastName TEXT, " +  
                    "    salary NUMERIC CHECK (salary > 0)" +  
                    ")"; 
                createStmt.text = sql; 
                 
                try 
                { 
                    createStmt.execute(); 
                    trace("Table created"); 
                } 
                catch (error:SQLError) 
                { 
                    trace("Error message:", error.message); 
                    trace("Details:", error.details); 
                } 
            } 
        ]]> 
    </mx:Script> 
</mx:WindowedApplication>