Android Sqlite Veritabanı İşlemleri

Veritabanı günümüz şartlarında uygulamaların vazgeçilmez bir katmanı, olmazsa olmazı konumunda.Özellikle mobil projelerde
istatistik, kullanıcı bilgileri gibi parametrik değerleri veritabanında tutuyoruz.Genel senaryoda mobil projeler tek
başına iş yapmıyor bu sebeple web servisler üzerinden çalışmayı sürdürüyor veritabanları sunucularda
barındırılıyor.Tabiki kullanıcının sürekli kullandığı bilgileri ve ya offline çalışma durumlarında localdeki bir
veritabanına ihtiyaç duyuyoruz.Bu durumda android üzerinde kullanılabilecek güçlü yapılardan biri Sqlite veritabanı
yapısı oluyor.

Sqlite android makina üzerinde çalışan direk erişim sağlanan bir veritabanı yapısı.Verdiği kolaylık ve avantajları
sayesinde kullanımı gayet uygun.Başka ne kullanabilirim soracak olursanız android üzerinden kullanabileceğiniz çok
alternatif mevcut.Üçüncü parti kütüphanelerle direk MySql,MsSql gibi veritabanlarına erişim yapabiliyorsunuz bunun
yanında online çözümler servislerde mevcut.Hiç birini istemiyorum derseniz ki bazı küçük tutulması gereken bilgiler için
xml,json formatlı text dosyalarında saklamanızda mümkün.

Bugün bu seçenekler içerisinden Sqlite veritabanını kullanacağız.Sqlite veritabanı kullanmak istediğimizde internet
üzerinde kullanıma ilişkin birçok içerik zaten mevcut.Burada bunlardan farklı olarak kendi helper sınıfımızla olabilecek en sade ve basit yapıda erişim sağlayacağız.

İlk olarak bir veritabanı dosyası eklememiz gerekiyor.Burada şöyle bir yapı mevcut varsayılan yolda belirtilen veritabanı dosyası yoksa bu veritabanını o yol içine oluşturuyor.

Veritabanı sınıfını SQLiteOpenHelper sınıfından türetiyoruz onCreate metodunda ise create işlemini gerçekleştiriyoruz.

// JAVA CODE

0
@Override
1
public void onCreate(SQLiteDatabase db) {
2
//veritabanının yaratıldıgı metod
3
String ogrencilerCreateString = "CREATE TABLE ogrenciler (” +
4
"id INTEGER PRIMARY KEY AUTOINCREMENT,” +
5
"adi TEXT,” +
6
"ogrenciNo TEXT” +
7
")”;
8
db.execSQL(ogrencilerCreateString);
9
}

onUpgrade metodunda ise tabloların güncelleme işlemlerini yapıyoruz.Bunlar türettiğimiz sınıfın override edilen metodları.

// JAVA CODE

