Montar DAO

Boa noite meus amigos,

Tenho a seguinte classe Adapter:

package br.me.aquasystem.banco;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;

public class DbAdapter {
	
	private static final String DATABASE_NAME = "bancoaqua";
	private static final int DATABASE_VERSION = 1;
	
	private static final String DATABASE_TABLE_CLIENTES = "clientes";
	private static final String DATABASE_TABLE_CARROS = "carros";
	private static final String DATABASE_TABLE_TIPO_VEICULO = "tipo_veiculo";
	private static final String DATABASE_TABLE_SERVICOS = "servicos";
	private static final String DATABASE_TABLE_HORARIOS = "horarios";
	private static final String DATABASE_TABLE_OS = "os";
	
//  CAMPOS DA TABELA CLIENTES	
	public static final String KEY_ID_CLI = "_id";
	public static final String KEY_NOME = "nome";
	public static final String KEY_ENDERECO = "endereco";
	public static final String KEY_TELEFONE = "telefone";
	public static final String KEY_CELULAR = "celular";
	public static final String KEY_EMAIL = "email";

//  CAMPOS DA TABELA CARROS	
	public static final String KEY_ID_CARRO = "_id";
	public static final String KEY_IDCLIENTE_CARRO = "id_cliente";
	public static final String KEY_IDTIPO_CARRO = "id_tipo_carro";
	public static final String KEY_MODELO = "car_modelo";
	public static final String KEY_PLACA = "car_placa";

//  CAMPOS DA TABELA TIPO DE VEICULO	
	public static final String KEY_ID_TIP = "_id";
	public static final String KEY_TIPDESC = "tip_descricao";
	
//  CAMPOS DA TABELA SERVICOS	
	public static final String KEY_ID_SER = "_id";
	public static final String KEY_IDTIPO_SER = "id_tipo_carro";
	public static final String KEY_DESCRICAO_SER = "ser_descricao";
	public static final String KEY_VALOR = "ser_valor";
	
//  CAMPOS DA TABELA HORARIOS	
	public static final String KEY_ID_HOR = "_id";
	public static final String KEY_HORARIO = "hor_horario";
	
//  CAMPOS DA TABELA OS	
	public static final String KEY_ID_OS = "_id";
	public static final String KEY_IDCLIENTE_OS = "id_cliente";
	public static final String KEY_IDSERVICO_OS = "id_servico";
	public static final String KEY_IDHORARIO_OS = "id_horario";
	public static final String KEY_DATA = "os_data";
	
	
//  CRIA A TABELA CLIENTES
	private static final String DATABASE_CREATE_CLIENTES = "create table " + DATABASE_TABLE_CLIENTES + " ("
	+ KEY_ID_CLI + " integer primary key autoincrement, "
	+ KEY_NOME + " text, "
	+ KEY_ENDERECO + " text, "
	+ KEY_TELEFONE + " text, "
	+ KEY_CELULAR + " text, "
	+ KEY_EMAIL + " text);";
	
//  CRIA A TABELA CARROS    
    private static final String DATABASE_CREATE_CARROS = "create table " + DATABASE_TABLE_CARROS + " ("    
    + KEY_ID_CARRO + " integer primary key autoincrement, "    
    + KEY_IDCLIENTE_CARRO + " integer, "    
    + KEY_IDTIPO_CARRO + " integer, "    
    + KEY_MODELO + " text, "    
    + KEY_PLACA + " text, FOREIGN KEY ( " + KEY_IDCLIENTE_CARRO    
    + " ) REFERENCES " + DATABASE_TABLE_CLIENTES + " (" + KEY_ID_CLI    
    + " ) ON DELETE RESTRICT ON UPDATE CASCADE , FOREIGN KEY ( "     
    + KEY_IDTIPO_CARRO + " ) REFERENCES " + DATABASE_TABLE_TIPO_VEICULO + " ("     
    + KEY_IDTIPO_CARRO + " ) ON DELETE RESTRICT ON UPDATE CASCADE);"; 
	
//  CRIA A TABELA TIPO_CARRO
	private static final String DATABASE_CREATE_TIPO_CARRO = "create table " + DATABASE_TABLE_TIPO_VEICULO + " ("
	+ KEY_ID_TIP + " integer primary key autoincrement, "
	+ KEY_TIPDESC + " text);";

//  CRIA A TABELA SERVICOS
	private static final String DATABASE_CREATE_SERVICOS = "create table " + DATABASE_TABLE_SERVICOS + " ("
	+ KEY_ID_SER + " integer primary key autoincrement, "
	+ KEY_IDTIPO_SER + " integer, "
	+ KEY_DESCRICAO_SER + " text, "
	+ KEY_VALOR + " text, FOREIGN KEY ( " + KEY_IDTIPO_SER
	+ " ) REFERENCES " + DATABASE_TABLE_TIPO_VEICULO + " (" + KEY_IDTIPO_SER
	+ " ) ON DELETE RESTRICT ON UPDATE CASCADE);";
	
//  CRIA A TABELA HORARIOS
	private static final String DATABASE_CREATE_HORARIOS = "create table " + DATABASE_TABLE_HORARIOS + " ("
	+ KEY_ID_HOR + " integer primary key autoincrement, "
	+ KEY_HORARIO + " text);";

//  CRIA A TABELA OS
	private static final String DATABASE_CREATE_OS = "create table " + DATABASE_TABLE_OS + " ("    
    + KEY_ID_OS + " integer primary key autoincrement, "    
    + KEY_IDCLIENTE_OS + " integer, "    
    + KEY_IDSERVICO_OS  + " integer, "    
    + KEY_IDHORARIO_OS + " integer ,"  
    + KEY_MODELO + " text, "    
    + KEY_PLACA + " text, FOREIGN KEY ( " + KEY_IDCLIENTE_OS    
    + " ) REFERENCES " + DATABASE_TABLE_CLIENTES + " (" + KEY_ID_CLI    
    + " ) ON DELETE RESTRICT ON UPDATE CASCADE, FOREIGN KEY ( "     
    + KEY_IDSERVICO_OS + " ) REFERENCES "     
    + DATABASE_TABLE_SERVICOS + " (" + KEY_IDSERVICO_OS    
    + " ) ON DELETE RESTRICT ON UPDATE CASCADE, FOREIGN KEY ( "     
    + KEY_IDHORARIO_OS + " ) REFERENCES " + DATABASE_TABLE_HORARIOS + " ("     
    + KEY_IDHORARIO_OS + " ) ON DELETE RESTRICT ON UPDATE CASCADE);";
	
	
	private final Context mCtx;
	
