MOBİL UYGULAMA GELİŞTİRME PELİN YILDIRIM FATMA BOZYİĞİT YZM 3214 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Bu Derste Veri Saklama 2
Veri Saklama Veri Saklama her appnin ihtiyaci App kapanırken kullanıcının bulunduğu son anı yada girdiği verirleri saklamak. Web servisten gelen verileri saklamak. Appnin veri tabanında bulunan verilere erişmek. 3
Veri Saklama Şekilleri Anahtar Kelime - Değer Kümeleri Dosyasında Küçük boyutlu verileri saklamak için kullanılır. Dosyaya saklamak Veritabanına saklamak SQLite DB 4
Anahtar Kelime - Değer Kümeleri Dosyasında -1 SharedPreferences, android platformunda basit verileri saklayabileceğimiz bir yapıdır. SharedPreferences a bir veri yazmak için Editor objesini oluşturmamız gerekiyor. Bu editor ü kullanarak SharedPreferences içine bir primitif veri yazıp okuyabiliriz. Bunu yaparken bir anahtar kelime vermemiz gerekiyor. http://developer.android.com/reference/android/content/sharedpreferences.html 5
6 Anahtar Kelime - Değer Kümeleri Dosyasında - 2
Anahtar Kelime - Değer Kümeleri Dosyasında - 3 Kaydettiğmiz verilere ihtiyacımız olduğunda aşağıdaki gibi erişebiliriz. İkinci parametre varsayılan değerler. Eğer daha önce böyle bir ayar dosyası kaydedilmemiş ise ikinci parametrede gönderdiğimiz değer döndürülür. 7
Anahtar Kelime - Değer Kümeleri Dosyasında - 4 Son olarak kaydedilmiş bir veriyi silmek istediğimizde aşağıdaki gibi remove metodunu çalıştırıp sonrasında commit etmemiz gerekiyor. 8
Anahtar Kelime - Değer Kümeleri - Örnek Örnek appnin kaynağı: http://www.tutorialspoint.com/android/android_shared_preferences.htm 9
Dosyaya Saklamak Baştan sona atlanmadan bütün bir dosya şeklinde ve büyük veriler okunacaksa kullanılır. resim (image) dosyası java.io.file API kullanılır. İç (Internal) ve dış (External) saklama ünitelerinden birine saklanır. 10
Dosyaya Saklamak 11 İç (Internal) Her zaman erişilebilir. Dosyalar sadece appniz tarafından erişilebilir. Appniz silindiğinde appnizin kullandığı (oluşturduğu) dosya da silinir. Dosyanızı yazmak ve okumak için herhangi bir izin tanımlamanız gerekmez. Dış (External) Her zaman erişilemeyebilir. Size özel değil, başka applerde dosyanızı okuyabilir. Paylaşmak istediğiniz dosyalar için iyi seçimdir. Dosyalar silinmez. Dosyanızı yazmak ve okumak için izin tanımlamanız gerekir.
Dosyaya Saklamak için İzin Dış (External) birime dosyanızı yazmak ve okumak için izin tanımlamak: <manifest...> <uses-permission android:name="android.permission.write_external_storage" /> /> <uses-permission android:name="android.permission.read_external_storage"... </manifest> 12
Dosyaya Saklamak - Dış Dış saklama biriminin erişim için müsait olup olmadığını kontrol etmek gerekiyor: public boolean isexternalstoragewritable() { String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { return true; } return false; } public boolean isexternalstoragereadable() { String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state) Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { return true; } return false; 13
Dosyaya Saklamak - Dış birimdeki dosya çeşitleri Dış birimdeki dosya çeşitleri public: herkesin erişimine açık (getexternalstoragepublicdirectory() kullanarak) private: sadece size ait ve app silindiğinde kendiliğinden silinen public File getalbumstoragedir(string albumname) { File file = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES), albumname); if (!file.mkdirs()) { Log.e(LOG_TAG, "Directory not created"); } return file; } 14
Dosyaya Saklamak - Boş yer ve Dosya Silmek Eğer yer kalmazsa IOException alırsınız. Bunu önlemek için yeriniz var mı kontrol edip emin olun: getfreespace() gettotalspace() Dosyalarınızı artık kullanmıyorsanız silmeniz gerekir. Özellikle geçici olarak yarattığınız dosyaları. myfile.delete(); //açılmış dosya üzerinde delete() metodunu çağırarak mycontext.deletefile(filename); // iç saklama biriminde ise kullanın 15
İç Birime Saklamak - Örnek Örnek appnin kaynağı: http://www.tutorialspoint.com/android/android_internal_storage.htm 16
SQLite Veritabanı ve SQL Android SQLite veritabanı için destek sağlar. SQLite az yer kaplayan, açık kaynak kodlu, ücretsiz veritabanıdır. http://www.sqlite.org/ Çabuk referans: http://www.sqlite.org/lang_select.html http://www.w3schools.com/sql/sql_quickref.asp 17
Veritabanı nedir? Relational (ilişkisel) veritabanında veriler tablolar halinde tutulur. Tablodaki herbir satıra kayıt denir ve kayıtları kolonlar oluşturur. Belli başlı veritabanları: Oracle Microsoft SQLServer(powerful) Access(simple) SQLite taşınabilir, ücretsiz, açık kaynaklı MySQL basit, ücretsiz, açık kaynaklı 18
İlişkisel Veritabanı Dizayn Örneği - Okul 19
İlişkisel Veritabanı - Tablo Yarat CREATE TABLE students ( id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL, email VARCHAR(32), password VARCHAR(16) NOT NULL DEFAULT "12345" ); 20
İlişkisel Veritabanı - Ekle, Güncelle ve Sil Kayıt Eklemek: INSERT INTO table (columnname,..., columnname) VALUES (value, value,..., value); Kayıt Güncellemek: UPDATE table SET column1 = value1,..., columnn = valuen WHERE condition; UPDATE students SET email = "lisasimpson@gmail.com" WHERE id = 888; Kayıt Sil: DELETE FROM table WHERE condition; DELETE FROM students WHERE id = 888; 21
Veritabanında Saklama Appde oluşturduğunuz her veritabanına app içindeki bütün class lardan erişilebilir fakat app dışından erişilemez. SQlite veritabanı iç saklama biriminde saklanır. Yeni bir veritabanını oluşturmanın tavsiye edilen yöntemi SQLiteOpenHelper sınıfının alt sınıfını oluşturmak ve bu alt sınıfta oncreate() metodunu yazmak. Böylece oncreate() metodu içinde veritabanındaki tabloları oluşturmak için SQLite komutları kullanılır. 22
Veritabanında Saklama - Örnek 23
Kaynaklar File storage: https://developer.android.com/training/basics/data-storage/files.html Android API: http://developer.android.com/reference/packages.html https://developer.android.com/tools/help/adb.html#sqlite Stanford Android Development Course http://web.stanford.edu/class/cs193a/lectures.shtml Udacity - Developing Android Apps (Google tarafından) https://www.udacity.com/course/viewer#!/c-ud853/l-1395568821/m- 1643858569 25
Sorularınız? 26