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



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 freqüê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 ocorrência de 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 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); 
var dbFile:File = File.applicationStorageDirectory.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); 
} 

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(); 
var dbFile:File = File.applicationStorageDirectory.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); 
} 

Criação de tabelas de banco de dados

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. Observe que este código presume que há uma ocorrê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); 
}

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. Observe que este código presume que há uma ocorrê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); 
}