makaleler / Diğer Konular / Android SQlite Database İşlemleri

Android SQlite Database İşlemleri

29.07.2015 17:06:11

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);
	}

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", "[url]http://www.pythontr.com[/url]");

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));
yazar husonet

Yorumlar

Bu içerik için sizde yorum yapabilirsiniz!
anasayfa | makaleler | haberler | dosyalar | linkler | hakkımızda