GUJ
Notícias, artigos e o maior fórum brasileiro sobre Java
home
fórum
notícias
tópicos recentes
empregos
artigos
Bem-vindo ao GUJ.
Crie seu login
, ou digite-o para logar no site.
Usuário:
Senha:
Dúvida SQLiteOpenHelper
Índice dos Fóruns
»
Google Android e Java Micro Edition (ME)
Autor
Mensagem
26/01/2012 14:37:52
Assunto:
Dúvida SQLiteOpenHelper
Fabiano Almeida
JavaChild
Membro desde: 24/07/2008 13:06:34
Mensagens: 120
Offline
Pessoal,
Estou finalizando um sistema que foi arquitetado utilizando mvc.
Criei o meu banco fora da aplicação e estou tendo dificuldade em envia-lo para o celular.
Segundo conselhos, é melhor criar o banco na mão e carrega-lo na execução da aplicação.
As dúvidas são o seguinte.
Possuo N classes Dao, preciso de um SQLiteOpenHelper para cada classe Dao?
Como criar uma única classe que cria o banco e as tabelas assim que o sistema é acessado?
Exemplo.
A minha primeira tela é um login e senha.
Preciso que este banco seja criado antes que o usuário execute esta tela.
Exemplo de como estão as minhas classes Dao.
package br.com.mylims.model; import br.com.mylims.bean.Empresa; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class EmpresaDao extends SQLiteOpenHelper { private static final String CATEGORIA = "coleta"; private static final String NOME_BANCO = "mylimsColeta"; private static final int VERSAO = 1; public EmpresaDao(Context context) { super(context, NOME_BANCO, null, VERSAO); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } public boolean salvarDadosEmpresa(Empresa empresa){ try { ContentValues valores = new ContentValues(); valores.put("IDAUXEMPRESA", empresa.getIdAuxEmpresa()); valores.put("NMFANTASIA", empresa.getNomeFantasia()); valores.put("NMCONTATO", empresa.getNomeContato()); valores.put("SOBRENOME", empresa.getSobrenome()); valores.put("NMAREACONTATO", empresa.getNomeAreaContato()); valores.put("DDD", empresa.getDdd()); valores.put("FONE", empresa.getFone()); valores.put("RAMAL", empresa.getRamal()); valores.put("DDDCELULAR", empresa.getDddCelular()); valores.put("CELULAR", empresa.getCelular()); long sql = getWritableDatabase().insert("EMPRESA", null, valores); if (sql > 0) { Log.i(CATEGORIA, "LOG: Dados EMPRESA cadastrado com sucesso!"); return true; } else { Log.i(CATEGORIA, "LOG: Não foi possível cadastrar os dados EMPRESA!"); return false; } } catch (SQLException e) { // Log.i(CATEGORIA, "LOG: Erro dados EMPRESA!"); return false; } } public boolean altualizaDadosEmpresa(Empresa empresa, String idEmpresa){ try { String[] args = new String[]{idEmpresa}; ContentValues valores = new ContentValues(); valores.put("IDAUXEMPRESA", empresa.getIdAuxEmpresa()); valores.put("NMFANTASIA", empresa.getNomeFantasia()); valores.put("NMCONTATO", empresa.getNomeContato()); valores.put("SOBRENOME", empresa.getSobrenome()); valores.put("NMAREACONTATO", empresa.getNomeAreaContato()); valores.put("DDD", empresa.getDdd()); valores.put("FONE", empresa.getFone()); valores.put("RAMAL", empresa.getRamal()); valores.put("DDDCELULAR", empresa.getDddCelular()); valores.put("CELULAR", empresa.getCelular()); int sql = getWritableDatabase().update("EMPRESA", valores, "IDAUXEMPRESA = ?", args); if (sql > 0) { Log.i(CATEGORIA, "LOG: Dados EMPRESA cadastrado com sucesso!"); return true; } else { Log.i(CATEGORIA, "LOG: Não foi possível cadastrar os dados EMPRESA!"); return false; } } catch (SQLException e) { // Log.i(CATEGORIA, "LOG: Erro dados EMPRESA!"); return false; } } public boolean salvaOuAtualizaEmpresa(Empresa empresa, String idEmpresa){ try { String[] args = new String[]{idEmpresa}; Cursor c = getWritableDatabase().rawQuery("SELECT * FROM EMPRESA WHERE IDAUXEMPRESA = ?", args); if (c.getCount() == 0) { if (salvarDadosEmpresa(empresa)) { Log.i(CATEGORIA, "LOG: Dados EMPRESA cadastrado com sucesso!"); return true; } else { Log.i(CATEGORIA, "LOG: Dados EMPRESA não pôde ser cadastrado!"); return false; } } else { if (altualizaDadosEmpresa(empresa, idEmpresa)) { Log.i(CATEGORIA, "LOG: Dados EMPRESA atualizado com sucesso!"); return true; } else { Log.i(CATEGORIA, "LOG: Dados EMPRESA não pôde ser atulizado!"); return false; } } } catch (SQLException e) { Log.i(CATEGORIA, "LOG: erro SQLException." + e); return false; } } }
Fabiano Almeida
Analista de Sistemas
27/01/2012 07:31:21
Assunto:
Re:Dúvida SQLiteOpenHelper
Fabiano Almeida
JavaChild
Membro desde: 24/07/2008 13:06:34
Mensagens: 120
Offline
Pessoal,
Criei uma classe SQLiteOpenHelper e alterei um dos meus Daos para testar.
Alguém pode me ajudar e ver se estou no caminho certo, por favor?
Seguem as classes.
package br.com.mylims.auxiliares; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class GerenciaBanco extends SQLiteOpenHelper{ private static final int DATABASE_VERSION = 1; private static final String DATABASE_NAME = "mylimsColeta.db"; private static final String COLETA = "CREATE TABLE COLETA (" + "IDAUXCOLETA INTEGER NOT NULL, " + "IDAUXPROCESSO INTEGER," + "IDCOLETA VARCHAR(250)," + "DTPREVISTA DATETIME," + "DTAGENDA DATETIME, " + "OBSCOLETA TEXT," + "CONSTRAINT [PK_COLETA] PRIMARY KEY (IDAUXCOLETA);)"; private static final String EMPRESA = "CREATE TABLE EMPRESA (" + "IDAUXEMPRESA INTEGER NOT NULL," + "NMFANTASIA VARCHAR(250) NOT NULL," + "NMCONTATO VARCHAR(250) NOT NULL, " + "SOBRENOME VARCHAR(255), " + "NMAREACONTATO VARCHAR(255)," + "DDD VARCHAR(250), " + "FONE VARCHAR(250), " + "RAMAL VARCHAR(250), " + "DDDCELULAR VARCHAR(250)," + "CELULAR VARCHAR(250)," + "CONSTRAINT [PK_EMPRESA] PRIMARY KEY (IDAUXEMPRESA);)"; private static final String CFGFTP = "CREATE TABLE CFGFTP (" + "CDFTP INTEGER NOT NULL, " + "IPFTP VARCHAR(250) NOT NULL," + "LOGINFTP VARCHAR(250) NOT NULL," + "SENHAFTP VARCHAR(250) NOT NULL," + "CONSTRAINT [PK_CFGFTP] PRIMARY KEY (CDFTP);)"; private static final String USUARIO = "CREATE TABLE USUARIO (" + "CDUSUARIO INTEGER NOT NULL," + "NMUSUARIO VARCHAR(250) NOT NULL," + "LOGIN VARCHAR(250) NOT NULL, " + "SENHA VARCHAR(250) NOT NULL, " + "CDFTP INTEGER NOT NULL, " + "CONSTRAINT [PK_USUARIO] PRIMARY KEY (CDUSUARIO)," + "FOREIGN KEY (CDFTP) REFERENCES CFGFTP(CDFTP) ON UPDATE CASCADE ON DELETE CASCADE);)"; private static final String AMOSTRA ="CREATE TABLE AMOSTRA (" + "CDAMOSTRA INTEGER NOT NULL," + "IDAMOSTRA VARCHAR(250), " + "IDPROCESSO VARCHAR(250), " + "IDAUXPROCESSO INTEGER, " + "DTPREVISTA DATETIME, " + "DTCOLETA DATETIME, " + "FLCOLETADA CHAR(1) NOT NULL," + "DTDOWNLOAD DATETIME, " + "DTUPLOAD DATETIME, " + "ENDERECOCOLETA VARCHAR(250)," + "OBSERVACAO VARCHAR(250)," + "CDUSUARIO INTEGER NOT NULL," + "IDAUXCOLETA INTEGER NULL," + "IDAUXEMPRESA INTEGER NOT NULL," + "CONSTRAINT [PK_AMOSTRA] PRIMARY KEY (CDAMOSTRA)," + "FOREIGN KEY (CDUSUARIO) REFERENCES USUARIO(CDUSUARIO) ON UPDATE CASCADE ON DELETE CASCADE," + "FOREIGN KEY (IDAUXCOLETA) REFERENCES COLETA(IDAUXCOLETA) ON UPDATE CASCADE ON DELETE CASCADE," + "FOREIGN KEY (IDAUXEMPRESA) REFERENCES EMPRESA(IDAUXEMPRESA) ON UPDATE CASCADE ON DELETE CASCADE);)"; private static final String GRPINFO ="CREATE TABLE GRPINFO(" + "CDGRPINFO INTEGER NOT NULL," + "NMGRPINFO VARCHAR(250), " + "CONSTRAINT [PK_GRPINFO] PRIMARY KEY (CDGRPINFO);)"; private static final String INFO ="CREATE TABLE INFO(" + "CDINFO INTEGER NOT NULL," + "NMINFO VARCHAR(250) NOT NULL," + "CDTIPODADO INTTEGER NOT NULL, " + "CONSTRAINT [PK_INFO] PRIMARY KEY (CDINFO);)"; private static final String INFOSAMOSTRA = "CREATE TABLE INFOSAMOSTRA(" + "CDAMOSTRA INTEGER NOT NULL," + "CDINFO INTEGER NOT NULL, " + "CDGRPINFO INTEGER NOT NULL," + "VLINFO VARCHAR(250)," + "FLOBRIGATORIO CHAR(1) NOT NULL," + "FOREIGN KEY (CDINFO) REFERENCES INFO(CDINFO) ON DELETE CASCADE ON UPDATE CASCADE," + "FOREIGN KEY (CDGRPINFO) REFERENCES GRPINFO(CDGRPINFO) ON DELETE CASCADE ON UPDATE CASCADE," + "FOREIGN KEY (CDAMOSTRA) REFERENCES AMOSTRA(CDAMOSTRA) ON DELETE CASCADE ON UPDATE CASCADE);)"; private static final String OPCOESINFO = "CREATE TABLE OPCOESINFO (" + "CDINFO INTEGER NOT NULL, " + "CDOPCAO INTEGER NOT NULL, " + "NMOPCAO VARCHAR(250), " + "DESCOPCAO VARCHAR(250), " + "CONSTRAINT [PK_OPCOESINFO] PRIMARY KEY (CDOPCAO);)"; public GerenciaBanco(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CFGFTP); db.execSQL(USUARIO); db.execSQL(EMPRESA); db.execSQL(GRPINFO); db.execSQL(INFO); db.execSQL(OPCOESINFO); db.execSQL(COLETA); db.execSQL(AMOSTRA); db.execSQL(INFOSAMOSTRA); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } }
Minha classe com os Dao's
package br.com.mylims.model; import java.util.ArrayList; import java.util.List; import br.com.mylims.auxiliares.GerenciaBanco; import br.com.mylims.bean.ConfigFTP; import br.com.mylims.bean.Usuario; import android.app.Activity; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class ConfigFTPDao extends Activity{ private static final String CATEGORIA = "coleta"; private GerenciaBanco gerenciaDataBase; public boolean salvaFTP(ConfigFTP ftpBean){ try { ContentValues valores = new ContentValues(); valores.put("IPFTP", ftpBean.getIpFtp()); valores.put("LOGINFTP", ftpBean.getLoginFtp()); valores.put("SENHAFTP", ftpBean.getSenhaFtp()); SQLiteDatabase db = gerenciaDataBase.getWritableDatabase(); long sql = db.insert("CFGFTP", null, valores); if (sql > 0) { Log.i(CATEGORIA, "Dados FTP salvos com sucesso!"); return true; } else { Log.i(CATEGORIA, "ERRO: Dados FTP não foram salvos!"); return false; } } catch (SQLException e) { Log.i(CATEGORIA, "ERRO: SQLException salvaFTP: " + e); return false; } } public List<ConfigFTP> pegaIdFtp(String ipFTP){ String[] args = new String[]{ipFTP}; Cursor c = gerenciaDataBase.getWritableDatabase().rawQuery("SELECT CDFTP FROM CFGFTP WHERE IPFTP = ?", args); try { List<ConfigFTP> lista = new ArrayList<ConfigFTP>(); while (c.moveToNext()) { ConfigFTP ftp = new ConfigFTP(); ftp.setIdFtp(c.getInt(0)); // CDFTP lista.add(ftp); } return lista; } catch (SQLException e) { Log.i(CATEGORIA, "MENSAGEM DE ERRO NO SQL: " + e); return null; } finally{ c.close(); } } }
Fabiano Almeida
Analista de Sistemas
Índice dos Fóruns
»
Google Android e Java Micro Edition (ME)
Ir para:
Selecione um Fórum
Notícias
Assuntos gerais (Off-topic)
MundoJ - Artigos, Notícias e Debates
Artigos e Tutoriais
Java Básico
Java Avançado
Ferramentas, Frameworks e Utilitários
Desenvolvimento Web
Interface Gráfica
Google Android e Java Micro Edition (ME)
Certificação Java
Persistência: Hibernate, JPA, JDBC e outros
Java Enterprise Edition (Java EE)
Frameworks e Bibliotecas brasileiros
RIA - Flex, JavaFX e outros
Arquitetura de Sistemas
Metodologias de Desenvolvimento e Testes de Software
JavaScript
Ruby & Ruby on Rails
Outras Linguagens
Powered by
JForum 2.1.8
©
JForum Team