Cuma, Mart 29, 2024
Ana SayfaAndroidAndroid SQLite Kullanımı

Android SQLite Kullanımı

Android’e yeni başlayanların ilk başlarda çok zorlandığı Android SQLite Kullanımı anlatacağım arkadaşlar. İlk olarak SQLite ne olduğundan bahsedeyim sizlere; C/C++ programlama dilleriyle geliştirilmiş sunucu gereksinimi olmayan bir SQL veritabanı motorudur. SQLite, Richard Hipp tarafından 2000 yılında tasarlandı. O dönemde General Dynamics firmasında Amerikan Donanması için yapılan bir projede çalışan Hipp, bir veritabanı kurulumu ya da yönetim paneline ihtiyaç duymayan program yazmaya çalışırken SQLite’ı geliştirdi.
Anlayacağınız üzere SQLite bir veritabanı dır ancak hemen aklınıza MSSQL, MYSQL gibi dir diye düşünmeyin baş da da belirttiğim gibi sunucu gereksinimi olmayan ve paneli olmayan basit bir veritabanıdır. O yüzden SQLite’tı kullanmadan önce projeniz için saklayacağınız verilerin boyutları yüksek ise veya zamanla sürekli bilgi girişi ile saklanacak verinin boyutu artacak ise kesinlikle önermiyorum. Örneğin; Kullanıcı bilgileri, anlık bilgi notları yada anlık cache sistemi gibi şeylerde işinize çok yaracaktır.

Android SQLite Kullanımı

SQLiteBrowser

SQLiteBrowser ile SQLite veritabanlarının içerisinde yer alan verileri görüntüleye bilmemizi sağlayan bir program. SQLiteBrowser sayesinde, veritabanı üzerinde yaptığınız işlemlerin doğru sonuçlar verip vermediğini öğrenebiliriz, elinizdeki veritabanının içeriğinde hangi verilerin olduğunu düzenli bir şekilde görüntüleyebiliriz.
Bu programı indirmek için şu linke tıklayın ve işletim sisteminize en uygun olanı indirin :  SQLiteBrowser

1-) Giriş: Veritabanı ve Tablo Oluşturma

İlk olarak Android Studio açıp empty activity bir proje oluşturuyoruz. Projemiz oluştuktan sonra yeni bir class oluşturuyoruz, yeni class oluşturmak için izleyeceğiniz yol ise Package Name (Örnek : tr.net.sercancepni.sqlitekullanimi) sağ tıklayın > New > Java Class tıklayın.

Android Java Class Olusturma
Android Java Class Olusturma

Name kısmına class’ımızın adını yazıyoruz ben VeriTabani yazdım ( Lütfen Türkçe Karakter Kullanmayın Allah Adı Veriyom Artık 🙁 )
Android Java Class Olusturma 2
Android Java Class Olusturma 2

Android Java Class Olusturma 3
Android Java Class Olusturma 3

Şimdi Class’ımız oluştu ancak oluşan bu sınıf sade ve standart bir sınıf biz bunu SQLite sınıfına dönüştürmemiz lazım bunu yapmak içinde aşağıdaki gibi düzelteceğiniz ;

public class VeriTabani extends SQLiteOpenHelper {
}

Kod yazarken unutmayın SQLiteOpen… şeklinde yazarken kodu otomatik olarak bir pencere açılır ve yazacağınız kodun tam ismi çıkar çıkınca direk ENTER diyin böylelikle otomatik import gelir ve sorunla karşılaşmazsınız.

extends SQLiteOpenHelper
extends SQLiteOpenHelper

Ancak gördüğünüz gibi bir sorun var bu sorunu gidermek için SQLiteOpenHelper yazısına tılayın hemen sol tarafta kırmızı bir ampul çıkacak ona tıklayın ve aşağıdaki gibi sorunu çözmek için 2 adet öneri bulunacak ;
Implement Methods
Implement Methods