	private DatabaseHelper mDbHelper;
	private SQLiteDatabase mDb;
	
	public DbAdapter(Context ctx){
		this.mCtx = ctx;
	}
	
	public DbAdapter open() throws SQLiteException{
		if(isClosed()){
			mDbHelper = new DatabaseHelper(mCtx);
			mDb = mDbHelper.getWritableDatabase();
		}
		return this;
	}
	
	public void close(){
		mDbHelper.close();
	}
	
	public boolean isClosed(){
		return mDb == null || !mDb.isOpen();
	}

// TABELA TIPO VEÍCULO : KEY_ID_TIP, KEY_TIPDESC
	
	public Cursor getTodosTipoVeiculo(){
		return mDb.query(DATABASE_TABLE_TIPO_VEICULO, null, null, null, null, null, null);
	}

//  GRAVAR TIPO VEÍCULO
	public long gravarTipoVeiculo(String tipo){
		ContentValues valores = new ContentValues();
		valores.put(KEY_TIPDESC, tipo);
		return mDb.insert(DATABASE_TABLE_TIPO_VEICULO, null, valores);
	} 

//  APAGAR TIPO VEÍCULO
	public boolean apagarTipoVeiculo(long Id){
		int qt = mDb.delete(DATABASE_TABLE_TIPO_VEICULO, KEY_ID_TIP + "=" + Id, null);
		return qt > 0;
	}

//  ALTERAR TIPO VEÍCULO
	public boolean alterarTipoVeiculo(long Id, String tipo){
		ContentValues valores = new ContentValues();
		valores.put(KEY_TIPDESC, tipo);
		return mDb.update(DATABASE_TABLE_TIPO_VEICULO, valores, KEY_ID_TIP + "=" + Id, null) > 0;
	}	
	
//  TIPO VEÍCULO POR ID	
	public Cursor getTipoVeiculo(long Id){
		return mDb.query(DATABASE_TABLE_TIPO_VEICULO, null, KEY_ID_TIP + "=" + Id, null, null, null, null);
	}
	
// TIPO VEÍCULO POR DESCRICAO	
	public Cursor getTipoVeiculoPorDescricao(String nomeString){
		String[] selectionArgs = {nomeString + "%"};  
//		return mDb.query(DATABASE_TABLE_CLIENTES, null, KEY_NOME + "=" + selectionArgs, null, null, null, null);
		return mDb.rawQuery("SELECT * FROM tipo_veiculo WHERE tip_descricao like ?", selectionArgs);
	}
	
	
	private class DatabaseHelper extends SQLiteOpenHelper{

