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
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
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.