Skip to content

Commit

Permalink
GitBook: [master] 5 pages modified
Browse files Browse the repository at this point in the history
  • Loading branch information
yemreak authored and gitbook-bot committed Dec 28, 2019
1 parent f671738 commit 4f7b6a0
Show file tree
Hide file tree
Showing 5 changed files with 163 additions and 128 deletions.
5 changes: 4 additions & 1 deletion SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@
* [🌍 Global Değişkenler](temel/global-degiskenler.md)
* [🎪 Android'de Animasyonlar](temel/androidde-animasyonlar.md)
* [👨‍💼 Verilerin Yönetimi](veriler/README.md)
* [💾 Veri Saklama Yöntemleri](veriler/veri-saklama-yoentemleri.md)
* [🔸 Veri Saklama Yöntemleri](veriler/veri-saklama-yoentemleri.md)
* [👐 Shared Preference](veriler/shared-preference.md)
* [👐 Eski SharedPreference ile Veri Saklama](veriler/eski-sharedpreference-ile-veri-saklama.md)
* [🗃️ SQLite](veriler/sqlite.md)
* [💽 Room Database](veriler/room-database.md)
* [🌄 Arkaplan'da Çalışma](arkaplan/README.md)
* [🌠 MultiThreading](arkaplan/multithreading.md)
Expand Down
31 changes: 31 additions & 0 deletions veriler/eski-sharedpreference-ile-veri-saklama.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# 👐 Eski SharedPreference ile Veri Saklama

### Veri Oluşturma ve Alma

* `val veri= this.getSharedPreferences(this.packageName, android.content.Context.MODE_PRIVATE) // Veri kaydını değişkene atama`
* this.packageName : paket ismi \(com.... en üst satırdaki\)
* MODE\_PRIVATE : sadece benim uygulamamdan erişilebilirlik
* `var age1 = 30`
* `veri.edit().putInt("userAge", age1).apply() // Veriyi kaydetme`
* userAge : anahtar
* age1 : değer / değişken
* `val age2= veri.getInt("userAge", 0) // Kayıtlı veriyi alma`
* userAge : anahtar \(put'takini almak için aynı olmalı\)
* 0 : Eğer anahtar yoksa, varsayılan değer ataması
* `println("stored age : $storedAge") // veriyi gösterme`

### Veri Güncelleme

```text
age = 31
veri.edit().putInt("userAge", age).apply() // Daha önceden olan bir anahtarın üstüne kaydedilirse güncelleme olur.
```

### Veri Silme

* `veri.edit().remove("userAge").apply() // Veri silindi`
* userAge : silinecek anahtar
* `val age3 = veri.getInt("userAge", 0) // Veri olmadığı için age3 = 0 olacak.`
* userAge : anahtar
* 0 : varsayılan değer

12 changes: 12 additions & 0 deletions veriler/shared-preference.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
description: Telefonda Shared Preference yapısı ile veri saklama
---

# 👐 Shared Preference

##

{% embed url="https://stackoverflow.com/a/6276936/9770490" %}



102 changes: 102 additions & 0 deletions veriler/sqlite.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
---
description: Android üzerinde SQLite ile veri tabanı oluşturma
---

# 🗃️ SQLite

### SQLite Giriş Temelleri

İlk olarak try - catch yapısı kurulur ve olası sorunda programın kapanması engellenir.

```text
try {
...
}
catch (e : Exception){
e.printStackTrace()
}
```

> Bütün kodları `...` olan yere yazacağız. Artık başlayabiliriz.
### SQLite ile Basit DB Oluşturma

`database = openOrCreateDatabase("Datas", Context.MODE_PRIVATE, null)`

* "Datas" : Oluştumak istediğimiz database'in adı \("Veriler", "Hey", "hop" vb.\)
* Yazım kuralları gereği database adı büyük harfle başlamalı
* Context.MODE\_PRİVATE : Database'i private \(özel\) sadece bizim erişebileceğimiz halde kurmak.
* \(Context.MODE yazıp ALT+ SPACE yaparsanız detaylar çıkacaktır karşınıza\)
* null : CursorFactory

### SQLite DB Oluşturma Kodları

```text
try {
val database = openOrCreateDatabase("Datas", Context.MODE_PRIVATE, null)
database.execSQL("CREATE TABLE IF NOT EXIST datas (name VARCHAR, age INT(2)")
// INT(2) ile 2 rakam olacağını belli ediyoruz
} catch (e : Exception){
e.printStackTrace()
}
```

* `CREATE TABLE IF NOT EXITS` table oluşturma
* `datas` table ismi
* `VARCHAR` char
* `INT` Int

### SQLite DB İşlemleri Değiştirme

Temel yapısı `database.execSQL("...")` şeklindedir.

```text
database.execSQL("INSERT INTO datas (name, age) VALUES ('Yunus' , 21)") // Veri Ekleme
database.execSQL("INSEER INTO datas (name, age) VALUES ('Emre', 15") // Veri Ekleme
database.execSQL("UPDATE datas SET age = 21 WHERE name = 'Yunus") // Veri güncelleme
database.execSQL("DELETE FROM datas WHERE age = 15") // Veri silme
database.execSQL("SELECT FROM datas WHERE name = 'Yunus") // Yunus isimli olan dataları alır
database.execSQL("SELECT FROM datas WHERE name LIKE '%s'") // sonunda 's' harfi olanları alır
database.execSQL("SELECT FROM datas WHERE name LIKE 'y%") // başında 'y' harfi olanları alır
database.execSQL("SELECT FROM datas WHERE name LIKE '%u%") // içinde 'u' harfi olanları alır
```

* `INSERT INTO` Veri ekleme için SQL kodu
* `UPDATE` Veri güncelleme
* `SELECT` Veri seçme
* `datas` table ismi
* `name` değişken ismi
* `age` değişken ismi
* `VALUES` değerleri atamak için SQL kodu
* `'Yunus'` VARCHAR \(string\) tipindeki veri
* `21` INT\(2\) \(Int\) tipindeki veri

### SQLite DB Okuma

```text
if (database != null) {
val cursor = database!!.rawQuery("SELECT * FROM datas", null)
val nameIndex = cursor.getColumnIndex("name")
val ageIndex = cursor.getColumnIndex("age")
cursor.moveToFirst()
while (cursor != null){
println("İsim : ${cursor.getString(nameIndex)}" )
println("Yaş : ${cursor.getString(ageIndex)}")
cursor.moveToNext()
}
}
```

* `rawQuery(...)` SQL kodu ile veri alma
* `SELECT * FROM` Bütün verileri almak için SQL kodu
* `nameIndex` name sütünundaki verilerin indexi
* `ageIndex` age sütunundaki verilerin indexi
* `Cursor.moveToFirst()` Cursoru ilk elemana atıyoruz
* `Cursor.getString()` İstenen indexteki string olarak döndürür.
* `Cursor.moveToNext()` cursoru bir sütün aşağı indirme

141 changes: 14 additions & 127 deletions veriler/veri-saklama-yoentemleri.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,138 +2,25 @@
description: Android üzerinde verileri kaydetme
---

# 💾 Veri Saklama Yöntemleri
# 🔸 Veri Saklama Yöntemleri

## 👐 SharedPreference ile Veri Saklama
## 🆚 Shared Preference vs Saved Instance State

### Veri Oluşturma ve Alma
| 👐 Shared Preference | 💾 Saved Instance State |
| :--- | :--- |
| Uygulama hatta cihaz kapatılsa dahi veriler korunur | Sadece Activity üzerinde verileri saklar |
| Temel veriler için kullanılır | Anlık veriler için tercih edilir |
| Az sayıda anahtar / değer çifti ile saklanır | Az sayıda anahtar / değer çifti ile saklanır |
| Veriler uygulamaya özgüdür \(gizli\) | Veriler uygulamaya özgüdür \(gizli\) |
| Genellikle kullanıcı tercihleri için kullanılır | Cihazın yapılandırma ayarlarında veri kaybını engellemek için kullanılır |

* `val veri= this.getSharedPreferences(this.packageName, android.content.Context.MODE_PRIVATE) // Veri kaydını değişkene atama`
* this.packageName : paket ismi \(com.... en üst satırdaki\)
* MODE\_PRIVATE : sadece benim uygulamamdan erişilebilirlik
* `var age1 = 30`
* `veri.edit().putInt("userAge", age1).apply() // Veriyi kaydetme`
* userAge : anahtar
* age1 : değer / değişken
* `val age2= veri.getInt("userAge", 0) // Kayıtlı veriyi alma`
* userAge : anahtar \(put'takini almak için aynı olmalı\)
* 0 : Eğer anahtar yoksa, varsayılan değer ataması
* `println("stored age : $storedAge") // veriyi gösterme`
{% hint style="info" %}
‍🧙‍♂ Detaylar için [Shared preferences vs. saved instance state](https://google-developer-training.github.io/android-developer-fundamentals-course-concepts-v2/unit-4-saving-user-data/lesson-9-preferences-and-settings/9-1-c-shared-preferences/9-1-c-shared-preferences.html#whentouse) alanına bakabilirsin.
{% endhint %}

### Veri Güncelleme
## 🆚 Shared Preference vs Database

```text
age = 31
veri.edit().putInt("userAge", age).apply() // Daha önceden olan bir anahtarın üstüne kaydedilirse güncelleme olur.
```

### Veri Silme

* `veri.edit().remove("userAge").apply() // Veri silindi`
* userAge : silinecek anahtar
* `val age3 = veri.getInt("userAge", 0) // Veri olmadığı için age3 = 0 olacak.`
* userAge : anahtar
* 0 : varsayılan değer

## 📂 SQLite ile Database Oluşturma

### SQLite Giriş Temelleri

İlk olarak try - catch yapısı kurulur ve olası sorunda programın kapanması engellenir.

```text
try {
...
}
catch (e : Exception){
e.printStackTrace()
}
```

> Bütün kodları `...` olan yere yazacağız. Artık başlayabiliriz.
### SQLite ile Basit DB Oluşturma

`database = openOrCreateDatabase("Datas", Context.MODE_PRIVATE, null)`

* "Datas" : Oluştumak istediğimiz database'in adı \("Veriler", "Hey", "hop" vb.\)
* Yazım kuralları gereği database adı büyük harfle başlamalı
* Context.MODE\_PRİVATE : Database'i private \(özel\) sadece bizim erişebileceğimiz halde kurmak.
* \(Context.MODE yazıp ALT+ SPACE yaparsanız detaylar çıkacaktır karşınıza\)
* null : CursorFactory

### SQLite DB Oluşturma Kodları

```text
try {
val database = openOrCreateDatabase("Datas", Context.MODE_PRIVATE, null)
database.execSQL("CREATE TABLE IF NOT EXIST datas (name VARCHAR, age INT(2)")
// INT(2) ile 2 rakam olacağını belli ediyoruz
} catch (e : Exception){
e.printStackTrace()
}
```

* `CREATE TABLE IF NOT EXITS` table oluşturma
* `datas` table ismi
* `VARCHAR` char
* `INT` Int

### SQLite DB İşlemleri Değiştirme

Temel yapısı `database.execSQL("...")` şeklindedir.

```text
database.execSQL("INSERT INTO datas (name, age) VALUES ('Yunus' , 21)") // Veri Ekleme
database.execSQL("INSEER INTO datas (name, age) VALUES ('Emre', 15") // Veri Ekleme
database.execSQL("UPDATE datas SET age = 21 WHERE name = 'Yunus") // Veri güncelleme
database.execSQL("DELETE FROM datas WHERE age = 15") // Veri silme
database.execSQL("SELECT FROM datas WHERE name = 'Yunus") // Yunus isimli olan dataları alır
database.execSQL("SELECT FROM datas WHERE name LIKE '%s'") // sonunda 's' harfi olanları alır
database.execSQL("SELECT FROM datas WHERE name LIKE 'y%") // başında 'y' harfi olanları alır
database.execSQL("SELECT FROM datas WHERE name LIKE '%u%") // içinde 'u' harfi olanları alır
```

* `INSERT INTO` Veri ekleme için SQL kodu
* `UPDATE` Veri güncelleme
* `SELECT` Veri seçme
* `datas` table ismi
* `name` değişken ismi
* `age` değişken ismi
* `VALUES` değerleri atamak için SQL kodu
* `'Yunus'` VARCHAR \(string\) tipindeki veri
* `21` INT\(2\) \(Int\) tipindeki veri

### SQLite DB Okuma

```text
if (database != null) {
val cursor = database!!.rawQuery("SELECT * FROM datas", null)
val nameIndex = cursor.getColumnIndex("name")
val ageIndex = cursor.getColumnIndex("age")
cursor.moveToFirst()
while (cursor != null){
println("İsim : ${cursor.getString(nameIndex)}" )
println("Yaş : ${cursor.getString(ageIndex)}")
cursor.moveToNext()
}
}
```

* `rawQuery(...)` SQL kodu ile veri alma
* `SELECT * FROM` Bütün verileri almak için SQL kodu
* `nameIndex` name sütünundaki verilerin indexi
* `ageIndex` age sütunundaki verilerin indexi
* `Cursor.moveToFirst()` Cursoru ilk elemana atıyoruz
* `Cursor.getString()` İstenen indexteki string olarak döndürür.
* `Cursor.moveToNext()` cursoru bir sütün aşağı indirme
{% embed url="https://stackoverflow.com/a/9606629/9770490" %}

## 📜 JSON Verilerini İşleme

{% embed url="https://stackoverflow.com/a/9606629/9770490" %}

0 comments on commit 4f7b6a0

Please sign in to comment.