		public DatabaseHelper(Context context) {
			super(context, DATABASE_NAME, null, DATABASE_VERSION);
		}

		@Override
		public void onCreate(SQLiteDatabase db) {
			db.execSQL(DATABASE_CREATE_CLIENTES);
			db.execSQL(DATABASE_CREATE_CARROS);
			db.execSQL(DATABASE_CREATE_TIPO_CARRO);
			db.execSQL(DATABASE_CREATE_SERVICOS);
			db.execSQL(DATABASE_CREATE_HORARIOS);
			db.execSQL(DATABASE_CREATE_OS);
		}

		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		}
		
	}
	
}

Gostaria de separar as coisas, deixar somente no Adapter a criação do banco e tabelas e na classe TipoVeiculoDAO os métodos CRUD. Alguém me ajudar a montar?

Segue classe TipoVeiculoDAO:[color=red] [/color]

package br.me.aquasystem.banco;

public class TipoVeiculoDAO {

}

Então, o que quero é separar o CRUD no Adapter e deixar numa nova classe somente os métodos de CRUD, TipoVeiculoDAO, e deixar no Adapter somente a criação do banco e tabelas. Gostaria de ajuda para isso. Está postado o código ai.

Olá fbrigatt !!

Tb tenho uma dúvida organizacional:

Como também tenho várias tabelas no meu bacno, e pra organizar a coisa, tentei fazer uma classe dao pra cada tabela (contendo essa o script de cada tabela) … mas sem sucesso …
vi no seu código que seu arquivo dao tem o script de todo o banco …
ou seja… pelo jeito tb vou ter que fazer um baita de um arquivo dao …
://

vou acompanhar aqui pra ver se é possível deixar o crud em classes diferentes … (eu até já tinha tentado isso, mas sem sucesso … vamos ver se alguém responde positivamente) …

quem vem do Java, sente falta né ? hihi …

abraço …

Frital,

O que vc fez que não certo? Como assim?

wellington.nogueira

Como que posso transcrever os métodos do Adapter para essa?

Segue classe TipoVeiculoDAO:

package br.me.aquasystem.banco;  
  
public class TipoVeiculoDAO {  
  
}  

Bom, a respeito da melhor maneira organizacional podemos concluir o seguinte então ?

  • uma classe “geraBanco” que estende SQLiteOpenHelper para gerar todo o banco(script), com métodos abstratos ;
  • uma classe Dao para cada entidade (ex.: carros, pessoas, etc), onde cada classe estende à “geraBanco”, implementando seus métodos abstratos …

correto ?

Grato por antecipação …

Alguém ajuda?

Eu estou tentando, mas não estou conseguindo separar o que tenho, entendeu? Do jeito que tá, está funcionando, mas gostaria de separar as coisas, métodos CRUD na TipoVeiculosDAO e o DbAdapter, somente o código pra montar as tabelas e banco. To desde cedo tentando isso.

Classe Adapter

package br.me.aquasystem.banco;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;

public class DbAdapter {
	
	private static final String DATABASE_NAME = "bancoaqua";
	private static final int DATABASE_VERSION = 1;
	
	private static final String DATABASE_TABLE_CLIENTES = "clientes";
	private static final String DATABASE_TABLE_CARROS = "carros";
	private static final String DATABASE_TABLE_TIPO_VEICULO = "tipo_veiculo";
	private static final String DATABASE_TABLE_SERVICOS = "servicos";
	private static final String DATABASE_TABLE_HORARIOS = "horarios";
	private static final String DATABASE_TABLE_OS = "os";
	
//  CAMPOS DA TABELA CLIENTES	
	public static final String KEY_ID_CLI = "_id";
	public static final String KEY_NOME = "nome";
	public static final String KEY_ENDERECO = "endereco";
	public static final String KEY_TELEFONE = "telefone";
	public static final String KEY_CELULAR = "celular";
	public static final String KEY_EMAIL = "email";

//  CAMPOS DA TABELA CARROS	
	public static final String KEY_ID_CARRO = "_id";
	public static final String KEY_IDCLIENTE_CARRO = "id_cliente";
	public static final String KEY_IDTIPO_CARRO = "id_tipo_carro";
	public static final String KEY_MODELO = "car_modelo";
	public static final String KEY_PLACA = "car_placa";

//  CAMPOS DA TABELA TIPO DE VEICULO	
	public static final String KEY_ID_TIP = "_id";
	public static final String KEY_TIPDESC = "tip_descricao";
	
//  CAMPOS DA TABELA SERVICOS	
	public static final String KEY_ID_SER = "_id";
	public static final String KEY_IDTIPO_SER = "id_tipo_carro";
	public static final String KEY_DESCRICAO_SER = "ser_descricao";
	public static final String KEY_VALOR = "ser_valor";
	
//  CAMPOS DA TABELA HORARIOS	
	public static final String KEY_ID_HOR = "_id";
	public static final String KEY_HORARIO = "hor_horario";
	
//  CAMPOS DA TABELA OS	
	public static final String KEY_ID_OS = "_id";
	public static final String KEY_IDCLIENTE_OS = "id_cliente";
	public static final String KEY_IDSERVICO_OS = "id_servico";
	public static final String KEY_IDHORARIO_OS = "id_horario";
	public static final String KEY_DATA = "os_data";
	
	
//  CRIA A TABELA CLIENTES
	private static final String DATABASE_CREATE_CLIENTES = "create table " + DATABASE_TABLE_CLIENTES + " ("
	+ KEY_ID_CLI + " integer primary key autoincrement, "
	+ KEY_NOME + " text, "
	+ KEY_ENDERECO + " text, "
	+ KEY_TELEFONE + " text, "
	+ KEY_CELULAR + " text, "
	+ KEY_EMAIL + " text);";
	
//  CRIA A TABELA CARROS    
    private static final String DATABASE_CREATE_CARROS = "create table " + DATABASE_TABLE_CARROS + " ("    
    + KEY_ID_CARRO + " integer primary key autoincrement, "    
    + KEY_IDCLIENTE_CARRO + " integer, "    
    + KEY_IDTIPO_CARRO + " integer, "    
    + KEY_MODELO + " text, "    
    + KEY_PLACA + " text, FOREIGN KEY ( " + KEY_IDCLIENTE_CARRO    
    + " ) REFERENCES " + DATABASE_TABLE_CLIENTES + " (" + KEY_ID_CLI    
    + " ) ON DELETE RESTRICT ON UPDATE CASCADE , FOREIGN KEY ( "     
    + KEY_IDTIPO_CARRO + " ) REFERENCES " + DATABASE_TABLE_TIPO_VEICULO + " ("     
    + KEY_IDTIPO_CARRO + " ) ON DELETE RESTRICT ON UPDATE CASCADE);"; 
	
//  CRIA A TABELA TIPO_CARRO
	private static final String DATABASE_CREATE_TIPO_CARRO = "create table " + DATABASE_TABLE_TIPO_VEICULO + " ("
	+ KEY_ID_TIP + " integer primary key autoincrement, "
	+ KEY_TIPDESC + " text);";

//  CRIA A TABELA SERVICOS
	private static final String DATABASE_CREATE_SERVICOS = "create table " + DATABASE_TABLE_SERVICOS + " ("
	+ KEY_ID_SER + " integer primary key autoincrement, "
	+ KEY_IDTIPO_SER + " integer, "
	+ KEY_DESCRICAO_SER + " text, "
	+ KEY_VALOR + " text, FOREIGN KEY ( " + KEY_IDTIPO_SER
	+ " ) REFERENCES " + DATABASE_TABLE_TIPO_VEICULO + " (" + KEY_IDTIPO_SER
	+ " ) ON DELETE RESTRICT ON UPDATE CASCADE);";
	
//  CRIA A TABELA HORARIOS
	private static final String DATABASE_CREATE_HORARIOS = "create table " + DATABASE_TABLE_HORARIOS + " ("
	+ KEY_ID_HOR + " integer primary key autoincrement, "
	+ KEY_HORARIO + " text);";

//  CRIA A TABELA OS
	private static final String DATABASE_CREATE_OS = "create table " + DATABASE_TABLE_OS + " ("    
    + KEY_ID_OS + " integer primary key autoincrement, "    
    + KEY_IDCLIENTE_OS + " integer, "    
    + KEY_IDSERVICO_OS  + " integer, "    
    + KEY_IDHORARIO_OS + " integer ,"  
    + KEY_MODELO + " text, "    
    + KEY_PLACA + " text, FOREIGN KEY ( " + KEY_IDCLIENTE_OS    
    + " ) REFERENCES " + DATABASE_TABLE_CLIENTES + " (" + KEY_ID_CLI    
    + " ) ON DELETE RESTRICT ON UPDATE CASCADE, FOREIGN KEY ( "     
    + KEY_IDSERVICO_OS + " ) REFERENCES "     
    + DATABASE_TABLE_SERVICOS + " (" + KEY_IDSERVICO_OS    
    + " ) ON DELETE RESTRICT ON UPDATE CASCADE, FOREIGN KEY ( "     
    + KEY_IDHORARIO_OS + " ) REFERENCES " + DATABASE_TABLE_HORARIOS + " ("     
    + KEY_IDHORARIO_OS + " ) ON DELETE RESTRICT ON UPDATE CASCADE);";
	
	
	private final Context mCtx;
	
