Android ile SQLLite Veri Tabanı Android de verileri SQLLite veritabanında tutmak için: Adım-1) File-New Project buradan projeye bir isim verelim ( örneğin: AndroidSQLite), Next ile bir sonraki adımda API level seçelim ( Örneğin aşağıdaki şekildeki gibi : API 16: Android 4.1 (Jely Bean) ). Next ile bir sonraki adımda Blank Activity seçerek projeyi oluşturalım. Şekil-1 Adım-2) Şekil-2 deki gibi proje bir adet Class ekleyelim. Bunun için Java-sağ klik- new- Java Class buradan Class adı verelim (Örneğin: SQLiteHelper ismi verebilirsiniz) OK deyince karşımıza şu şekilde bir Class oluşacaktır. package com.example.m.myapplication; public class SQLiteHelper Şekil-2 Adım-3)Oluşturduğumuz class a aşağıdaki SQLiteOpenHelper class ından extends (türetme) yapalım Şekil- 3. SQLiteOpenHelper clasının iki adet implementi vardır. Bunun için Şekil-3 deki işareti üzerine gelip aşağı ok klikleyince Şekil-4 deki ekran gelir. Buradan Implement methods seçtiğimizde Şekil-5 gelir. Buradan OK klikleyince kodumuz Şekil-6 daki gibi olacaktır. Ancak hala kodda hata belirtisi görülmektedir. Bunun için oluşturduğumuz SQLiteHelper classına bir constructure (yapıcı) metod ekleyip içine super() metodu koymalıyız. Böylece kodumuz. Liste-1 deki gibi olacaktır. Şekil-3
Şekil-4 Şekil-5 Şekil-6
Liste-1: package com.example.m.myapplication; import android.content.context; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteopenhelper; public class SQLiteHelper extends SQLiteOpenHelper //yapıcı metor SQLiteHelper (Context context) super(context,"veritabanı adı", null, "veritabanıversiyon numarası"); public void oncreate(sqlitedatabase db) public void onupgrade(sqlitedatabase db, int oldversion, int newversion) Adım-4) Liste-1 deki constructure metod (SQLiteHelper (Context context) ) içindeki super() metodu içinde veritabanı bilglerini yazarız; burada veri tabanı adı ve veritabanı versiyon numarası (1,2,3 gibi) bilgileri verilmelidir. Örneğin veritabanı adı : OgrDB ve versiyon numarası 1 verilirse constructure metod aşağıdaki gibi olur. //yapıcı metor SQLiteHelper (Context context) super(context,"ogrdb", null, 1); Adım-5) SQLiteHelper class ı içinde implement olan oncreate() metodu içine tablo oluşturalım. Burada OgrTable isimli tablo oluşacaktır. id num adsoy public void oncreate(sqlitedatabase db) db.execsql("create TABLE IF NOT EXISTS OgrTable(_id integer primary key autoincrement, num VARCHAR, adsoy Text);"); Adım-6) SQLiteHelper class ı içinde implement olan onupgrade() metodu içini aşağıdaki gibi düzenleyelim. public void onupgrade(sqlitedatabase db, int oldversion, int newversion) db.execsql("drop TABLE IF EXISTS OgrTable;"); db.execsql("create TABLE IF NOT EXISTS OgrTable(id integer primary key autoincrement, num VARCHAR, adsoy Text);");
Adım-6) SQLiteHelper class ı içine tabloya veri girme silme değiştirme listeleme gibi işlemlerin yapılabileceği metodları oluşturalım. İlk olarak tabloya veri girmek işlemini gerçekleştirelim: public void Ekle(String num, String adsoy) SQLiteDatabase db = this.getwritabledatabase(); db.execsql("insert INTO OgrTable (num, adsoy)values('+ num + ', + adsoy + );"); Adım-7) Tablodaki veriyi numaraya göre güncelleme (değiştirme) metodu: public void Degistir(String num, String adsoy) SQLiteDatabase db = this.getwritabledatabase(); db.execsql("upadte OgrTable set adsoy='+ adsoy + ' where num= + num + );"); Adım-8) Tablodaki veriyi numaraya göre silelim: public void Sil(String num) SQLiteDatabase db = this.getwritabledatabase(); db.execsql("delete from OgrTable where num= + num + );"); Adım-9) Tablodaki veriyi listeleyelim: public Cursor VeriGetir() SQLiteDatabase db = this.getreadabledatabase(); Cursor c = db.rawquery("select * FROM OgrTable;", null); return c;
Buraya kadar olan işlemler kendi oluşturduğumuz SQLiteHelper Classı ı içinde tanımladı. Bundan sonra bu verilerin kullanımı için MainActivity içerisinde yapacaklarımızı yazacağız. Adım-10) Datların görüneceği yeni bir ekran (layout) oluşturalım. Bunun için: res/layout- sağ klik new- Layout resources file buradan layout adı verelim ( örenğin: row_item). Ekrana numara ve adsoy bilgisini görüneceği ili adet TextView nesnesini aşağıdaki gibi yerleştirelim. row_item.xml dosyası içeriği aşağıdaki gibi olacaktır <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="100sp" android:layout_height="wrap_content" android:text="textview1" android:id="@+id/textview1"/> <TextView android:layout_width=" wrap_content" android:layout_height=" wrap_content" android:text="textview2" android:id="@+id/textview2""/> </LinearLayout> Adım-11) Ana Ekran (Activity) görüntüsü olan res/layout içindeki activity_main.xml içine bir adet ListView nesnesi sürükleyip bırakın. Burada dajha sonra Adım-10 daki tasarladığımız row_item listesi görünecek. activity_main.xml dosyasının içeriğini aşağıdaki gibi düzenleyiniz. Sadece ListView nesnesinde düzenleme yapacağız. Bunu id sini android:id="@+id/android:list" şeklindende belirleyelim <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" android:paddingbottom="@dimen/activity_vertical_margin" tools:context=".mainactivity">
<ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/android:list" /> </RelativeLayout> Adım-12) MainActivity Classını açalım ve içerisini aşağıdaki gibi düzenleyelim: Listele() fonksiyonu içinde db.ekle( 25, Ali Can ); şeklinde tabloya veri girişi yapılabilir. Şekil-8 deki gibi ListView da listelen kayıtlar zerine kliklenince seçilen kayıt bilgisi Toast() ile mesaj olark börülebildiği gibi başka amaçlar içinde kullaılabilir. public class MainActivity extends ListActivity SQLiteHelper db; SimpleCursorAdapter dataadapter; protected void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); db = new SQLiteHelper(this); Listele(); //Girilen bilgiler ListView da listelenir public void Listele() db.ekle( 25, Ali Can ); // Kayıt ekleme db.ekle( 19, Fatma Kara ); db.ekle( 27, Suzan Koc ); Cursor cursor=db.verigetir(); // Tüm kaytları getir //kayıtların ListeView da görünmesi için Simple Cursor adatpere ilişkilendirilmesi String []from = new String[] num, adsoy ; int [] to = new int[] R.id.textView1,R.id.textView2; dataadapter = new SimpleCursorAdapter(this, R.layout.row_item, cursor, from, to, 0); ListView lv = getlistview(); lv.setadapter(dataadapter); //ListView da üzerşnde kliklenen itemin gösterilmesi lv.setonitemclicklistener(new AdapterView.OnItemClickListener() public void onitemclick(adapterview<?> parent,view view,int position,long id) ListView listview = (ListView) parent; Cursor cursor = (Cursor) listview.getitematposition(position); String s = (cursor.getstring(cursor.getcolumnindex("num"))).tostring(); s += " " + (cursor.getstring(cursor.getcolumnindex("adsoy"))).tostring(); Toast.makeText(getBaseContext(), "" + s, Toast.LENGTH_SHORT).show(); ); //************************************************************
Şekil-8 Adım-13) Ekrana Silme, Değiştirme butonları konularak silme ve kayıt değiştirme metodları çağrılarak bu işlemler gerçekleştirilebilir. SİLME DEĞİŞTRİME : db.sil ( 19 ); //19 numaralı kayıt silinir : db.degistir ( 27, Semra Karakoc ); //27 numaralı kaydın bilgisi değişecektir