0
@Override
1
public void onUpgrade(SQLiteDatabase db, int oldV, int newV) {
2
db.execSQL("DROP TABLE IF EXISTS ogrenciler”);
3
4
this.onCreate(db);
5
}

Bunların ardından veritabanı üzerinde temel Crud işlemlerimizi gerçekleştirebiliriz.Burada öğrenciler isimli tablo ve model sınıf yapısı bulunuyor.Aşağıda DatabaseHelperEx sınıfımızın tamamı bulunmaktadır.

// JAVA CODE

0
/**
1
2
* Created by oeren on 22.8.2016.
3
4
*/
5
6
public class DatabaseHelperEx extends SQLiteOpenHelper {
7
public static String databaseAdi = "ornek.sqlite”;
8
9
public DatabaseHelperEx(Context context) {
10
super(context, databaseAdi, null, 2);
11
}
12
13
@Override
14
public void onCreate(SQLiteDatabase db) {
15
//veritabanının yaratıldıgı metod
16
String ogrencilerCreateString = "CREATE TABLE ogrenciler (” +
17
"id INTEGER PRIMARY KEY AUTOINCREMENT,” +
18
"adi TEXT,” +
19
"ogrenciNo TEXT” +
20
")”;
21
db.execSQL(ogrencilerCreateString);
22
}
23
24
@Override
25
public void onUpgrade(SQLiteDatabase db, int oldV, int newV) {
26
db.execSQL("DROP TABLE IF EXISTS ogrenciler”);
27
28
this.onCreate(db);
29
}
30
31
public void ekleOgrenci(ogrenciModel ogrenci) {
32
String TAG = "ekleOgrenci”;
33
SQLiteDatabase db = this.getWritableDatabase();
34
Log.d(TAG, ogrenci.toString());
35
36
ContentValues cv = new ContentValues();
37
cv.put("adi”, ogrenci.getAdi());
38
cv.put("ogrenciNo”, ogrenci.getOgrenciNo());
39
40
db.insert("ogrenciler”, null, cv);
41
db.close();
42
}
43
44
public void guncelleOgrenci(ogrenciModel ogrenci) {
45
String TAG = "guncelleOgrenci”;
46
SQLiteDatabase db = this.getWritableDatabase();
47
Log.d(TAG, ogrenci.toString());
48
49
ContentValues cv = new ContentValues();
50
cv.put("adi”, ogrenci.getAdi());
51
cv.put("ogrenciNo”, ogrenci.getOgrenciNo());
52
53
db.update("ogrenciler”, cv, "id=?”, new String[]{String.valueOf(ogrenci.getId())});
54
db.close();
55
}
56
57
public void silOgrenci(ogrenciModel ogrenci) {
58
String TAG = "silOgrenci”;
59
SQLiteDatabase db = this.getWritableDatabase();
60
Log.d(TAG, ogrenci.toString());
61
62
db.delete("ogrenciler”, "id=?”, new String[]{String.valueOf(ogrenci.getId())});
63
}
64
65
public List getirOgrenciler() {
66
String TAG = "getirOgrenciler”;
67
SQLiteDatabase db = this.getWritableDatabase();
68
69
List ogrenciler = new ArrayList<>();
70
71
String query = "select id,adi,ogrenciNo from ogrenciler&#8221;;
72
Cursor c = db.rawQuery(query, null);
73
ogrenciModel ogrenci = null;
74
if (c.moveToFirst()) {
75
do {
76
ogrenci = new ogrenciModel();
77
ogrenci.setId(c.getInt(0));
78
ogrenci.setAdi(c.getString(1));
79
ogrenci.setOgrenciNo(c.getString(2));
80
81
ogrenciler.add(ogrenci);
82
83
Log.d(TAG, ogrenci.toString());
84
} while ((c.moveToNext()));
85
}
86
87
return ogrenciler;
88
}
89
}

ogrenciModel isimli model sınıfı ise şu şekildedir.

 

// JAVA CODE

0
/**
1
2
* Created by oeren on 22.8.2016.
3
4
*/
5
6
public class ogrenciModel {
7
private String adi;
8
private String ogrenciNo;
9
private int id;
10
11
public ogrenciModel() {
12
}
13
14
public ogrenciModel(String adi, String ogrenciNo) {
15
super();
16
this.adi = adi;
17
this.ogrenciNo = ogrenciNo;
18
}
19
20
public String getAdi() {
21
return this.adi;
22
}
23
24
public String getOgrenciNo() {
25
return this.ogrenciNo;
26
}
27
28
public int getId() {
29
return id;
30
}
31
32
public void setId(int id) {
33
this.id = id;
34
}
35
36
public void setAdi(String adi) {
37
this.adi = adi;
38
}
39
40
public void setOgrenciNo(String ogrenciNo) {
41
this.ogrenciNo = ogrenciNo;
42
}
43
44
@Override
45
public String toString() {
46
return "ogrenci [adi:&#8221; + adi + ",ogrenciNo:&#8221; + ogrenciNo + "]&#8221;;
47
}
48
}

Artık veritabanı üzerinde işlemler yapabiliriz.Activity sınfında bu sınıfa erişip ekleme,silme,güncelleme ve listeleme işlemlerini kolay bir yol ile yapabiliyoruz.Örnek olarak activity sınıfı ise şu şekildedir.

// JAVA CODE

0
public class MainActivity extends AppCompatActivity {
1
private DatabaseHelperEx db;
2
3
@Override
4
protected void onCreate(Bundle savedInstanceState) {
5
super.onCreate(savedInstanceState);
6
setContentView(R.layout.activity_main);
7
db = new DatabaseHelperEx(this);
8
9
ogrenciModel ogrenci = new ogrenciModel();
10
ogrenci.setAdi("okan&#8221;);
11
ogrenci.setOgrenciNo("1A3&#8221;);
12
db.ekleOgrenci(ogrenci);
13
14
ogrenci = new ogrenciModel();
15
ogrenci.setAdi("berk&#8221;);
16
ogrenci.setOgrenciNo("2df3&#8221;);
17
db.ekleOgrenci(ogrenci);
18
19
List ogrenciler = db.getirOgrenciler();
20
if (ogrenciler.size() > 0) {
21
ogrenciModel ilkOgrenci = ogrenciler.get(0);
22
ilkOgrenci.setAdi("eren&#8221;);
23
ilkOgrenci.setOgrenciNo("45789&#8221;);
24
db.guncelleOgrenci(ilkOgrenci);
25
}
26
}
27
}

Görüldüğü üzere database sınıfımızı örneklediğimizde istediğimiz metodlara kolayca erişebiliyoruz.Parametre olarak gönderdiğimiz modeller ise daha düzenli tertipli kod yazmak için ideal bir yapıdır.Gayet sade ve okunaklı olan bu örneği sizde kendi yapınıza göre çevirip kullanabilirsiniz.

 

One thought on “Android Sqlite Veritabanı İşlemleri

Bir Cevap Yazın

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