İlk seçenek olan Implement Methods tıklayın karşınıza oluşturmak zorunda olduğunuz iki adet method çıkartacak bunlar onCreate yani oluşturma method’u ve onUpgrade yani güncelleme method’u dur direk OK diyerek class’ımıza bu methodları ekleyelim.
Implement Methods
Implement Methods

Android Java Class Olusturma
Android Java Class Olusturma

Yukarıda gördüğünüz gibi methodlarımız class’ımıza dahil oldu ancak hata devam ediyor tekrardan SQLiteOpenHelper yazsına tıklayalım ve arkadasından çıkan kırmızı ampüle tıklayalım ;
Android Java Class Olusturma
Android Java Class Olusturma

Create constructor matching super hatasına tıklayalım ve karşımıza çıkan pencereden ilk method’a tıklayarak OK diyelim oluşturduğunuz class son hali aşağıdaki gibi ise şu ana kadar her şeyi düzgün yapmışsınız demektir.

Şimdi gelelim veri tabanımızı ve tablomuzu oluşturmaya ;

public class VeriTabani extends SQLiteOpenHelper {
 private static final String DATABASE_NAME = "musteriler";
 private static final int DATABASE_VERSION = 1;
 private static final String TABLO_KISILER = "kisiler";
 private static final String ROW_ID_ = "id";
 private static final String ROW_AD_ = "ad";
 private static final String ROW_SOYAD_ = "soyad";
 private static final String ROW_TEL_ = "tel";
 public VeriTabani(Context context) {
 super(context, DATABASE_NAME, null, DATABASE_VERSION);
 }
 @Override
 public void onCreate(SQLiteDatabase db) {
 }
 @Override
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 }
}

Veritabanımızı ve tablomuz için gerekli kısımlarını oluşturduk ve ayrıca Context de kendimize göre değiştirdik şimdi sıra geldi onCreate içerisinde tablomuzun yapısını oluşturmaya ;

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + TABLO_KISILER + "("
            + ROW_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
            + ROW_AD + " TEXT NOT NULL, "
            + ROW_SOYAD + " TEXT NOT NULL, "
            + ROW_TEL + " TEXT NOT NULL)");
}

Evet bu şekilde tablomuzu oluşturuyoruz arkadaşlar şuan sadece tek bir tablo oluşturdum eğer birden fazla tablonuz olacak ise ona göre eklemeleri yapabilirsiniz.

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLO_KISILER);
    onCreate(db);
}

Son olarak ta onUpgrade method’unuda yukarıda ki gibi düzenliyoruz.  Bunun amacı eğer daha öncede eski versiyona ait aynı isimde bir tablo varsa silip yerine yeni versiyondaki tabloyu oluşturmak. Oluşturduğumuz VeriTabani.java dosyamızın son hali aşağıdaki gibidir;

public class VeriTabani extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "musteriler";
    private static final int DATABASE_VERSION = 1;
    private static final String TABLO_KISILER = "kisiler";
    private static final String ROW_ID = "id";
    private static final String ROW_AD = "ad";
    private static final String ROW_SOYAD = "soyad";
    private static final String ROW_TEL = "tel";
    public VeriTabani(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + TABLO_KISILER + "("
                + ROW_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
                + ROW_AD + " TEXT NOT NULL, "
                + ROW_SOYAD + " TEXT NOT NULL, "
                + ROW_TEL + " TEXT NOT NULL)");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        onCreate(db);
    }
}

2-) Tasarım

Android SQLite Kullanımı için hazırladığım proje genel olarak kişileri SQLite kaydetmemizi sağlayacak o yüzden ona uygun olarak basit bir tasarım yaptım 3 adet editText 4 Adet Button 1 Adet ListView kullandım ;

