Pythontr

husonet | Tarih: 29.07.2015

Android SQlite Database İşlemleri

Android SQlite Database Select, Insert, Update, Delete işlemleri

SQlite mobil cihazların ihtiyacını görebilecek en uygun çözüm diyebiliriz. Android yüklü bütün cihazlarda tercih edilmesinin sebebleri ise default olarak yüklü gelmesi, çok fazla yer kaplamaması ve performans açısından çok iyi olmasıdır.


Android ile SQlite bağlantı işlemleri, tablo oluşturma, tabloya ekleme, tablodan düzenleme ve taabloyu silme işlemlerinin örneklenmesi.



package database;

import java.util.ArrayList;
import java.util.HashMap;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class Database extends SQLiteOpenHelper {

private static final int DATABASE_VERSION = 1; // buradaki versiyon numarası değiştirilirse databasedeki update methodu devriye ve blok içindeki kodlar işler
private static final String DATABASE_NAME = "pythontr";

private static final String TABLE_NAME = "TEST"; // tablo adı

private static String ID = "ID"; // bu ve allta yer alan tanımlamalar field tanımlamalarıdır.
private static String U_ID = "U_ID";
private static String KATEGORI_ID = "KATEGORI_ID";
public static String METIN = "METIN";
private static String LINK = "LINK";

public Database(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

onCreate methodu Database sınıfından nesne oluşturulduğu zaman devreye girer.



@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " ("
+ ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ U_ID + " INTEGER,"
+ KATEGORI_ID + " INTEGER,"
+ METIN + " TEXT,"
+ LINK + " TEXT" + ")";
db.execSQL(CREATE_TABLE);
}

{reklam}

Database versiyon numarasını değiştirirseniz onUpgrade methodu çalıştırılacaktır örnek olması açısından sadece drop işlemi yaptım DROP işleminde varolan dataların kaldırılacağını unutmamalısınız.



@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXIST TEST;");

onCreate(db);

}

Tablodan kayıt silme işlemi için hazırlanan bir örnek



public void testSil(int id) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_NAME, ID + " = ? ", new String[]{String.valueOf(id)});
db.close();
}

Tablodan kayıt ekleme işlemi için hazırlanan bir örnek



public void testEkle(int sU_id, int sKategori_id, String sMetin, String sLink) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(U_ID, sU_id);
values.put(KATEGORI_ID, sKategori_id);
values.put(METIN, sMetin);
values.put(LINK, sLink);
db.insert(TABLE_NAME, null, values);
db.close();
}

Tablodan sadece tek bir kayıt okuma işlemi için yapılan bir örnek



public HashMap<String, String> testOku(int id) {
HashMap<String, String> test = new HashMap<String, String>();
String selectQuery = "SELECT * FROM " + TABLE_NAME + " WHERE ID="+ id;

SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);

cursor.moveToFirst();
if (cursor.getCount()<0) {
test.put(U_ID, cursor.getString(1));
test.put(KATEGORI_ID, cursor.getString(2));
test.put(METIN, cursor.getString(3));
test.put(LINK, cursor.getString(4));
}

cursor.close();
db.close();

return test;
}

Tablodan sadece liste halinde kayıt okuma işlemi için hazırlanan bir örnek



public ArrayList<HashMap<String, String>> testListe() {
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT * FROM " + TABLE_NAME;
Cursor cursor = db.rawQuery(selectQuery, null);
ArrayList<HashMap<String, String>> testlist = new ArrayList<HashMap<String, String>>();
if (cursor.moveToFirst()) {
do {
HashMap<String, String> map = new HashMap<String, String>();
for (int i = 0; i <= cursor.getColumnCount()-i; i++) {
map.put(cursor.getColumnName(i), cursor.getString(i));
}
testlist.add(map);
} while (cursor.moveToNext());
}
db.close();
return testlist;
}

Tablodan sadece liste halinde kayıt update işlemi için hazırlanan bir örnek


	
public void testDuzenle(int id, int sU_id, int sKategori_id, String sMetin, String sLink){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(U_ID, sU_id);
values.put(KATEGORI_ID, sKategori_id);
values.put(METIN, sMetin);
values.put(LINK, sLink);
db.update(TABLE_NAME, values, ID + " = ? ", new String[]{String.valueOf(id)});
db.close();
}


Database class ımızı oluşturduk. Şimdi bu sınıftan oluşturulmuş bir nesne oluşturalım ve kullanalım.


Aktivity için gloabal bir sınıf değişkeni tanımlaması yapalım.


private Database db;

Database sınıfından nesnemizi oluşturalım.


db = new Database(this);

Veri ekleme methodumuzu çağırarak Test tablomuza bir adet veri ekleyelim.


db.testEkle(1, "test.jpg", "deneme", "http://www.pythontr.com");

Veri listeleme methodumuzu çağırarak Test tablomuzun içeriğini çağırma örneğine bakalım


ArrayList<HashMap<String, String>> myArrayList;
myArrayList = db.testListe();
System.out.println(myArrayList.get(0).get(Database.METIN));