The main reason for creating this class to create and manipulate a database is to reuse it and in addition this class did NOT need EXTENDS any other!
Below My Class after the problem has been resolved.
BancoDeDados.java
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class BancoDeDados {
private String DATABASE_NAME;
private int DATABASE_VERSION;
private String TABLE_NAME;
private String SQL_SELECT_ALL;
private String SQL_SELECT_ID;
private String SQL_CREATE;
public BancoDeDados(String DATABASE_NAME,int DATABASE_VERSION,String TABLE_NAME,String SQL_SELECT_ALL,String SQL_SELECT_ID,String SQL_CREATE){
this.DATABASE_NAME = DATABASE_NAME;
this.DATABASE_VERSION = DATABASE_VERSION;
this.TABLE_NAME = TABLE_NAME;
this.SQL_SELECT_ALL = SQL_SELECT_ALL;
this.SQL_SELECT_ID = SQL_SELECT_ID;
this.SQL_CREATE = SQL_CREATE;
}
public BancoDeDados(String DATABASE_NAME,int DATABASE_VERSION,String TABLE_NAME,String SQL_SELECT_ALL,String SQL_CREATE){
this.DATABASE_NAME = DATABASE_NAME;
this.DATABASE_VERSION = DATABASE_VERSION;
this.TABLE_NAME = TABLE_NAME;
this.SQL_SELECT_ALL = SQL_SELECT_ALL;
this.SQL_CREATE = SQL_CREATE;
}
public void onCreate(Context ctx,SQLiteDatabase db){
//openOrCreateDatabase --> Cria ou Abre banco de dados
//(nome.db,permissão (modo), ...)
// MODE_PRIVATE --> Priva o acesso do banco para somente aplicação
db = ctx.openOrCreateDatabase(this.DATABASE_NAME,Context.MODE_PRIVATE, null);
db.execSQL(this.SQL_CREATE); //Criando tabela caso não exista!!
db.close();
}
public void onUpgrade(Context ctx,SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + this.TABLE_NAME);
// Create tables again
onCreate(ctx,db);
}
public long onWrite(Context ctx,SQLiteDatabase db,String row,ContentValues ctv){
db = ctx.openOrCreateDatabase(this.DATABASE_NAME,Context.MODE_PRIVATE,null);
long lg = db.insert(this.TABLE_NAME,row,ctv);
db.close();
return lg;
}
public int onUpdate(Context ctx,SQLiteDatabase db,ContentValues ctv,String row,int id){
db = ctx.openOrCreateDatabase(this.DATABASE_NAME,Context.MODE_PRIVATE,null);
int x = db.update(this.TABLE_NAME, ctv, row, new String[]{String.valueOf(id)});
db.close();
return x;
}
public Cursor onSelecAll(Context ctx,SQLiteDatabase db){
db = ctx.openOrCreateDatabase(this.DATABASE_NAME,Context.MODE_PRIVATE,null);
Cursor cursor = db.rawQuery(this.SQL_SELECT_ALL, null);
return cursor;
}
public Cursor onSelecId(Context ctx,SQLiteDatabase db,int id){
db = ctx.openOrCreateDatabase(this.DATABASE_NAME,Context.MODE_PRIVATE,null);
Cursor cursor = db.rawQuery(SQL_SELECT_ID, new String[]{String.valueOf(id)});
return cursor;
}
public int onDelete(Context ctx,SQLiteDatabase db,String row,int id){
db = ctx.openOrCreateDatabase(this.DATABASE_NAME,Context.MODE_PRIVATE,null);
int x = db.delete(this.TABLE_NAME, row, new String[]{String.valueOf(id)});
db.close();
return x;
}
public void onClose(Context ctx,SQLiteDatabase db){
db = ctx.openOrCreateDatabase(this.DATABASE_NAME,Context.MODE_PRIVATE,null);
db.close();
}
}
And in Main.java
we have:
import android...
public class Main extends Activity {
private SQLiteDatabase db;
private Context ctx;
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "bancodedado.db";
private static final String TABLE_NAME = "tabela";
private static final String SQL_SELECT_ALL = "SELECT * FROM "+TABLE_NAME;
private static final String SQL_SELECT_ID = "SELECT * FROM tabela WHERE _id = ?";
/* SQL de criação do banco de dados. */
private static final String SQL_CREATE = "CREATE TABLE IF NOT EXISTS tabela(" +
"_id INTEGER PRIMARY KEY, " +
"pessoa VARCHAR(30), "
"animal VARCHAR(30))";
BancoDeDados BD = new BancoDeDados(DATABASE_NAME,DATABASE_VERSION,TABLE_NAME,SQL_SELECT_ALL,SQL_SELECT_ID,SQL_CREATE);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ctx = getBaseContext(); //Context para usar na classe BancoDeDados
BD.onCreate(ctx, db); // Criar BD e tabela caso sejam necessários!!
/* .... */
}
}