Android SQLite Örnek Tasarım
Android SQLite Örnek Tasarım

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="tr.net.sercancepni.sqlitekullanimi.MainActivity">
    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:hint="İsim"
        android:ems="10"
        android:id="@+id/etAd"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />
    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:hint="Soyad"
        android:ems="10"
        android:id="@+id/etSoyad"
        android:layout_below="@+id/etAd"
        android:layout_alignStart="@+id/etAd" />
    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:hint="Telefon"
        android:ems="10"
        android:layout_below="@+id/etSoyad"
        android:layout_alignEnd="@+id/etSoyad"
        android:id="@+id/etTel" />
    <Button
        android:text="Kaydet"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="18dp"
        android:id="@+id/btnKaydet"
        android:layout_below="@+id/etTel"
        android:layout_toStartOf="@+id/etTel" />
    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/VeriListele"
        android:layout_below="@+id/btnKaydet"
        android:layout_alignParentStart="true"
        android:layout_marginTop="16dp"
        android:layout_alignParentBottom="true" />
    <Button
        android:id="@+id/btnListele"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Listele"
        android:layout_marginStart="10dp"
        android:layout_above="@+id/VeriListele"
        android:layout_toEndOf="@+id/btnKaydet" />
    <Button
        android:id="@+id/btnSil"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="11dp"
        android:text="Sil"
        android:layout_above="@+id/VeriListele"
        android:layout_toEndOf="@+id/btnListele" />
    <Button
        android:id="@+id/btnDuzenle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/btnSil"
        android:layout_marginStart="14dp"
        android:layout_toEndOf="@+id/btnSil"
        android:text="Düzenle" />
</RelativeLayout>

Kaydet dediğimiz de verilerimiz veritabanımıza kaydedilecek ayrıca veri tabanımızda kayıtlı verileri görmek içinde listele tuşuna basıldığında verilerimiz ListView gözükecek arkadaşlar.

3-) Veri Ekleme (INSERT)

Tasarım ile işimiz bittikten sonra sıra geldi veri ekleme işine, hemen aklınıza uzun uzun SQL sorguları gelmesin gerçekten çok kolay bir şekilde verilerimizi kaydedeceğiz bunu için VeriTabani.java class’ımızın içerisinde en sona veri ekleme methodu yazıyoruz ve doğal olarak try catch boluğu içerisinde yazıyoruz böylelikle eğer veritabanı bağlanıtsı sırasında bir sorun oluşursa uygulamanın kapanmasını önlemiş olacağız ;

public void VeriEkle(String ad, String soyad, String tel){
    SQLiteDatabase db = this.getWritableDatabase();
    try {
        ContentValues cv = new ContentValues();
        cv.put(ROW_AD, ad);
        cv.put(ROW_SOYAD, soyad);
        cv.put(ROW_TEL, tel);
        db.insert(TABLO_KISILER, null,cv);
    }catch (Exception e){
    }
    db.close();
}

Oluşturduğumuz bu method sayesinde, verilerimizi bu method gönderdiğimiz de kolayca veri tabanımıza kaydetmiş olacağız.
Sıra geldi MainActivity.java yapılacak işlemler ilk olarak tasarımımızda kullandığımız Widgets leri tanımlayalım ;

public class MainActivity extends AppCompatActivity {
    private EditText etAd,etSoyad,etTel;
    private Button btnKaydet, btnListele,btnSil,btnDuzenle;
    private ListView VeriListele;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        etAd = (EditText) findViewById(R.id.etAd);
        etSoyad = (EditText) findViewById(R.id.etSoyad);
        etTel = (EditText) findViewById(R.id.etTel);
        btnKaydet = (Button) findViewById(R.id.btnKaydet);
        btnListele = (Button) findViewById(R.id.btnListele);
        VeriListele = (ListView) findViewById(R.id.VeriListele);
        btnSil = (Button) findViewById(R.id.btnSil);
        btnDuzenle = (Button) findViewById(R.id.btnDuzenle);

Tanımlamaları yaptıktan sonra kaydet butonuna setOnClickListener yapalım ve kayıt için gerekli kodlarımızı yazalım ;

btnKaydet.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String gelenAd = etAd.getText().toString();
        String gelenSoyad = etSoyad.getText().toString();
        String gelenTel = etTel.getText().toString();
        VeriTabani vt = new VeriTabani(MainActivity.this);
        vt.VeriEkle(gelenAd, gelenSoyad, gelenTel);
    }
});

