Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] problemas com sqlhelper

Oi Paulo,

Não sei se eu entendi direito... Realmente, deixando no construtor, como eu fiz no exemplo, ele vai tentar criar a tabela todas as vezes.
Mas eu faria como o Marcelo falou, crie todas as tabelas de uma vez no onCreate do seu SQLiteOpenHelper. Assim você garante que só serão criadas uma vez. Isso pode ajudar também mais para a frente caso você queira adicionar alguma tabela ou coluna, já que ele faz um controle das versões para você.

Toshi Kurauchi


2012/2/23 Paulo HP Santos <paulinhohps09@gmail.com>
opa Toshi obrigado pela ajuda,

no caso desse método que vc me passou, toda vez que chamar o DAO, vai tentar criar a tabela novamente,  antes que eu começar esse projeto, eu utilizava o método openOrCreate, só que isso eu utilizava pq eu ja tinha o banco feito pelo SQLite Expert, pq esse método pelo um File. A questão é como eu posso fazer para ele não tentar criar o banco assim que inicia o DAO, ou seja tem alguma forma para que o sistema verifique se já existe a tabela??

Em 23 de fevereiro de 2012 09:34, Marcelo Henrique <marcelohd02@gmail.com> escreveu:

Isso mesmo Toshi, será melhor ao criar ele mandar todos os DAO´s dele junto

Em 23 de fevereiro de 2012 10:29, Clebão - EcoCentauro <clebaori@gmail.com> escreveu:

Olha nos meus projetos eu estou fazendo um pouco diferente.

O próprio  Helper fica responsável para criar todas as tabelas. O meu Helper tem os scripts de todas as tabelas, trigger etc,

Motivo: Do jeito que você esta fazendo o primeiro DAO que for acessar o Helper é a primeira tabela que será criada.

public void onCreate(SQLiteDatabase db){...} é chamado apenas quando você tenta pegar um banco de dados que não existe, ou seja, será executado o script que passado pelo construtor do Helper, ou seja, o primeiro DAO do app que for acessar o banco e o banco não existir.



Em 23 de fevereiro de 2012 10:21, Paulo HP Santos <paulinhohps09@gmail.com> escreveu:

sim, mas isso não interfere, pois cria mesmo assim, o meu problema é pra criar várias tabelas, se eu criar somente uma cria blezinha, como eu tenho vários DAO's quando eu preciso criar as tabelas eu chamo os DAO de cada tabela, dai só o primeiro cria os outros não.

Em 23 de fevereiro de 2012 09:19, Clebão - EcoCentauro <clebaori@gmail.com> escreveu:

Não é necessário colocar "[ ]" nos nomes dos campos.

Em 23 de fevereiro de 2012 10:16, Paulo HP Santos <paulinhohps09@gmail.com> escreveu:

esse seria minha classe helper:

public class SQLiteHelper extends SQLiteOpenHelper{
private String sqlCreate;
private String sqlDelete;
public SQLiteHelper( Context ctx, String nomeBD, int versaoBD, String sqlCreate, String sqlDelete){
super(ctx, nomeBD, null, versaoBD);
this.sqlCreate = sqlCreate;
this.sqlDelete = sqlDelete;
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(sqlCreate);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(sqlDelete);
onCreate(db);
}



-------------------------------------------------------------------------------------------

e essa é meu DAO

public class CtaPagarDAO {
private SQLiteDatabase db;
private SQLiteHelper dbHelper;
private String nomeTabela = "CTAPAGAR";
private static final String SCRIPT_DB_DELETE = "DROP TABLE IF EXISTS CTAPAGAR";
private static final String SCRIPT_DB_CREATE = "CREATE TABLE [CTAPAGAR] (" +
"[COD_CTAPAGAR] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," +
"[DESCRICAO] TEXT(60) NOT NULL," +
"[VALOR_PRC] REAL(14, 2) NOT NULL," +
"[VALOR_PG] REAL(14, 2)," +
"[DT_VENC] DATE NOT NULL," +
"[DT_PG] DATE," +
"[DT_EMISSAO] DATE NOT NULL," +
"[STATUS] INTEGER(1) NOT NULL," +
"[COD_CATEGORIA] INTEGER(4) NOT NULL," +
"[ESPECIE_PGTO] TEXT(10)," +
"[COD_FORNEC] INTEGER(4), " +
"[NUMPARC] TEXT(10), " +
"[QTD_PRC] INTEGER);";
public CtaPagarDAO (Context ctx){
dbHelper = new SQLiteHelper(ctx, "DBFINANCEIRO", 1, SCRIPT_DB_CREATE, SCRIPT_DB_DELETE);
db = dbHelper.getWritableDatabase();
db.close();
}


Em 23 de fevereiro de 2012 09:08, Marcelo Henrique <marcelohd02@gmail.com> escreveu:

Cara nunca tive problema parecido . como voce tah criando esses DB.?

Em 23 de fevereiro de 2012 10:05, Paulo HP Santos <paulinhohps09@gmail.com> escreveu:

Bom dia a todos.

Estou com um problema para criar tabelas usando o SqlHelper, no caso eu tenho que criar 4 tabelas, mas só é criada apenas uma tabela, eu utilizo para cada tabela uma classe DAO, então eu chamo o método de criação do helper ao iniciar cada DAO, mas no meu caso só consegue cria a primeira tabela. Alguém já teve algum problema parecido?? Será que para minha solução eu devo criar uma sql com todas as tabelas e executar ele de uma vez só??

Desde já agradeço.

--
Paulo HP Santos


Tecnólogo em  Análise e
Desenvolvimento de Sistemas

--- "A vida derruba, mas você escolhe se quer levantar ou não." -----






--
                                              - Marcelo Henrique -
  "Se não puder se destacar pelo talento, vença pelo esforço." (Dave Weinbaum)




--
Paulo HP Santos


Tecnólogo em  Análise e
Desenvolvimento de Sistemas

--- "A vida derruba, mas você escolhe se quer levantar ou não." -----







--
Paulo HP Santos


Tecnólogo em  Análise e
Desenvolvimento de Sistemas

--- "A vida derruba, mas você escolhe se quer levantar ou não." -----







--
                                              - Marcelo Henrique -
  "Se não puder se destacar pelo talento, vença pelo esforço." (Dave Weinbaum)




--
Paulo HP Santos


Tecnólogo em  Análise e
Desenvolvimento de Sistemas

--- "A vida derruba, mas você escolhe se quer levantar ou não." -----




  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário