Merhabalar Cüneyt, bu işlemleri veri tabanı işlemeri için yazdığınız sınıf içerisinde yapmanız gerekecek. Yazmış olduğunuz sınıf SQLiteOpenHelper sınıfını extends ettiğini düşünüyorum.
size gerekli methodlar şunlar :
private static String DB_PATH = "/data/data/com.igunduz91.kigem/databases/";
private static String DB_NAME;
public void createDatabase() throws IOException {
boolean dbExist = checkDataBase();
if(dbExist) {
} else {
this.getReadableDatabase();
try {
copyDataBase();
Log.d(LOGCAT,"Copy Data Base");
} catch(IOException e) {
throw new Error("Error copying database");
}
}
}
private boolean checkDataBase() {
File dbFile = new File(DB_PATH + DB_NAME);
return dbFile.exists();
}
private void copyDataBase() throws IOException {
InputStream myInput = myContext.getAssets().open(DB_NAME);
String outFileName = DB_PATH + DB_NAME;
OutputStream myOutput = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
while((length = myInput.read(buffer))>0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
bu methodları yazmış olduğunuz veri tabanı sınıfının constructor'ında şu şekilde kullanmanız gerekmektedir :
try {
createDatabase();
} catch (IOException e) {
throw new Error("Unable to create database");
}
burdan şu şekilde bir olay oluşur, uygulamayı kullanıcı açtığında db sınıfı işlem gördüğünde kod bakacak. eğer benim veritabanım /data/data/com.igunduz91/kigem.sqlite dosyası var mı yok mu? eğer yok ise assert içinde ki db dosyasını oraya kopyalayacak. her db işleminde bu şekilde bir kontrol yapılacak.
*not bu şekilde bir db yi kopyalamakta 1mb üzerie dosyalarda problem oluşuyor. android sistem yapısı 1mb üzeri dosyaları bu şekilde kopyalamada sıkıntı oluşturuyor.
benim önerim ve yaptığım; hazır veri tabanı sunacağım uygulamaları bulut alt yapısı içerisinde sunuyorum.
https://play.google.com/store/apps/developer?id=İbrahim+Gündüz
iki uygulamamda bulut alt yapılı...