Arkadaşlar önemli bir notum olacak çoğu kişi takıldığı bir yer var oda şu hani biz onCreate method içerisinde tablomuzu oluşturduk ya şu şekilde ; 

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + TABLO_KISILER + "("
            + ROW_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
            + ROW_AD + " TEXT NOT NULL, "
            + ROW_SOYAD + " TEXT NOT NULL, "
            + ROW_TEL + " TEXT NOT NULL)");
}

Bu kısma dikkatlice bakarsanız eğer çift tırnakların başlangıç ve bitiş kısımlarında birer boşluk var eğer bu boşlukları koymaz iseniz tablonuz düzgün oluşmaz ve verilerinizi kaydedemezsiniz!!!!! Örnek hata ;

Gördüğünüz gibi hata da ad adında bir sütun tanımlanmamış gözüküyor boşlukları koymayı unuttuğunuzda adTEXT adında bir sütun oluşturmuş ve bu yüzdende verileri kaydetmemiş!!!!!
Dediğim noktalara dikkat ettiyseniz verileri kaydetmişsinizdir şimdi gelelim kaydettiğimiz verileri ListView ile ekrana verilerimizi yazdıralım.

4-) Veri Listeleme (Select)

Android SQLite Kullanımı ‘nda sırada verilerimizi ListView ile ekranda göstermek VeriTabani.java class içerisinde VeriListele şeklinde bir methot oluşturalım ve içerisinde yer alacak kodlar;

public List<String> VeriListele(){
    List<String> veriler = new ArrayList<String>();
    SQLiteDatabase db = this.getReadableDatabase();
    try {
        String[] stunlar = {ROW_ID,ROW_AD,ROW_SOYAD,ROW_TEL};
        Cursor cursor = db.query(TABLO_KISILER, stunlar,null,null,null,null,null);
        while (cursor.moveToNext()){
            veriler.add(cursor.getInt(0)
                    + " - "
                    + cursor.getString(1)
                    + " - "
                    + cursor.getString(2)
                    + " - "
                    + cursor.getString(3));
        }
    }catch (Exception e){
    }
    db.close();
    return veriler;
}

Methot içerisinde ilk olarak bir liste tanımlıyoruz ardından bu class içerisinde oluşturduğumuz veri tabanımızdan okunabilir bir veritabanı çağırıyoruz ” this.getReadableDatabase() ” veri ekleme kısmına geri dönerseniz orada yazılabilir bir veritabanı çağırmıştık, burada sadece okuma işlemi yapacağımız için okunabilir bir veritabanı çağırdım. Ardından try-catch bloğumuzu oluşturuyoruz, stunlar adında bir dizi oluşturuyoruz buraya tablomuzu oluştururken yaptığımız sütunları çağırıyoruz ardından Cursor objesi tanımlıyoruz bu obje sayesinde verilerimizi basit bir şekilde dolaşarak listeye atacağız. While döngüsü oluşturuyoruz ve koşuluna “cursor.moveToNext()” yazıyoruz yani bir sonrakine geç diyoruz eğer bir sonraki veri yok ise while döngüsü duracak ardından listemize her döngüde yeni bir veri ekliyoruz .add ile.
Şimdi veritabanımızda yer alan sırasıyla kayıtlı id, isim, soyisim, ve tel listeye atacağız. İlk olarak int bir veri yani id yi listeye ekleyeceğimiz için “cursor.getInt(0)”  burada iki önemli nokta var birincisi getInt bu şu demek ben int bir veri çağırıyorum ikincisi 0 (Sıfır) bunun anlamı ilk index yani id çağırıyorum yani toparlayacak olursak ben ilk sırada yer alan id int tanımlamıştım veritabanını oluştururken doğal olarak ve ilk sırada yer alıyor yani sıfırıncı index’de. Diğer verilerimiz string değerler olduğu için “cursor.getString(1)” bu şekilde çağırıyorum ve 1. indexde yer alan isim’ listeye atıyorum …
Verilerimizi listeye attıktan sonra try-catch bloğu dışarısında çalıştırdığımız okunabilir vertabanımızı kapatıyoruz “db.close();” ve son olarak listemizi geri gönderiyoruz.
Sıra geldi MainActivity içersin de verilerimizi getireceğimiz kodları yazmaya, bunun için MainActivity son satırında yer alan iki adet kapılmış süslü parantezler yer almakta tam onların ortasında bir methot oluşturalım ;

