Harici SQLite Veritabanını Cihaza Kopyalama

Merhabalar. Bu yazımda Android için dışarıdan dahil edilecek SQLite veritabanını nasıl cihazınıza kopyalayacağınızı ve bu veritabanıyla nasıl işlemler yapabileceğinizi anlatmaya çalışacağım.

Öncelikle şunu belirteyim kopyalama yapmak için internette hem türkçe hem de ingilizce olmak üzere oldukça fazla döküman ve kod bulabilirsiniz. Hatta Türkçe kaynak olarak Tuğba Üstündağ‘ın blogundaki şu yazısına göz atabilirsiniz. Ama biz bu kodları kullanmayacağız. Yani aslında arka planda çalışacak olan kodlar bunlar olacak ama asıl bu yazınında konusu olan benim kendi geliştirmiş olduğum open source kütüphane sayesinde daha az kodla haşır neşir olarak işimizi biraz daha kolaylaştıracağız. Açıkçası kütüphaneyi geliştirmemdeki amaç tamamiyle kendi tembelliğimden kaynaklıydı. Sürekli aynı kodları kopyala yapıştır yapmaktan bıkıp bir süre sonra kendi class larımla çalışmaya başladım sonra o classlar kütüphane haline geldi ve şimdide open source olarak Github hesabımda yayınladım. Katkıda bulunmak isterseniz bir forkunuzu alırım 🙂

Neyse çok uzattım. Şimdi gelelim bu şirin kütüphanenin kullanımına. Tabiki öncelikle elinizde harici bir SQLite veritabanı olmak zorunda. Eğer veritabanını ilk kez oluşturup içini botla ya da elinizle bir şekilde dolduracaksanız üstte verdiğim blog yazısında bu kısım oldukça detaylı anlatılmış oradan yararlanabilirsiniz.

Şimdi elinizde bir veritabanınız olduğunu varsayarak işlemlere başlıyoruz.

Öncelikle assets klasörünü oluşturup içerisine veritabanı dosyamızı yerleştiriyoruz.

Daha sonra projemizin build.gradle dosyasına aşağıdaki kodları dahil edip üstte çıkan Sync Now tıklıyoruz.

dependency kısmınada aşağıdaki kodu ekliyoruz.

Böylelikle kütüphaneyi projemize dahil etmiş olduk. Şimdide alttaki gibi kendi oluşturacağınız DatabaseHelper classını CopyDatabase classından extends ediyoruz.

Burada TABLE_NAME veritabanınız içerisinde bulunan tablo yada tabloların isimleri olmalıdır. Üstteki kodda tablo adını herhangi bir yerde kullanmadık ama şuradaki örneği incelerseniz tablodan veri çekmek için tablo adını kullandığımızı göreceksiniz.
BaseColumns classınada tablonuzdaki kolon isimlerini yazmalısınız. Her bir kolon için ayrı ayrı değişkenler tanımlamayarak bu işlemi gerçekleştirmelisiniz.

Son adımda yapacağımız şey ise kullanılacak activity içerisinde daha önceden oluşturduğumuz DatabaseHelper classından bir nesne türetip bunun createDatabase() ve openDatabase() metodlarını kullanmak olacak.

Üstteki kodda şuna dikkat çekmek istiyorum. "YOUR_DB_NAME" kısmı kesinlikle assets klasörüne koymuş olduğunuz veritabanını adı olmalıdır eğer veritabanı uzantı içerisiyorsa uzantısıyla birlikte yazmalısınız.

Örnek kullanım için şuradaki kodları inceleyebilirsiniz.

İşte hepsi bu kadar. Umarım faydalı olmuştur.
Haydi kalın sağlıcakla. Starlanızı eksik etmeyin 🙂

2 Comments

  1. Error:Execution failed for task ‘:app:processDebugManifest’.
    merhaba – Sdk uyumsuzluğu ile ilgili bir hata verdi. nasıl giderebilirim.

    > Manifest merger failed : uses-sdk:minSdkVersion 9 cannot be smaller than version 10 declared in library [com.github.emrekose26:CopyExternalDB:1.0.1] C:\Users\Selim\AndroidStudioProjects\Veritabani_islemler\app\build\intermediates\exploded-aar\com.github.emrekose26\CopyExternalDB\1.0.1\AndroidManifest.xml
    Suggestion: use tools:overrideLibrary=”com.emrekose.copyexternaldb” to force usage

    1. Projenizin gradle dosyasındaki minSdkVersion 9 sanırım. Onu kütüphane ile uyumlu çalışmak için 10 yapın. Sorun düzelecektir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.