Escolar Documentos
Profissional Documentos
Cultura Documentos
A classe Activity contm mtodos para manipular o banco SQLite, o mtodo createDatabase um que permite criar um banco de dados em android.
Outro mtodo importante, quando est se manuseando dados o mtodo openDatabase, este mtodo permite abrir um banco de dados para que possa trabalha-lo com ele.
A classe SQLiteDatabase, contm mtodos que permitem manusear instrues de banco de dados. O mtodo execSQL permite passar como parmetro uma string SQL, pode inserir dados, criar tabela, alterar dados, e deletar dados.
O mtodo query da Classe SQLiteDatabase, possibilita realizar uma consulta no banco de dados, retornando os registros contidos no banco de dados, a filtragem determinada nos parmetro que so passados.
A classe Cursor contm vrios mtodos que possibilita a manipulao dos dados retornados pelo mtodo query da classe SQLiteDatabase.
next um boolean, retorna true se existir um novo registro. getColumnIndex mtodo retorna um inteiro que indica qual o index da coluna passada como parmetro.
getString retorna uma o campo pesquisado em formato de String, pede como parmetro o index da coluna. getInt retorna como Inteiro, o campo pesquisado, solicita como parmetro o index da coluna. getDouble retorna um valor double, que tenha sido retornado na consulta, solicita como parmetro o index da coluna. getFloat retorna um valor float, que tenha sido retornado na consulta, solicita como parmetro o index da coluna. getLong retorna um valor long, que tenha sido retornado na consulta, solicita como parmetro o index da coluna.
Logo abaixo vou adicionar um cdigo onde possvel manipular dados em SQLite utilizando android. A Classe Trabalho permite Criar o banco de dados, Salvar,Alterar,Excluir registros no banco de dados.
Trabalho.java
package com.Trabalho;
import com.banco.Pessoa;
import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLite Database; import java.io.FileNotFoundException; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListe
public class Trabalho extends Activit y { /** Called when the activity is first created. */
public EditText telefone; public EditText data; public EditText nome; public Button button; public Intent intentPesquisar; public Intent telaPricipal; public Button butDeletar; public Button butAlterar; public Button butNovo; private Pessoa pessoa; private SQLiteDatabase banco = null;
@Override public void onCreate(Bundle icicle) { super.onCreate(icicle); intentPesquisar = new Intent(this, Pesquisas.class); telaPricipal = new Intent(this,trabalho.class);
textData);
textNome); button = on); butDeletar = (Button) findViewById(R.id.buttonDe letar); butAlterar = (Button) findViewById(R.id.buttonAl terar); butNovo = (Button) findViewById(R.id.butNovo) ; (Button) findViewById(R.id.butt
button.setOnClickListener(new Button.OnClickListener() {
@Override public void onClick(View arg0) { // TODO Autogenerated method stub salvarCadastro(nome.g etText().toString(), telefone.getText() .toString(), data.getText().toString()); } });
// TODO Autogenerated method stub if (criarBanco()) { showAlert("Parabe ns", 1, "banco de dados criado com sucesso", "ok", true); } else { showAlert("ERRO", 1, "No foi possivel criar o banco de dados ", "ok", true); } } });
@Override public void onClick(View v) { // TODO Autogenerated method stub startSubActivity(inte ntPesquisar, 0); } });
@Override public void onClick(View v) { // TODO Autogenerated method stub if(pessoa != null){ if(deletar(pessoa .getId())){
showAlert("Re gistro", 1, "Excludo com sucesso", "ok", true); limparTela(); }else{ showAlert("ER RO", 1, "Problema ao excluir registro", "OK", true); } } }});
@Override public void onClick(View v) { // TODO Autogenerated method stub if(pessoa != null) if(alterar(pessoa.get Id())){ showAlert("Altera do", 1, "Alterado com sucesso", "ok", true); }else{ showAlert("ERRO", 1, "ERRO", "ok", true); } } });
butNovo.setOnClickListener(ne w OnClickListener(){
limparTela(); }}); }
public boolean criarBanco() { boolean aux = true; try { String nomeBanco = nomeBancoDeDados; createDatabase(nomeBanco, 1, MODE_WORLD_READABLE, null); // cria o banco de dados caso ele no exista banco = openDatabase(nomeBanco, null); // abrir a conexo com o banco de dados banco.execSQL("CREATE TABLE IF NOT EXISTS lista (id INTEGER PRIMARY KEY, nome TEXT,telefone TEXT,data TEXT);"); //SQL que cria o banco de dados Log.d("Sucesso", "banco de dados crado na moral"); } catch (FileNotFoundExceptio n e) { // TODO Auto-generated catch block aux = false; Log.d("Exception banco de dados", e.getMessage()); } return aux; }
/**
* Mtodo que salva os campos no banco de dados * @param nome * @param telefone * @param data */
public void salvarCadastro(String nome, String telefone, String data) { try { banco = openDatabase(nomeBancoDeDados, null); //Abrir conexo com o banco de dados banco.execSQL("INSERT INTO lista(nome,telefone,data) VALUES ('"+ nome + "','" + telefone + "','" + data + "')");//Execulta o insert no banco de dados String[] colunas = { "nome", "telefone", "data" }; Cursor c = banco.query(true, "lista", colunas, null, null, null,null, null) ; while (c.next()) { Log.i(String.valueOf( c.getColumnIndex("nome")), c.getString(c.getColumnIndex("nome")) ); } } catch (FileNotFoundExceptio n e) { // TODO Auto-generated catch block Log.d("Exception ", e.getMessage()); } }
pessoa){ getInstance().limparTela(); getInstance().nome.setText(pe ssoa.getNome()); getInstance().telefone.setTex t(pessoa.getTelefone()); getInstance().data.setText(pe ssoa.getData()); this.pessoa = pessoa; }
private boolean deletar(int cod){ boolean aux = true; try { banco = openDatabase(nomeBancoDeDados, null); String sql = "DELETE FROM lista WHERE id = '"+cod+"'"; banco.execSQL(sql); } catch (FileNotFoundExceptio n e) { // TODO Auto-generated catch block aux=false; Log.d("Exception excluir",e.getMessage().toString()); } return aux; }
try{ banco = openDatabase(nomeBancoDeDados, null); String sql = "UPDATE lista SET nome = '"+nome.getText().toString()+"', telefone = '"+telefone.getText().toString()+"', data = '"+data.getText().toString()+"' WHERE id = '"+cod+"'"; banco.execSQL(sql); }catch(Exception e){ aux=false; Log.d("Excecao ",e.getMessage().toString()); } return aux; }
instance
Pessoa.java
package com.banco;
public class Pessoa { private String nome; private String telefone; private String data;
public int getId() { return id; } public void setId(int id) { this.id = id; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getTelefone() { return telefone; } public void setTelefone(String te lefone) { this.telefone = telefone; } public String getData() { return data; } public void setData(String data) { this.data = data; } private static Pessoa instance = null; public static Pessoa getInstance(){ if(instance == null){ instance = new Pessoa(); } return instance; } }
tela.xml
<?xml version="1.0" encoding="utf8"?> <AbsoluteLayout android:id="@+id/widget0" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android .com/apk/res/android" > <TextView android:id="@+id/widget27" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Nome" android:layout_x="20px" android:layout_y="22px" > </TextView> <EditText android:id="@+id/textNome" android:layout_width="198px" android:layout_height="wrap_content"
android:textSize="18sp" android:layout_x="90px" android:layout_y="12px" > </EditText> <TextView android:id="@+id/widget29" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Telefone"
android:layout_x="20px" android:layout_y="82px" > </TextView> <EditText android:id="@+id/textTelefone" android:layout_width="197px" android:layout_height="wrap_content" android:phoneNumber="true" android:textSize="18sp" android:layout_x="90px" android:layout_y="72px" > </EditText> <TextView android:id="@+id/widget31" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Data" android:layout_x="20px" android:layout_y="142px" > </TextView> <EditText android:id="@+id/textData" android:layout_width="197px" android:layout_height="wrap_content"
android:textSize="18sp" android:layout_x="90px" android:layout_y="132px" > </EditText> <Button android:id="@+id/button" android:layout_width="82px" android:layout_height="wrap_content" android:text="Salvar" android:layout_x="25px" android:layout_y="202px" >
</Button> <Button android:id="@+id/buttonCriarBd" android:layout_width="78px" android:layout_height="wrap_content" android:text="CriarBD" android:layout_x="113px" android:layout_y="202px" > </Button> <Button android:id="@+id/buttonPesquisar" android:layout_width="90px" android:layout_height="wrap_content" android:text="pesquisar" android:layout_x="195px" android:layout_y="202px" > </Button> <Button android:id="@+id/buttonDeletar" android:layout_width="90px" android:layout_height="wrap_content" android:text="deletar" android:layout_x="195px" android:layout_y="260px" > </Button> <Button android:id="@+id/butNovo" android:layout_width="82px" android:layout_height="wrap_content" android:text="Novo" android:layout_x="25px" android:layout_y="260px" > </Button> <Button android:id="@+id/buttonAlterar" android:layout_width="78px" android:layout_height="wrap_content"
A classe Pesquisas a classe responsavel pela consulta no banco de dados. Segue logo abaixo o cdigo que demostra com trabalhar com consulta no SQLite.
Pesquisas.java
package com.trabalho;
import com.banco.Pessoa;
import android.app.Activity; import android.app.ListActivity; import android.app.TabActivity; import android.database.Cursor; import android.database.sqlite.SQLite Database;
import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.Window; import android.view.View.OnClickListe ner;
import android.view.View.OnKeyListene r; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.AdapterView.OnI temSelectedListener;
@Override public boolean onKey(View v, int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(!texto.getText().toStr ing().equals("")){//varifica se o campo digitado diferente de vazio
pesquisar(texto.getTe xt().toString());//chama o mtodo pesquisar passando como parmetro o campo texto }else{ limparLista();//limpa a lista se o campo text for igual a vazio. } return false; }});
@Override public void onItemSelected(Ad apterView parent, View v, int position, long id) { // TODO Auto-generated method stub trabalho.getInstance().se tCampos(vector.get(Integer.parseInt(S tring.valueOf(id)))); //mtodo que vai preencher os campos na tela de trabalho }
@Override public void onNothingSelected (AdapterView parent) { // TODO Auto-generated method stub }}); }
private void limparLista(){ vector.clear(); lista.setAdapter( new ArrayAdapt er<String>(this, android.R.layout.simple_list_item_1, new ArrayList())); }
/** * mtodo que vai fazer a pesquisa no banco de dados SQLite * e retornar o resulado e adicionlo na lista * @param t */
private void
pesquisar(String t){
ArrayAdapter<String> fileList = null; SQLiteDatabase bd = null; vector.clear(); Pessoa pessoa = null; try { bd = openDatabase(trabalho.nomeBancoDeDado s,null); //abre a conexo com o banco de dados Cursor c = bd.query(true,"lista",new String[]{"i d","nome","telefone","data"},null, nu ll, null, null,null); // pesquisa o campos passandos no vetor de string no banco de dados e adiciona a o resultado da consulta no objeto Cursor ArrayList<String> result = new ArrayList<String>(); while(c.next()){ //Prenchendo um objeto do tipo pessoa com os dados recuperados do banco de dados
pessoa = new Pessoa(); pessoa.setNome(c.getStrin g(c.getColumnIndex("nome"))); pessoa.setTelefone(c.getS tring(c.getColumnIndex("telefone"))); pessoa.setData(c.getStrin g(c.getColumnIndex("data"))); pessoa.setId(c.getInt(c.g etColumnIndex("id"))); vector.add(pessoa); // adiciona o objeto pessoa no vetor pessoa = null;
//adiciona a viso da lista result.add(c.getString(c.get ColumnIndex("nome")) + " "+c.getString(c.getColumnIndex("telef one"))+" - "+ c.getString(c.getCol umnIndex("data"))); } fileList = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, result); //cria o modelo lista.setAdapter(fileList); / /intala a lista } catch (FileNotFoundException e) { Log.d("SQL ERRO ",e.getMessage().toString()); }finally{ bd.close(); //fecha a conexo com o banco de dados } } private Vector<Pessoa> vector = new Vector<Pessoa>(); //vetor utilizado para armazenar objetos do tipo Pessoa
pesquisar.xml
<?xml version="1.0" encoding="utf8"?> <LinearLayout android:id="@+id/widget27" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android .com/apk/res/android" android:orientation="vertical" > <TextView android:id="@+id/widget29" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Pesquisar" > </TextView> <EditText android:id="@+id/pesquisar" android:layout_width="317px" android:layout_height="wrap_content" android:textSize="18sp" > </EditText> <ListView android:id="@+id/list" android:layout_width="317px" android:layout_height="290px" > </ListView> </LinearLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf8"?> <manifest xmlns:android="http://schem as.android.com/apk/res/android" package="com.trabalho"> <application android:icon="@drawa ble/icon"> <activity android:name=".trab alho" android:label="@string/app_name "> <intent-filter> <action android:name= "android.intent.action.MAIN" /> <category android:nam e="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Pesq uisas" android:label="@string/app_nam e"> <intent-filter> <action android:name= "android.intent.action.MAIN" /> <category android:nam e="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Voc no tem permisses suficientes para ver os arquivos anexados nesta mensagem. Editado pela ltima vez por Marlus Dias Silva em 14 Jul 2008, 18:21, no total de 3 vez
regeriob2br
What is DDMS?
Re: Trabalhando com o Banco de Dados SQLite no Android. belo tutorial em, vai me ajudar a ver o que eu tava errando, com o outro....
Editado pela ltima vez por regeriob2br em 15 Jul 2008, 19:08, num total de 1 vezes
belo totorial em, vai me ajudar a ver o que eu tava errando, com o outro....
t+ abraos
jijo
Android application
Muito bom Marlus, ainda no botei pra rodar (falta de tempo pra mexer no android), mas olhando por cima, acho que voc se esqueceu de postar a classe pessoa no?!
abrao
Data de registro: 01 Fev 2008, 11:28 Mensagens: 87 14 Jul 2008, 13:39
Muito bom Marlus, ainda no botei pra rodar (falta de tempo pra mexer no android), mas olhando por cima, acho que voc se esqueceu de postar a classe pessoa no?!
abrao
daki a pouco vou upar ela negocio que no to com o pc que desenvolvi a aplicao at as 3 da tarde j vai estar a classe pessoa e o projeto zipado s para baixar e executar
fmakula
What is DDMS?
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Android timo tutorial Marlus!!!!
valeu!
alex
Android application
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Android bacana o tuto!
valeu!
samuel.cavanieri
Android application
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Android valeu, legal o Tutorial, vai ajudar bastante nos
Fui colocar pra rodar o "tuto" e apresentou erros nos mtodos.... removi os @Override que ficam em cima de cada mtodo e funcionou. Poderia me dizer pra que serve esses @Override?
obrigado desde j
Samuel
valeu, legal o Tutorial, vai ajudar bastante nos estudos. S me tire uma dvida:
Fui colocar pra rodar o "tuto" e apresentou erros nos mtodos.... removi os @Override que ficam em cima de cada mtodo e funcionou. Poderia me dizer pra que serve esses @Override?
obrigado desde j
Samuel
o @Override
o proprio eclipse coloca, mais quer dizer que eu estou sobreescrevendo um mtodo de
se quiser entrar mais no assunto deste @..... pesquise sobre Anotation no sei muito sobre eles .
t++
abraos
julianafsa
What is Android?
Estou precisando criar um banco de dados no Android, via SQLiteDatabase, mas eu no estou conseguindo. No tenho nenhuma activity. Na verdade, o componente que eu estou criando vai ser usado por outros componentes (esses sim possuem activities), mas meu componente deve ser totalmente independente dos outros.
private static final String DATABASE_NAME = "sdm"; private SQLiteDatabase mDB = null; mDB = SQLiteDatabase.open(DATABASE_NAME, null); if (mDB == null) { Log.e("[DATABASE]", "Nao conseguiu abrir o banco.. tentando criar novo banco"); mDB = SQLiteDatabase.create(DATABASE_NAME, DATABASE_VERSION, null); if (mDB == null) { Log.e("[DATABASE]","Nao foi possivel criar o banco");
Mas sempre d o seguinte erro: Failed to open database file "sdm" - unable to open database file
Obrigada,
Ol pessoal,
Estou precisando criar um banco de dados no Android, via SQLiteDatabase, mas eu no estou conseguindo. No tenho nenhuma activity. Na verdade, o componente que eu estou criando vai ser usado por outros componentes (esses sim possuem activities), mas meu componente deve ser totalmente independente dos outros.
private static final String DATABASE_NAME = "sdm"; private SQLiteDatabase mDB = null; mDB = SQLiteDatabase.open(DATABASE_NAME, null); if (mDB == null) { Log.e("[DATABASE]", "Nao conseguiu abrir
o banco.. tentando criar novo banco"); mDB = SQLiteDatabase.create(DATABASE_NAME, DATABASE_VERSION, null); if (mDB == null) { Log.e("[DATABASE]","Nao foi possivel criar o banco"); } else { Log.e("[DATABASE]", "Banco criado"); } } else { Log.i("[DATABASE]","Abriu o banco"); }
Mas sempre d o seguinte erro: Failed to open database file "sdm" - unable to open database file
Obrigada,
oie juliana, olha eu nunca trabalhei com o SQLite em uma classe fora de uma Activity,
quando comecei a trabalhar tb tentei fazer da maneira com que vc est fazendo e no tive sucesso, se vc conseguir post para podermos compartilhar mais conhecimentos
t++
guitarro17
What is Android?
Eu criei o projeto com este cdigo, mas me retornou um monte de erros, esses que j haviam acontecido. Parece que ele no aceita os comandos de criar, abrir banco, etc...
Description Resource Path Location Type The method createDatabase(String, int, int, null) is undefined for the type Trabalho Trabalho.java Trabalho/src/com/Trabalho line 130 Java Problem The method next() is undefined for the type Cursor Pesquisas.java Trabalho/src/com/Trabalho line 95 Java Problem The method next() is undefined for the type Cursor Trabalho.java Trabalho/src/com/Trabalho line 155 Java Problem The method openDatabase(String, null) is undefined for the type Pesquisas Pesquisas.java Trabalho/src/com/Trabalho line 92 Java Problem The method openDatabase(String, null) is undefined for the type Trabalho Trabalho.java Trabalho/src/com/Trabalho line 131 Java Problem The method openDatabase(String, null) is undefined for the type Trabalho Trabalho.java Trabalho/src/com/Trabalho line 151 Java Problem The method openDatabase(String, null) is undefined for the type Trabalho Trabalho.java Trabalho/src/com/Trabalho line 183 Java Problem The method openDatabase(String, null) is undefined for the type Trabalho Trabalho.java Trabalho/src/com/Trabalho line 197 Java Problem The method query(boolean, String, String[], String, String[], String, String, String, String) in the type SQLiteDatabase is not applicable for the arguments (boolean, String, String[], null, null, null, null, null) Pesquisas.java
Trabalho/src/com/Trabalho line 93 Java Problem The method query(boolean, String, String[], String, String[], String, String, String, String) in the type SQLiteDatabase is not applicable for the arguments (boolean, String, String[], null, null, null, null, null) Trabalho.java Trabalho/src/com/Trabalho line 154 Java Problem The method showAlert(String, int, String, String, boolean) is undefined for the type new View.OnClickListener(){} Trabalho.java Trabalho/src/com/Trabalho line 66 Java Problem The method showAlert(String, int, String, String, boolean) is undefined for the type new View.OnClickListener(){} Trabalho.java Trabalho/src/com/Trabalho line 68 Java Problem The method showAlert(String, int, String, String, boolean) is undefined for the type new View.OnClickListener(){} Trabalho.java Trabalho/src/com/Trabalho line 90 Java Problem The method showAlert(String, int, String, String, boolean) is undefined for the type new View.OnClickListener(){} Trabalho.java Trabalho/src/com/Trabalho line 93 Java Problem The method showAlert(String, int, String, String, boolean) is undefined for the type new View.OnClickListener(){} Trabalho.java Trabalho/src/com/Trabalho line 105 Java Problem The method showAlert(String, int, String, String, boolean) is undefined for the type new View.OnClickListener(){} Trabalho.java Trabalho/src/com/Trabalho line 107 Java Problem The method startSubActivity(Intent, int) is undefined for the type new View.OnClickListener(){} Trabalho.java Trabalho/src/com/Trabalho line 79 Java Problem
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Android No amigo, voc deve estar utilizando um
SDK maior que o 0.8 beta essa aplicao foi desenvolvida com o SDK 0.8, tanto o 0.9 e o 1.0 ouve modificaes nas API's alguns mtodos deixaro de existir por isso essa aplicao no executa em SDK mais novos
guitarro17
What is Android?
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Android Realmente, tem uns quantos metodos que eu
jijo
Android application
Realmente, tem uns quantos metodos que eu tive que trocar hehe mas consegui consertar
abrao
guitarro17
What is Android?
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Android Tipo, acho que tem q fazer tipo o que utilizaram
nessa agenda:
viewtopic.php?f=7&p=711
robsonoracle
What is AVD?
Excelente tutorial, e eu passei ele para a verso 1.0 do compilador, onde substitui principalmente os seguintes pontos:
1)
//startSubActivity(intentPesquisar, 0);
Eu substitui por:
startActivityForResult(intentPesquisar, 0);
2)
//showAlert("ERRO", 1, "No foi possivel criar" // "ok", true); + " o banco de dados ",
Eu substitui por:
showDialong("Erro. No foi possvel criar o banco de dados.");
Onde:
/** * metodo que vai criar um AlertDialog e vai exibilo na tela com para * confirmar que o objeto foi adicionado na lista. */ private void showDialong(CharSequence s) { Builder builder = new AlertDialog.Builder(Trabalho.this); // cria um objeto do tipo builder builder.setTitle("Informao."); //seta o titulo coma frase informao builder.setMessage(s); //seta a mensagem passada como parmetro AlertDialog alert = builder.create(); AlertDialong DialogInterface.OnClickListener list ener = new ConfirmarCadastro(); // instancia uma classe que dispara o evento se o button do Dialong for acionado alert.setButton("ok", listener); //Adiciona o texto confirmar no button alert.show(); // Exibe na tela o Objeto AlertDialog } //Cria um objeto do tipo
@Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub //AppCadastro.getInstance().limpar() ; Log.i("Dialong ", clique"); } "evento de
3)
// createDatabase(nomeBanco, 1, MODE_WORLD_READABLE, null); // cria o banco de dados caso ele no exista // banco = openDatabase(nomeBanco, null); // abrir a conexo com o banco de dados
Eu substitui por:
banco = openOrCreateDatabase(nomeBanco, 0, null);
Agora est sem erro de compilao, porm quando eu executo ele carega a janela certo, mas quando clico no boto Pesquisar ele mostra uma mensagem de exceo e no carrega a janela e fecha a aplicao. O mtodo que faz esta chamada eu tive que substituir conforme havia descrito anteriormente:
Eu substitui por:
startActivityForResult(intentPesquisar, 0);
Peo ao guitarro17 que disse que conseguiu consertar para ver se passou por esta situao e como a resolveu ou ento a vc Marlus caso tenha idia.
Robson
robsonoracle
What is AVD?
Resolvi o problema de chamar a janela pesquisar, onde faltava apenas acrescentar no arquivo AndroidManifest.xml a classe Pesquisas.
S que na execuo da classe Pesquisas, quando eu comeo a digitar aparece a lista de todas as pessoas cadastradas, porm ele no filtra, algum fez o filtro funcionar. Por exemplo, eu digito Ana, mas ele continua listando tudo, e no lista apenas as pessoas que comeam com o nome Ana.
O mtodo pesquisar alterado para a verso 1.0 o mostrado abaixo, eu deixei as partes em comentrio para vocs terem idia das substituies que tive que fazer:
private void pesquisar(String t){
Pessoa pessoa = null; try { //bd = openDatabase(Trabalho.nomeBancoDeDados,null) ; //abre a conexo com o banco de dados //Cursor c = bd.query(true,"lista",new String[]{"id","nome","telefone","data"},null , null, null, null,null); // pesquisa o campos passandos no vetor de string no banco de dados e adiciona a o resultado da consulta no objeto Cursor bd = openOrCreateDatabase(Trabalho.nomeBancoDeDad os, 0, null); Cursor c = bd.query("lista",new String[]{"id","nome","t elefone","data"},null, null, null, null,null ); // pesquisa o campos passandos no vetor de string no banco de dados e adiciona a o resultado da consulta no objeto Cursor
//while(c.next()){ while(c.moveToNext()){ //Prenchendo um objeto do tipo pessoa com os dados recuperados do banco de dados pessoa = new Pessoa(); pessoa.setNome(c.getString(c.get ColumnIndex("nome"))); pessoa.setTelefone(c.getString(c .getColumnIndex("telefone"))); pessoa.setData(c.getString(c.get ColumnIndex("data"))); pessoa.setId(c.getInt(c.getColum nIndex("id"))); //if (pessoa.getNome().equalsIgnoreCase(t)){
//adiciona a viso da lista result.add(c.getString(c.getColumnI ndex("nome")) + " "+c.getString(c.getColumnIndex("telefone"))+ " - "+ c.getString(c.getColumnInde x("data")));
fileList = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, result); //cria o modelo lista.setAdapter(fileList); //intala a lista //} catch (FileNotFoundException e) { } catch (Exception e) { // TODO Auto-generated catch block Log.d("SQL ERRO ",e.getMessage().toString()); }finally{ bd.close(); //fecha a conexo com o banco de dados }
Robson
Spessotto
What is DDMS?
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Android Ola pessoal..sou novo no android, no java e
afins... Li esse tutorial, e fui fazer de acordo com o que eu queria... fiz desse jeito, mas da erro na hora da aplicao rodar no emulador..alguem pode me ajudar?
import android.app.Activity; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabas e; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText;
public class HelloAndroid extends Activity i mplements OnClickListener { private Button buts,butn; private EditText txtPrinc;
//Define para o boto o evento OnClickListener . buts.setOnClickListener(this); butn.setOnClickListener(this); txtPrinc = (EditText)findViewById(com.example.helloan droid.R.id.txtPrinc);
//#####ESSA PARTE QUE GERA O ERRO####################### SQLiteDatabase db = openOrCreateDatabase("android",Context.MODE_ PRIVATE,null); Cursor c = db.query("TB_USUARIOS", new String[]{"id,nom e"} , null, null, "nome", null, null,null); txtPrinc.setText(c.getString(1)); // ####################### }
valews!
Rafael Spessotto
Scariot
What is Android?
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Android Esse tutorial funciona direito nas versoes
especificadas, porem alguem poderia reescrevelo para a versao 1.6? Se possivel serei grato!
Luis
What is Android?
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Android o que esta causando erro a tabela criada com
VARCHAR2
jackson.alfonso
What is Android?
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Android Puder todos compartilhassem seu
conhecimento assim, ainda mas para pessoas que buscam informaes para iniciar, valeu muito obrigado, excelente material !!!!
juniorsatanasX
What is AVD?
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Android Algum tem os fontes postado ?
Obrigado !
asmag
What is AVD?
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Android Bom dia!
Fiz todo o procedimento e estou rodando no SDK 2.1 API verso 7 porm d a seguinte mensagem de erro:The application com.Trabalho has stopped an unexpectedly. Algum teria alguma idia de como eu fao para debugar minha aplicao Android?
ribeirot
What is AVD?
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Andr Meu amigo eu fiz o download dessa versao corrigida por vc mas com erro no botao pesquisa eu tentei rodar aqui nomeu eclipse e deu vario erros eu nem conseguir compilar o projeto. Na
versao anterior eu conseguir acertar algumas coisas com seu tutorial mas ainda existia problemas. Vc tem a versao final desse projeto?
robsonoracle escreveu:
Oi Marlus,
Excelente tutorial, e eu passei ele para a verso 1.0 do compilador, onde substitui principalmente os seguintes pontos:
1)
//startSubActivity(intentPesquisar, 0);
Eu substitui por:
startActivityForResult(intentPesquisar, 0);
2)
//showAlert("ERRO", 1, "No foi possivel criar"
// "ok", true);
Eu substitui por:
showDialong("Erro. No foi possvel criar o banco de dados.");
Onde:
/** * metodo que vai criar um AlertDialog e vai exibilo na tela com para * confirmar que o objeto foi adicionado na lista. */ private void showDialong(CharSequence s) { Builder builder = new AlertDialog.Builder(Trabalho.this); // cria um objeto do tipo builder builder.setTitle("Informao."); //seta o titulo coma frase informao builder.setMessage(s); //seta a mensagem passada como parmetro AlertDialog alert = builder.create(); AlertDialong DialogInterface.OnClickListener list ener = new ConfirmarCadastro(); // instancia uma classe que dispara o evento se o button do Dialong for acionado alert.setButton("ok", listener); //Adiciona o texto confirmar no button alert.show(); // Exibe na tela o Objeto AlertDialog } //Cria um objeto do tipo
@Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub //AppCadastro.getInstance().limpar() ; Log.i("Dialong ", clique"); } "evento de
3)
// createDatabase(nomeBanco, 1, MODE_WORLD_READABLE, null); // cria o banco de dados caso ele no exista // banco = openDatabase(nomeBanco, null); // abrir a conexo com o banco de dados
Eu substitui por:
banco = openOrCreateDatabase(nomeBanco, 0, null);
Agora est sem erro de compilao, porm quando eu executo ele carega a janela certo, mas quando clico no boto Pesquisar ele mostra uma mensagem de exceo e no carrega a janela e fecha a aplicao. O mtodo que faz esta chamada eu tive que substituir conforme havia descrito anteriormente:
Peo ao guitarro17 que disse que conseguiu consertar para ver se passou por esta situao e como a resolveu ou ento a vc Marlus caso tenha idia.
Robson
thiprogramador
Android application
julianafsa escreveu:
Ol pessoal,
Estou precisando criar um banco de dados no Android, via SQLiteDatabase, mas eu no estou conseguindo. No tenho nenhuma activity. Na
verdade, o componente que eu estou criando vai ser usado por outros componentes (esses sim possuem activities), mas meu componente deve ser totalmente independente dos outros.
private static final String DATABASE_NAME = "sdm"; private SQLiteDatabase mDB = null; mDB = SQLiteDatabase.open(DATABASE_NAME, null); if (mDB == null) { Log.e("[DATABASE]", "Nao conseguiu abrir o banco.. tentando criar novo banco"); mDB = SQLiteDatabase.create(DATABASE_NAME, DATABASE_VERSION, null); if (mDB == null) { Log.e("[DATABASE]","Nao foi possivel criar o banco"); } else { Log.e("[DATABASE]", "Banco criado"); } } else { Log.i("[DATABASE]","Abriu o banco"); }
Mas sempre d o seguinte erro: Failed to open database file "sdm" - unable to open database file
Obrigada,
oie juliana, olha eu nunca trabalhei com o SQLite em uma classe fora de uma Activity,
quando comecei a trabalhar tb tentei fazer da maneira com que vc est fazendo e no tive sucesso, se vc conseguir post para podermos compartilhar mais conhecimentos
t++
porque o SqliDatabase precisa de um contexto que na verdade um item que precisa ser filho da classe Context. Para isso voc tem que utilizar a classe Context e passar um Context para a sua classe que controla a criao do banco de dados.
por isso que muita gente cria banco utilizando os mtodos dentro de uma Activity, pois uma Activity um Context.
No est muito bem explicado, pois isso eu aprendi sozinho e no sei passar para outras pessoas, mas informaes acesse: http://developer.android.com/reference/ ... ntext.html
antunes
Dalvik Virtual Machine
Se o problema o Context, basta vc pass-lo para a classe que est "cuidando" do banco (que
Data de registro: 05 Abr 2011, 03:47
Abraos!
App: IpCalc : Source - Calculadora IP (Mscara, Gateway, Broadcast e Rede). APP: Guia Carioca - Guia para o turista que visita o Rio de Janeiro e para o carioca que quer conhecer mais sua cidade. App: MyPonto - Controle de frequncia (ponto) pessoal.
Campanha: Facilite sua vida e a dos outros usurios. Objetivo: Vamos colocar a tag [RESOLVIDO] no ttulo do tpico quando o problema for resolvido.
Use a ferramenta de busca do frum e no espere tanto para que a sua dvida seja respondida!
thiprogramador
Android application
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Andr isso ae antunes, s lembrando que pode ser
chamado dentro de qualquer classe que seja uma Activity, pois uma Activity um Context e no necessriamente na primeira tela.
Mas, se voc quer criar o banco antes de rodar sua aplicao, tem que fazer o que o antunes disse, s chamar o construtor a Activity principal da sua aplicao.
Felipe No0b
Android application
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Andr Oi gente eu estou com mais uma dvida com
relaao ao cursor e consulta de dados.Analisando esse exemplo, eu entendi que nestes campos:
pessoa.setNome(c.getString(c.getColumnIndex( "nome")));
pessoa.setTelefone(c.getString(c.getColumnIn dex("telefone")));
pessoa.setData(c.getString(c.getColumnIndex( "data")));
pessoa.setId(c.getInt(c.getColumnIndex("id") ));
o objeto cursor ter apenas 1 registro para cada campo.Mas quando tiver mais de um registro, por exemplo, um "id" estiver relacionado com "n" registros de "telefone", como seria a sintaxe para resgatar estes registros?
[]'s
luiswagner
What is ADT?
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Andr Boa tarde.
Ser que algum poderia fazer a gentileza de colocar o cdigo fonte deste exemplo acima atualizado e corrigido. Ser de grande importncia para quem esta comeando e estudando java assim como eu.. Abraos a todos.
Grato Wagner
_________________ Luis Wagner dos Santos luis.wagner@gmail.com Campanha: Facilite sua vida e a dos outros usurios Objetivo: Vamos colocar a tag [RESOLVIDO] no ttulo do tpico quando o problema for resolvido
tgofdr
What is Android?
jijo escreveu:
Muito bom Marlus, ainda no botei pra rodar (falta de tempo pra mexer no android), mas olhando por cima, acho que voc se esqueceu de postar a classe pessoa no?!
abrao
daki a pouco vou upar ela negocio que no to com o pc que desenvolvi a aplicao at as 3 da tarde j vai estar a classe pessoa e o projeto zipado s para baixar e executar
AleSR
Android application
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Andr Muito bom esse tutorial! Me ajudou muito na
questo de listar dados do bd. S que eu tenho uma dvida: possvel separar os dados listados em colunas? que no tutorial os dados so separados por um hfen, e minha listview ficou meio "bagunada" utilizando esse mtodo. Desde j agradeo qualquer ajuda!
laurovitor
What is Android?
Ol pessoal,
Estou precisando criar um banco de dados no Android, via SQLiteDatabase, mas eu no estou conseguindo. No tenho nenhuma activity. Na verdade, o componente que eu estou criando vai ser usado por outros componentes (esses sim possuem activities), mas meu componente deve ser totalmente independente dos outros.
private static final String DATABASE_NAME = "sdm"; private SQLiteDatabase mDB = null; mDB = SQLiteDatabase.open(DATABASE_NAME, null); if (mDB == null) { Log.e("[DATABASE]", "Nao conseguiu abrir o banco.. tentando criar novo banco"); mDB = SQLiteDatabase.create(DATABASE_NAME, DATABASE_VERSION, null); if (mDB == null) { Log.e("[DATABASE]","Nao foi possivel criar o banco"); } else { Log.e("[DATABASE]", "Banco criado"); } } else { Log.i("[DATABASE]","Abriu o banco"); }
Mas sempre d o seguinte erro: Failed to open database file "sdm" - unable to open database file
Obrigada,
Ola, bom sei que sua duvida e antiga e j ate deve ter resolvido mas como no foi facio achar a resposta pra mim resolvi compartilhar ela com vocs
public class dbSQLite{ public SQLiteDatabase dataBase = null; public Cursor cursor; private Context context;
public void iniciaBanco(){ try{ dataBase = context.openOrCreateDatabase("android_databa se",Context.MODE_WORLD_READABLE,null); String query = "CREATE TABLE IF NOT EXISTS \"cadastro\" (CODIGO integer NOT NULL PRIMARY KEY AUTOINCREMENT,NOME varchar(50) NOT NULL"; dataBase.execSQL(query); }catch(Exception erro){ Log.e("DATABASE","Erro ao iniciar o banco: "+erro); } }
public void fecharBanco(){ try{ dataBase.close(); }catch(Exception erro){ Log.e("DATABASE","Erro ao finalizar o banco: "+erro); } }
gabriellacerda
Android application
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Andr ol, como eu posso saber se o banco realmente
foi criado, pois minhas consultas no esto retornando nada... nem da erro na hora de inserir nem de consultar...
vlw
laurovitor
What is Android?
ol, como eu posso saber se o banco realmente foi criado, pois minhas consultas no esto retornando nada... nem da erro na hora de inserir nem de consultar...
vlw
gabriellacerda
Android application
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Andr opa, lauro... j consegui resolver... era o nome
Mensagens: 62
bordalotx
What is Android?
possvel arranjar este projeto na ultima verso do sdk? Pois eu no consigo compilar... d erros!!!
Obrigado
douglas.costa
Anatomy of an App
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Andr onde fica instalado o arquivo do banco de dados
rafaelsandim
What is Android?
Re: [TUTORIAL] Trabalhando com Banco de Dados SQLite no Andr Oi, eu armazenei uma path de um arquivo no
o path seria algo como "/mnt/sdcard/folder/", na hora de armazenar est de boa e se eu recupero todos os dados do banco tbm obtenho certinho o path
porm quando eu tento recuperar a tupla utilizando no where um path especifico, por exemplo:
Cursor c = dbHandler.db.query("conteudos", new String[] {"_id","name", "path"}, "path=/mnt/sdcard/f older/", null, null, null, null);
Quando executa est linha meu app trava, e no LogCat o erro que apresentado o seguinte:
07-27 14:05:57.219: I/SqliteDatabaseCpp(20301): sqlite returned: error code = 1, msg = near "/": syntax error,...
Acredito que seja algum tipo de formatao dos caracteres de '/' do sqlite, lembro para para alguns db por exemplo temos que colocar entre aspas simples entre a string e talz.