public void Listele(){
    VeriTabani vt = new VeriTabani(MainActivity.this);
    List<String> list = vt.VeriListele();
    ArrayAdapter<String> adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1,android.R.id.text1,list);
    VeriListele.setAdapter(adapter);
}

İlk olarak veri tabanı classmızı çağırıyoruz ikinci olarak liste oluşturuyoruz ve buna veri tabanımızda oluşturduğumuz VeriListe metodunu içersinde geri dönen listeyi buradaki listeye atıyoruz. Diğer kodlar ListView konusu olduğu için diğer 2 satırlık kodu anlatmayacağım uzun uzun biraz incelerseniz anlarsınız diye düşünüyorum. Şimdi metodumuz hazır düşünelim ne zaman bu metodumuz çalışacak ve veriler gösterilecek ilk olarak uygulama açıldığında verilerimiz listelensin bunu için ;

private EditText etAd,etSoyad,etTel;
private Button btnKaydet, btnListele,btnSil,btnDuzenle;
private ListView VeriListele;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    etAd = (EditText) findViewById(R.id.etAd);
    etSoyad = (EditText) findViewById(R.id.etSoyad);
    etTel = (EditText) findViewById(R.id.etTel);
    btnKaydet = (Button) findViewById(R.id.btnKaydet);
    btnListele = (Button) findViewById(R.id.btnListele);
    VeriListele = (ListView) findViewById(R.id.VeriListele);
    btnSil = (Button) findViewById(R.id.btnSil);
    btnDuzenle = (Button) findViewById(R.id.btnDuzenle);
    btnKaydet.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String gelenAd = etAd.getText().toString();
            String gelenSoyad = etSoyad.getText().toString();
            String gelenTel = etTel.getText().toString();
            VeriTabani vt = new VeriTabani(MainActivity.this);
            vt.VeriEkle(gelenAd, gelenSoyad, gelenTel);
        }
    });

Tanımlamalardan sonra “Listele()” şeklinde metodumuzu çağırıyoruz ve projemizi emülatörde çalıştırıyoruz ve karşımıza bu ekran geliyor ;

Ayrıca listele Buttonuna basıldığında verilerimiz listview de gözüksün ;

btnListele.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Listele();
    }
});

Evet buda tamam bakın farkındaysanız tek bir metot oluşturduk ve istediğimiz zaman istediğimiz yerde kullana biliyoruz böylelikle kod israfı yapmıyoruz. Eeee başka ne zaman bu veriler listelensin peki buldum yeni veri eklediğimizde o yeni veri ile listemiz güncellensin ;

btnKaydet.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String gelenAd = etAd.getText().toString();
        String gelenSoyad = etSoyad.getText().toString();
        String gelenTel = etTel.getText().toString();
        VeriTabani vt = new VeriTabani(MainActivity.this);
        vt.VeriEkle(gelenAd, gelenSoyad, gelenTel);
        Listele();
    }
});

VeriEkle objesinin altına Listele metodumuzu yazıyoruz ve böylelikle yeni bir veri eklendiğinde aşağıda yer alan ListeView güncellenmiş oluyor.

5-) Veri Silme (DELETE)

