Android 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

Previous Veri Yapıları Ders Notları
Next Android Date Time Picker Kullanımı

About author

Sercan Çepni
Sercan Çepni 83 posts

Ben Kimim ? Sercan ÇEPNİ 1989 Eskişehir doğumluyum. Kocaeli Üniversitesi Yerel Yönetimler ve Anadolu Üniversitesi Kamu Yönetimi Mezunuyum. Ayırca Kastamonu Üniversitesi Bilgisayar Programcılığı okuyorum. 2017 DGS hazırlanıp inşallah Bilgisayar Mühendisliğine geçeceğim.Tam olarak 10 yıl dır internet camiasının içerisinde bulunmaktayım. Bir çok çeşitli sektörlere yönelik web sitelerim var fakat uzun zamandır artık kendim içinde bir web sitesi açmak istiyordum ve sonunda açtım bu siteyi açmamın amacı bunca yıldır öğrendiğim bilgi birkimimi başkarınada aktarmak ve siyasetle ilgili yazılarımı paylaşmak arzumdan dolayı bu siteyi açtım.

View all posts by this author →

Editor review

Konu Önemi
5/5
Hocanın Sorma Olasılığı
5/5

5

Excellent
5

You might also like

Android 0 Comments

Android Date Time Picker Kullanımı

Bu makalede ayrıntılı olarak Android Date Time Picker Kullanımı kullanımı anlatacağım sanki tek bir widget miş gibi duruyor ancak Date Picker ve Time Picker olarak 2 adet widget’dir. Adlarından da anlayacağınız üzere

Android 9 Comments

OneSignal İle Bildirim Gönderme

Değerli müşterilerim ve ziyaretçilerim için böyle bir konu açma gereği duydum R10.Net ‘de satışa sunduğum En İyi WebView uygulaması için sizlere OneSignal ile nasıl bildirim gönderebileceğinizi anlatmaya çalışacağım lafı fazla

Android 0 Comments

org.apache.http.legacy Hata Çözümü

Android 23 sdk sından sonra derleme sırasında bu hata mesajı çıkıyor ; ORG.APACHE.HTTP.LEGACY çözümü çok basit olsa da yeteri kadar türkçe kaynak olmadığından çoğu kişi yapamıyor fazla uzatmadan ORG.APACHE.HTTP.LEGACY hatasının çözümüne

21 Comments

  1. zeynep
    Mayıs 02, 20:32 Reply

    Veri eklemede anlattığınız şeyleri yapmış olmama rağmen hata veriyor yardımcı olabilir misiniz ?

    • Sercan Çepni
      Mayıs 02, 21:54 Reply

      hatayı tam olarak görmeden bir şey diyemem ancak konuda yer alan örnek projeyi indirin ve karşılıklı olarak bi kontrol edin

    • Sercan Çepni
      Eylül 13, 11:25 Reply

      Maalesef yedeğini bulamadım ancak paylaştığım kodlarda bir sıkıntı yok takıldığınız bir yer var ise yardımcı olurum

  2. Softwareman
    Eylül 14, 09:47 Reply

    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 :/

    • Sercan Çepni
      Eylül 14, 15:03 Reply

      Apk sını alamdan önce bi emülatörde açıp bi bakın hocam eğer oda bir hata verirse ki verir consolda karşınıza çıkan hatanın resmini gönderin bana çözeriz hemen

  3. Bir Öğrenci
    Aralık 12, 08:46 Reply

    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?

  4. Yusuf
    Aralık 15, 23:31 Reply

    Listeleme konusunda hata alıyorum yardımcı olabilirmisiniz

    • Yusuf
      Aralık 17, 16:52 Reply

      Hayırlı tezkereler o zaman 😀

  5. dinc
    Aralık 15, 23:38 Reply

    listeleme konusunda hata alıyorum yardım edebilirmisiniz?

  6. sara
    Ocak 04, 00:37 Reply

    ListViewItem() metodunu MainActivity.Java butonların altında çağırdıktan sonra düzeltme ve silme çalışıyor.

  7. hikmet
    Haziran 20, 14:11 Reply

    pardon şöyle bir sıkıntı var sadece listenin hepsini sildikten sonra ıd kısmını nasıl 1 den başlatabilirim

    • Sercan Çepni
      Haziran 20, 18:36 Reply

      Hiç bir Sql de tekrardan 1 den başlatamazsınız zaten id olayı da benzersiz oluşudur ancak tekrar sql kısmında veritanını baştan oluşturursanız tekrar 1 den başlar

Leave a Reply