	private DatabaseHelper mDbHelper;
	private SQLiteDatabase mDb;
	
	public DbAdapter(Context ctx){
		this.mCtx = ctx;
	}
	
	public DbAdapter open() throws SQLiteException{
		if(isClosed()){
			mDbHelper = new DatabaseHelper(mCtx);
			mDb = mDbHelper.getWritableDatabase();
		}
		return this;
	}
	
	public void close(){
		mDbHelper.close();
	}
	
	public boolean isClosed(){
		return mDb == null || !mDb.isOpen();
	}

// TABELA TIPO VEÍCULO : KEY_ID_TIP, KEY_TIPDESC
	
	public Cursor getTodosTipoVeiculo(){
		return mDb.query(DATABASE_TABLE_TIPO_VEICULO, null, null, null, null, null, null);
	}

//  GRAVAR TIPO VEÍCULO
	public long gravarTipoVeiculo(String tipo){
		ContentValues valores = new ContentValues();
		valores.put(KEY_TIPDESC, tipo);
		return mDb.insert(DATABASE_TABLE_TIPO_VEICULO, null, valores);
	} 

//  APAGAR TIPO VEÍCULO
	public boolean apagarTipoVeiculo(long Id){
		int qt = mDb.delete(DATABASE_TABLE_TIPO_VEICULO, KEY_ID_TIP + "=" + Id, null);
		return qt > 0;
	}

//  ALTERAR TIPO VEÍCULO
	public boolean alterarTipoVeiculo(long Id, String tipo){
		ContentValues valores = new ContentValues();
		valores.put(KEY_TIPDESC, tipo);
		return mDb.update(DATABASE_TABLE_TIPO_VEICULO, valores, KEY_ID_TIP + "=" + Id, null) > 0;
	}	
	
//  TIPO VEÍCULO POR ID	
	public Cursor getTipoVeiculo(long Id){
		return mDb.query(DATABASE_TABLE_TIPO_VEICULO, null, KEY_ID_TIP + "=" + Id, null, null, null, null);
	}
	
// TIPO VEÍCULO POR DESCRICAO	
	public Cursor getTipoVeiculoPorDescricao(String nomeString){
		String[] selectionArgs = {nomeString + "%"};  
//		return mDb.query(DATABASE_TABLE_CLIENTES, null, KEY_NOME + "=" + selectionArgs, null, null, null, null);
		return mDb.rawQuery("SELECT * FROM tipo_veiculo WHERE tip_descricao like ?", selectionArgs);
	}
	
	
	private class DatabaseHelper extends SQLiteOpenHelper{