Android SQLite Kullanımı makalemizde sırada geldi DELETE işlemine, daha önce metotları bilmemiş olsanız bile şimdiye kadar bu makale sayesinde az da olsa çalışma mantığını anladığınızı farz ediyorum. Şimdi ilk olarak şunu anlamanız lazım bu iş düşünmeden olmaz kafanızda bir yol haritası çizmeniz gerekiyor o yüzden şimdi düşünelim verilerimizi nasıl sileceğiz. Hmmmm ListView tıklama işlemi olması bir kere şart ondan sonra tıklanan verinin başında yer alan id almamız lazım ki o id bir yerde tutup sonra id ile düzenleme işlemini bile yapabilelim. Bizim verilerimiz ListView de şu şekilde gözüküyor değil mi ? ;
1 - Sercan - Çepni - 0555 555 55 55
İşte yukarıdaki örnekte başında ki 1 bizim veritabanımızda ki id, plan şu Listview de ki elemanlara tıklandığında onu bir string’e atalım sonra bu string split yardımı ile parçalıyalım ama neye göre bir koşul belirtmemiz lazım hani biz VeriListele metotunda her bir veri için arasına ” – ” (Boşluk Tire Boşluk) şeklinde yapmıştık yapmıştık ya listelemeyi bizde ona göre böleceğiz böldükten sonra işimiz kolay item[0] = id item[1]=ad item[2]=soyad item[3]=tel eşit olacak burada önemli olan id yani item[0], bunu int bir değişkene aktaracağız ve sil tuşuna basıldığında o id eşit olan veriyi silecek ancak seçildiğini nasıl anlayacağız onuda söyle yaparız bizim EditText lerimize uygun olan yerlere bu parçaladığımız veriler set edelim yani şu şekilde ;

// Birden fazla yerde kullanmak için bir metot tanımlıyoruz
public void ListViewItem(){
    // LisView tıklama işlemi
    VeriListele.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            // Tıklanan verimizi alıyoruz
            String item = VeriListele.getItemAtPosition(position).toString();
            // - Göre bölüyoruz
            String[] itemBol = item.split(" - ");
            // id'mizi alıyoruz
            idBul = Integer.valueOf(itemBol[0].toString());
            // Diğer verilerimizi set ediyoruz.
            etAd.setText(itemBol[1].toString());
            etSoyad.setText(itemBol[2].toString());
            etTel.setText(itemBol[3].toString());
        }
    });
}

Not: Arkdaşlar yukardaki kodu yapıştırınca hata alacaksınız bu hatanın nedeni idBul önünde int yazmaması int olduğunu sayfanın en üstündeki EditText tanımladığımız yere şunu ekleyin ;
int idBul = 0;
Veritabanı.java classımıza VeriSil şekilde bir metot tanımlıyoruz ve içerisinde şu kodlar yer alıyor ;

public void VeriSil(int id){
    SQLiteDatabase db = this.getWritableDatabase();
    try {
        // id ye göre verimizi siliyoruz
        String where = ROW_ID + " = " + id ;
        db.delete(TABLO_KISILER,where,null);
    }catch (Exception e){
    }
    db.close();
}

Ardından MainAvtivity.java dosyamızda sil butonu için bir tıklama objesi oluşturuyoruz ve içerisinde gerekli olan kodları yazıyoruz ;

// Silme tuşuna tıklandığında yapılacak olan işlemler...
btnSil.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // VeriTabanı classımızı tanımlıyoruz
        VeriTabani vt = new VeriTabani(MainActivity.this);
        vt.VeriSil(idBul);
        //Sildikten Sonra tekrardan listeliyoruz
        Listele();
    }
});

Her şeyi doğru yaptıysanız ListView tıkladığınızda kayıtlı bilgilerin EditTextlere geldiğini göreceksiniz ardından SİL butonuna tıkladığınızda verinin silindiğini göreceksiniz.

6-) Veri Düzenleme (UPDATE)

En kolay kısma geldik neden kolay diye sorarsanız zaten bir önceki silme işlemi için biz ListView de bir elemana tıkladığımzıda id’yi alabiliyoruz bu aldığımız id sayesinde şimdi güncelleme işlemi yapmak çok kolay olacak VeriTabani.java dosyamıza VeriDuzenle şeklinde bir metot tanımlayalım ;

