Android uygulamasında harici veritabanı ve veri ekleme
14.03.2017 - 04:09
Androide dışardan SQLite veritabanı ekledim. Uygulama üzerinden bu veritabanına veri eklemeye çalışıyorum fakat uygulama durduruldu şeklinde hata alıyorum. Nerede yanlış yaptığımı bulamadım yardımcı olabilir misiniz? Database kodlarım şu şekilde:
public class Database extends SQLiteOpenHelper {
SQLiteDatabase db;
static String dbPath;
static String databaseName = "kelimeDB";
final Context context;
public Database(Context context){
super(context,databaseName,null,1);
dbPath = context.getFilesDir().getParent() + "/databases/";
this.context = context;
}
public void CreateDatabase(){
boolean dbExists = checkDatabase();
if (!dbExists){
this.getReadableDatabase();
try{
copyDatabase();
}
catch (Exception e){
Log.w("hata","Veritabanı kopyalanamıyor");
throw new Error("Veritabanı kopyalanamıyor");
}
}
}
//Veritabanı daha önce oluşturulmuş mu oluşturulmamış mı bunu öğrenmek için yazılan method
boolean checkDatabase(){
SQLiteDatabase checkDB = null;
try{
String myPath = dbPath + databaseName;
checkDB = SQLiteDatabase.openDatabase(myPath,null,SQLiteDatabase.OPEN_READONLY);
}
catch (Exception e){
Log.w("hata","Veritabanı açılamadı");
}
if (checkDB != null){checkDB.close();}
return checkDB != null ? true : false;
}
//Assest dizinine koyduğumuz sql dosyasındaki verileri kopyalıyoruz
void copyDatabase(){
try{
InputStream myInput = context.getAssets().open(databaseName);
String outFileName = dbPath + databaseName;
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();
myInput.close();
myOutput.close();
}
catch (Exception e){
Log.w("hata","Kopya oluşturma hatası");
}
}
//Veritabanı açma işlemi yapılıyor
void openDatabase(){
String myPath = dbPath + databaseName;
db = SQLiteDatabase.openDatabase(myPath,null,SQLiteDatabase.OPEN_READWRITE);
}
@Override
public synchronized void close(){
if (db != null && db.isOpen()){
db.close();
super.close();
}
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) { }
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { }
public void kelimeEkleBaslangic(String kelimeTr,String kelimeEng,int kelimeGrupId){
this.close();
this.openDatabase();
SQLiteDatabase database = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("kelimeTr",kelimeTr);
values.put("kelimeEng",kelimeEng);
values.put("kelimeGrupId",kelimeGrupId);
database.insert("baslangicKelimeListesi",null,values);
database.close();
}
public void kelimeEkleOrta(String kelimeTr,String kelimeEng,int kelimeGrupId){
this.close();
this.openDatabase();
SQLiteDatabase database = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("kelimeTr",kelimeTr);
values.put("kelimeEng",kelimeEng);
values.put("kelimeGrupId",kelimeGrupId);
database.insert("ortaKelimeListesi",null,values);
database.close();
}
public void kelimeEkleIleri(String kelimeTr,String kelimeEng,int kelimeGrupId){
this.close();
this.openDatabase();
SQLiteDatabase database = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("kelimeTr",kelimeTr);
values.put("kelimeEng",kelimeEng);
values.put("kelimeGrupId",kelimeGrupId);
database.insert("ileriKelimeListesi",null,values);
database.close();
}
}
106
Görüntülenme
0 Beğeni