		public DatabaseHelper(Context context) {
			super(context, DATABASE_NAME, null, DATABASE_VERSION);
		}

		@Override
		public void onCreate(SQLiteDatabase db) {
			db.execSQL(DATABASE_CREATE_CLIENTES);
			db.execSQL(DATABASE_CREATE_CARROS);
			db.execSQL(DATABASE_CREATE_TIPO_CARRO);
			db.execSQL(DATABASE_CREATE_SERVICOS);
			db.execSQL(DATABASE_CREATE_HORARIOS);
			db.execSQL(DATABASE_CREATE_OS);
		}

		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		}
		
	}
	
}
import br.me.aquasystem.banco.DbAdapter;
import br.me.gridview.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ImageButton;

public class CadastrarTipoVeiculo extends Activity { // Início da Classe CadastrarTipoVeiculo
	private long mId;
	private EditText Tipo_Veiculo;
	private ImageButton salvar, pesquisar, limpar, voltar;
	
	private DbAdapter mDb; // KEY_ID_TIP e KEY_TIPDESC
	
	@Override
	protected void onCreate(Bundle icicle){ // Início do método onCreate
		super.onCreate(icicle);
		setContentView(R.layout.cad_tipo_veiculo);
		
		mDb = new DbAdapter(this);

E ai, ajuda…

Alguém me ajuda, to com dificuldades pra adaptar o que tenho, por favor.

Não quero que façam por mim, quero que me ajudem, estou com essas dúvidas, pois já está pronto, é só separar.

Eu estou com duvida quanto aos imports, pq na Classe DBAdapter é onde crio o banco e as tabelas, certo?

Na classe CadastrarTipoVeiculo importo DBAdapter: import br.me.aquasystem.banco.DbAdapter; Perunta: Preciso do import br.me.aquasystem.banco.DbAdapter e private DbAdapter mDb; na classe TipoVeiculoDAO? Como faria a chamada dos métodos CRUD na CadastrarTipoVeiculo, pois estou fazendo assim: mDb.gravarTipoVeiculo(tipo_veiculoString);

O DBAdapter é classe pai sim, nela eu quero que fique somente a criação do banco e as tabelas. Na classe CadastrarTipoVeiculo como que encapsulo o mDB, não entendi esse metodo get protected, seria isso na classe CadastrarTipoVeiculo:

protected DbAdapter mDb;

logo abaixo de;

@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		}
		
	}

