Код: Выделить всё
import java.io.File;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
public abstract class MyDataBaseOpenHelper {
private SQLiteDatabase db;
private SQLiteDatabase readDb;
private SQLiteDatabase writeDb;
private File dbFile;
private String dbName;
private boolean isExistDB;
public MyDataBaseOpenHelper(Context context, String dbName) {
super();
this.isExistDB = false;
this.dbName = dbName;
this.prepareBD();
if(!isExistDB){
onCreate(db);
}
this.setReadDb();
this.setWriteDb();
}
private void prepareBD() {
try{
File sdCard = Environment.getExternalStorageDirectory();
File directory = new File(sdCard.getAbsolutePath () + "/" + dbName);
directory.mkdirs();
dbFile = new File(directory, dbName);
if(dbFile.exists())isExistDB=true;
this.db = SQLiteDatabase.openOrCreateDatabase(dbFile, null);
}catch (Exception e) {
this.db = SQLiteDatabase.openOrCreateDatabase(dbName, null);
}
}
abstract public void onCreate(SQLiteDatabase db);
abstract public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion);
public void close(){
db.close();
writeDb.close();
readDb.close();
}
public SQLiteDatabase openMyDb() {
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbFile, null);
return db;
}
public SQLiteDatabase getReadableDatabase(){
return this.readDb;
}
private void setReadDb(){
SQLiteDatabase resdDb = SQLiteDatabase.openDatabase(dbFile.getAbsolutePath(), null, SQLiteDatabase.OPEN_READONLY);
this.readDb = resdDb;
}
public SQLiteDatabase getWritableDatabase(){
return this.writeDb;
}
private void setWriteDb(){
SQLiteDatabase resdDb = SQLiteDatabase.openDatabase(dbFile.getAbsolutePath(), null, SQLiteDatabase.OPEN_READWRITE);
this.writeDb = resdDb;
}
}