Android SQLite Veritabanı Eklemek uygulama verilerini cihazda saklamak için başvurulacak en iyi yollardan birisidir.
Android uygulamalarınız içerisinde veritabanı oluşturma silme gibi işlemleri yerine getirmek oldukça kolaydır.Fakat dışarıdan oluşturduğunuz hazır bir veri tabanını projenizde kullanmak istediğinizde aklınızda bir soru işareti oluşabilir.Dışarıdan bir veri tabanı kullanmak ise çok daha kolaydır.İlk olarak bir sınıf oluşturacağız ve bu sınıfımız veritabanına bağlanacak, diğer oluşturduğumuz sınıfımız ise veritabanı üzerinde CRUD dediğimiz silme, ekleme, güncelleme gibi işlemleri yapacak.
Veritabanını sqlite dosyamızı projemiz içerisindeki Assets klasörüne kopyalamanız gerekmekte, bu dizindeki dosya uygulamayı yürüten cihaz üzerindeki yerel hafıza içerisine kopyalanacaktır.Veritabanı dizini ve veritabanı ismini uygulamanıza göre güncellemeyi unutmayın.
package mesutpiskin.com.uygulama; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import android.content.Context; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class Veritabani extends SQLiteOpenHelper { private static final int VERSION = 1; private static String DB_PATH = "/data/data/mesutpiskin.com.uygulama/databases/"; private static String DB_NAME = "veritabaniadi"; private final Context myContext; private SQLiteDatabase myDataBase; public Veritabani(Context context) { super(context, DB_NAME, null, 1); this.myContext = context; } public void createDataBase() throws IOException{ System.out.println("create database"); boolean dbExist = checkDataBase(); if(dbExist){ }else{ this.getReadableDatabase(); try { copyDataBase(); } catch (IOException e) { throw new Error("Error copying database"); } } } private boolean checkDataBase(){ File dbFile = myContext.getDatabasePath(DB_NAME); return dbFile.exists(); } private void copyDataBase() throws IOException{ System.out.println("copy database"); InputStream myInput = myContext.getAssets().open(DB_NAME); String outFileName = DB_PATH + DB_NAME; //Open the empty db as the output stream OutputStream myOutput = new FileOutputStream(outFileName); byte[] buffer = new byte[1024]; int length; while ((length = myInput.read(buffer))>0){ myOutput.write(buffer, 0, length); } //Close the streams myOutput.flush(); myOutput.close(); myInput.close(); } public void openDataBase() throws SQLException{ //Open the database String myPath = DB_PATH + DB_NAME; myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); } @Override public synchronized void close() { if(myDataBase != null) myDataBase.close(); super.close(); } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } }
Şimdi bir sınıf daha yazalım ve bu sınıf ile de sorgu işlemlerimizi yapabilelim.
package mesutpiskin.com.uygulama; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.renderscript.Sampler; import android.widget.Toast; import java.io.IOException; public class Crud { Veritabani veritabanim; //Database üzerinde sorgu yurutur public void sorguYurut(String query,Context context) { try { veritabanim=new Veritabani(context); veritabanim.createDataBase(); } catch (IOException e) { e.printStackTrace(); } SQLiteDatabase myDb=veritabanim.getWritableDatabase(); myDb.execSQL(query); } //veri ekler public void veriEkle(String tableName,Context context,ContentValues values) { try { veritabanim=new Veritabani(context); veritabanim.createDataBase(); } catch (IOException e) { e.printStackTrace(); } SQLiteDatabase myDb=veritabanim.getWritableDatabase(); myDb.insert(tableName,null,values); myDb.close(); } //veri güncelle public void veriGuncelle(String tableName,Context context,ContentValues values,int guncellenecekId) { try { veritabanim=new Veritabani(context); veritabanim.createDataBase(); } catch (IOException e) { e.printStackTrace(); } SQLiteDatabase myDb=veritabanim.getWritableDatabase(); myDb.update(tableName, values, "id=" + guncellenecekId, null); myDb.close(); } //Tekbir veri getir public String tekveriGetir(String getirilecekId,Context context,String kolon,String tablo) { try { veritabanim=new Veritabani(context); veritabanim.createDataBase(); } catch (IOException e) { e.printStackTrace(); } SQLiteDatabase SQLiteDatabaseInstance_=veritabanim.getWritableDatabase(); Cursor cursor = null; String empName = ""; try{ cursor = SQLiteDatabaseInstance_.rawQuery("SELECT "+kolon+" FROM "+tablo+" WHERE id="+getirilecekId,null); if(cursor.getCount() > 0) { cursor.moveToFirst(); empName = cursor.getString(cursor.getColumnIndex(kolon)); } return empName; }finally { cursor.close(); } } }