public void VeriDuzenle(int id, String ad, String soyad, String tel){
    SQLiteDatabase db = this.getWritableDatabase();
    try {
        ContentValues cv = new ContentValues();
        cv.put(ROW_AD, ad);
        cv.put(ROW_SOYAD, soyad);
        cv.put(ROW_TEL, tel);
        String where = ROW_ID +" = '"+ id + "'";
        db.update(TABLO_KISILER,cv,where,null);
    }catch (Exception e){
    }
    db.close();
}

Ardından MainActivity.java dosyamıza Düzenle butonuna tıkladığımızda ne yapacağını yazalım ;

btnDuzenle.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // ListView Tıkladığımızda otomatik dolan EditTextlerimizi Stringlere atıyalım
        String gelenAd = etAd.getText().toString();
        String gelenSoyad = etSoyad.getText().toString();
        String gelenTel = etTel.getText().toString();
        // Veritabanı bağlantımızı açalım ver ardından gerekli bilgileri VeriDuzenle metotuna gönderelim
        VeriTabani vt = new VeriTabani(MainActivity.this);
        vt.VeriDuzenle(idBul,gelenAd,gelenSoyad,gelenTel);
        Listele();
    }
});

Hadi gözümüz aydın bitti şuana kadar her şeyi anlattığım gibi yaptıysanız projeniz çalışıyordur arkadaşlar ayrıca anlamadığınız yeri veya kafanızdaki soruları yorum şeklinde sorabilirsiniz Kişisel Blog umda Android derslerine devam edeceğim ayrıca isteklerinizi sosyal medya veya yorum şekilde bana bildirebilirsiniz, son olarak aşağıdaki bağlantıdan örnek projeyi indirip tam olarak inceleye bilirsiniz.

Örnek Projeyi İndirmek İçin Tıklayın

RELATED ARTICLES

34 YORUMLAR

  1. Hocam anlattığınız örneği birebir aynısını yaptım. Apk olusturup telefonda açınca uygulama kapanıyor açılmıyor farklı bir örnek daha denedim oda aynı şekilde kapanıyor :/

  2. Merhaba teşekkürler. public void ListViewItem() metodu çalışmıyor. Yani veri silme ve düzeltme çalışmıyor. Ayrıca bir kayıt girdikten sonra Adı Soyadı ve Tel ekranı silinmiyor yardımcı olabilir misin?

  3. Hoca sil ve düzenle çalışmıyor. daha doğrusu silmek için veya düzenlemek için listeden seçmek istediğimizde seçemiyoruz. uygulamada sadece bu kısımlarda sorun var. bakabilmen mümkün mü?

  4. Merhabalar,
    ListViewItem() ile ilgili bir sorun var örnek projeden bu bölüm yok ama sil’de problem yaşıyorum.Yardımcı olabilir misin ?

  5. Merhabalar. Öncelikle anlatımınız için teşekkürler. Kodu birebir aynı şekilde kullanarak projeme ekledim ama “no such table” hatası alıyorum. Veri eklemek istediğimde böyle bir tablo yok diye hata döndürüyor. Yardımcı olursanız sevinirim.

  6. Uzun zamandır bu işin içinden çıkamamıştım şimdi her yönü ile kavradım olayı.Gerçekten çok iyi bir anlatım olmuş emeğinize sağlık.Ayrıca indirilen dosya da birkaç eksik haliyle dosyayı koymuşsunuz şahsen ben 1-2 kodu ekleyip inceledim onun dışında sorun yok çalışıyor zaten.
    ListViewItem de sorun yaşayanlar bunu gidip public void Listele bölümünde en alta ListViewItem() olarak eklerse sorunu düzelir çünkü Listele yi her butonda kullandık zaten.Biraz düşünerek yapalım bu işi 🙂

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz

Most Popular

Recent Comments