coloco isso?

Fiz assim na classe TipoVeiuculoDAO e esta dando erro na query:

Deixei assim na classe DbAdapter: public static final String DATABASE_TABLE_TIPO_VEICULO = “tipo_veiculo”;

public class TipoVeiculoDAO {

	private DbAdapter mDb;
// TABELA TIPO VEÍCULO : KEY_ID_TIP, KEY_TIPDESC
	
	public Cursor getTodosTipoVeiculo(){
		return mDb.query(mDb.DATABASE_TABLE_TIPO_VEICULO, null, null, null, null, null, null); // mDb.query ta sublinhado de vermelho
	}

Tem que tirar o mDb?

Está dando esse erro

Implicit super constructor DbAdapter() is undefined for default constructor. Must define an explicit constructor

Na linha:

public class TipoVeiculoDAO extends DbAdapter { //TipoVeiculoDAO está sublinhado

Está dando esse erro

Implicit super constructor DbAdapter() is undefined for default constructor. Must define an explicit constructor

Na linha:

public class TipoVeiculoDAO extends DbAdapter { //TipoVeiculoDAO está sublinhado

Entendi, obrigado pelo conselho. Vou dar uma pesquisada sobre isso. Eu já imaginava que seria o construtor da classe. Só da uma dica de como fazer isso, é melhor fazer na TipoVeiculoDAO?

Eu já fiz, seria isso:

public TipoVeiculoDAO(Context ctx) {
		super(ctx);
		// TODO Auto-generated constructor stub
	}

Erro estranho:

06-11 18:52:03.314: E/AndroidRuntime(350): java.lang.RuntimeException: Unable to start activity ComponentInfo{br.me.gridview/br.me.aquasystem.TipoVeiculo}: java.lang.NullPointerException

Classe TipoVeiculo:

package br.me.aquasystem;

import br.me.aquasystem.banco.DbAdapter;
import br.me.aquasystem.DAO.TipoVeiculoDAO;
import br.me.gridview.R;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
//import android.view.View.OnClickListener;
//import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class TipoVeiculo extends ListActivity{
	
	public ImageButton btnAdicionar_TipoVeiculo;
	public DbAdapter db;
	private TipoVeiculoDAO dao;
	
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.lista_tipo_veiculo);
		
//		String[] items = new String[] {"Carro","Trabalho","Faculdade"};
		
		db = new DbAdapter(this);
		
		carregarLista();
		
		btnAdicionar_TipoVeiculo = (ImageButton) findViewById(R.id.btn_AdicionarTipoVeiculo);
		
		btnAdicionar_TipoVeiculo.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent intent = new Intent(TipoVeiculo.this, CadastrarTipoVeiculo.class);
				startActivityForResult(intent, 1);
			}
		});
       }
	
	@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
		super.onListItemClick(l, v, position, id);
		Intent intent = new Intent(TipoVeiculo.this, CadastrarTipoVeiculo.class);
		intent.putExtra(DbAdapter.KEY_ID_TIP, id);
		startActivityForResult(intent, 1);
	}
	
	private void carregarLista(){
		db.open();
		Cursor tipos = dao.getTodosTipoVeiculo();
		tipos.moveToFirst();
		
		SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.two_line_list_item, tipos, new String[] {DbAdapter.KEY_ID_TIP, DbAdapter.KEY_TIPDESC},new int[] {android.R.id.text1,android.R.id.text2});
		setListAdapter(adapter);
		db.close();
	}
	
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		if(requestCode == 1 && resultCode == RESULT_OK)
			carregarLista();
	}
	
}	

wellington.nogueira

que erro é esse?