Guia do desenvolvedor

Local Navigation

Criação e exclusão de bancos de dados SQLite

Você pode criar bancos de dados temporários ou permanentes.

Arquivos de banco de dados SQLite

Cada banco de dados SQLite é armazenado em um único arquivo. Se você só especificar o nome do banco de dados como valor do parâmetro para DatabaseFactory.create(), o arquivo de banco de dados será criado no armazenamento externo por cartão de memória. O local padrão do arquivo de banco de dados é /SDCard/databases/application_name/. O nome do aplicativo que cria o banco de dados é incluído no caminho padrão para evitar nomes repetidos.

Você não pode armazenar bancos de dados SQLite no armazenamento de aplicativo.

O armazenamento externo por cartão de memória é o local preferido de armazenamento para bancos de dados se o aparelho BlackBerry oferecer suporte. Nos aparelhos que suportam o armazenamento externo por cartão de memória, você pode criar bancos de dados em armazenamento externo por cartão de memória especificando o caminho /SDcard/.

Se o seu aplicativo tiver sido projetado para armazenar seu banco de dados SQLite no armazenamento de mídia incorporado, você deverá implementar seu aplicativo de modo que seja fácil modificar o código para alterar o local de armazenamento do banco de dados. Nos aparelhos que suportam o armazenamento de mídia incorporado, você pode criar bancos de dados em armazenamento de mídia incorporado especificando o caminho /store/.

Quando seu aplicativo é desinstalado, os bancos de dados SQLite associados a ele não são removidos automaticamente.

Sobre chaves primárias

Cada linha em uma tabela do SQLite é identificada de forma exclusiva por um ID de linha. O ID de linha é um número inteiro assinado de 64 bits que identifica a linha de forma exclusiva. O ID de linha pode ser acessado pelos nomes ROWID, OID ou _ROWID_ em lugar do nome de uma coluna, a menos que esses nomes sejam usados como nomes de coluna declarados explicitamente. Se a tabela possui uma coluna do tipo INTEGER PRIMARY KEY, então o nome dessa coluna é outro alias para o ID de linha.

Quando uma tabela pode ter operações de INSERT simultâneas, você deve assegurar que o ID de linha correto seja retornado. Quando você usa executeInsert para executar uma instrução INSERT, a sincronização é manipulada em código nativo e não há nenhum problema. Mas se você executa uma instrução INSERT usando outro método diferente de executeInsert, você deve executar a instrução INSERT e fazer uma chamada ao método Database.lastInsertedRowID dentro de um bloco sincronizado. O bloco sincronizado deve impedir que outras instruções INSERT executem (e modifiquem o último ID de linha inserido).

Para recuperar valores de número inteiro para usar como chaves em outra consulta, você pode usar o s métodos Statement.getIntegers e Statement.getLongs. Estes métodos simplificam e otimizam a recuperação de colunas de números inteiros. Você pode pensar nos valores de número inteiro recuperados como chaves estrangeiras, exceto pelo fato de que eles não têm que consultar a chave primária de outra tabela.

O SQLite cria automaticamente índices para colunas que têm restrições UNIQUE ou PRIMARY KEY.

Impor restrições de chaves estrangeiras

Se você usa chaves estrangeiras em seu banco de dados, você pode impor seu uso através da configuração da opção foreign_key_constraints na classe DatabaseOptions.

Você pode definir a opção foreign_key_constraints quando você cria o banco de dados. Entretanto, para as restrições de chaves estrangeiras funcionarem, defina também a opção todas as vezes que abrir o banco de dados. A amostra de código a seguir mostra como impor limitações de chaves estrangeiras ao abrir ou criar um banco de dados.

DatabaseOptions dbo = new DatabaseOptions();
dbo.set("foreign_key_constraints","on");
Database d = DatabaseFactory.openOrCreate("test.db", dbo);

Você pode verificar se as restrições de chaves estrangeiras estão ativadas com o método DatabaseOptions.foreignKeyConstraintsOn.

Codificação de caracteres

Os bancos de dados do SQLite armazenam strings internamente em UTF-8, enquanto o Java os armazena como UTF-16. A API Database manipula a conversão de strings internamente, de forma que você não precise fazer nenhuma codificação ou conversão.

O pragma encoding do SQLite não é compatível com a API Database, então você não pode definir outra codificação. Você deve usar caracteres UTF-8 suportados em seu banco de dados SQLite.

Usar agrupamentos de idioma

Quando seu banco de dados contém dados de texto em idiomas diferentes do inglês, você pode definir o agrupamento de idioma de modo que o SQLite classifique colunas e execute a indexação adequadamente. Você pode fazer isso com o operador COLLATE quando você cria a coluna.

O agrupamento Standard padrão fornece resultados bons para inglês em uso normal, e também fornece a ordenação correta para muitos outros idiomas geralmente usados. Ele pode não fornecer os resultados corretos para alguns idiomas latinos e para ideogramas como chinês e japonês.

Para obter mais informações sobre como alterar o agrupamento padrão, consulte www.unicode.org.

O trecho de código a seguir cria uma tabela com agrupamento de idioma francês habilitado em uma coluna chamada a, supondo que o banco de dados d está aberto.

d.executeStatement( "CREATE TABLE t1( a COLLATE french );" );

Os seguintes agrupamentos de idioma são suportados em aplicativos do BlackBerry:

  • Standard (o padrão)

  • Africâner

  • Árabe

  • Catalão

  • Tcheco

  • Francês

  • Hebraico

  • Chinês de Hong Kong

  • Húngaro

  • Japonês

  • Coreano

  • Pinyin

  • Polonês

  • Romeno

  • Espanhol

  • Tailandês

  • Turco

  • Chinês de Taiwan


Estas informações foram úteis? Gostaríamos de receber seus comentários.