Sonuç bulunamadı
Bütün Sonuçları Göster
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net
  • Haber
  • Yapay Zeka
  • Tavsiyeler
  • Oyun
  • Video
  • Teknoloji
    • Mobil
    • Yazılım
    • Elektronik Alışveriş Fırsatları
    • Pratik
    • Ev Teknolojileri
    • Makale
    • Güvenlik
    • Ekonomi
    • İnternet
    • Giyilebilir Teknoloji
    • Sağlık
    • Yazıcı
    • Sosyal Medya
    • Otomobil
      • Elektrikli Otomobil
  • Sosyal
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net
  • Haber
  • Yapay Zeka
  • Tavsiyeler
  • Oyun
  • Video
  • Teknoloji
    • Mobil
    • Yazılım
    • Elektronik Alışveriş Fırsatları
    • Pratik
    • Ev Teknolojileri
    • Makale
    • Güvenlik
    • Ekonomi
    • İnternet
    • Giyilebilir Teknoloji
    • Sağlık
    • Yazıcı
    • Sosyal Medya
    • Otomobil
      • Elektrikli Otomobil
  • Sosyal
Sonuç bulunamadı
Bütün Sonuçları Göster
Teknoloji tutkunu Technopatların ortak adresi: Technopat.net

Anasayfa - Makale - Pratik - Android Programlama Ders 38: SQLite Veri Tabanı Konusuna Devam Ediyoruz

Android Programlama Ders 38: SQLite Veri Tabanı Konusuna Devam Ediyoruz

18 Mayıs 2014 - 12:00
- Mobil, Pratik

Android Programlama Ders 38’de geçen derslerde yaptığımız uygulamayı geliştireceğiz.

Geçen derslerimizde kayıtları ekleme, okuma ve tablodan silme işlemlerini yapmayı öğrendik. Bu derste belirli kayıtları silme ve güncelleme işlemini öğreneceğiz. Yeni proje oluşturmayacağız, geçen dersteki uygulamayı kullanacağız. Ancak ekranı biraz değiştireceğiz. ID için giriş alanı, güncelleme ve silme butonları ekleyeceğiz.

main.xml:

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:orientation="vertical">
 <LinearLayout
 android:id="@+id/linearLayout4"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_marginTop="5dp">
 <TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="ID"
 android:layout_marginLeft="5dp"
 android:layout_marginRight="25dp">
 </TextView>
 <EditText
 android:id="@+id/etID"
 android:layout_width="70dp"
 android:layout_height="wrap_content"
 android:layout_marginTop="2dp">
 </EditText>
 <Button
 android:id="@+id/btnUpd"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Update">
 </Button>
 <Button
 android:id="@+id/btnDel"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Delete">
 </Button>
 </LinearLayout>
 <LinearLayout
 android:id="@+id/linearLayout1"
 android:layout_width="match_parent"
 android:layout_height="wrap_content">
 <TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Name"
 android:layout_marginLeft="5dp"
 android:layout_marginRight="5dp">
 </TextView>
 <EditText
 android:id="@+id/etName"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_weight="1">
 <requestFocus>
 </requestFocus>
 </EditText>
 </LinearLayout>
 <LinearLayout
 android:id="@+id/linearLayout3"
 android:layout_width="match_parent"
 android:layout_height="wrap_content">
 <TextView
 android:id="@+id/textView2"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Email"
 android:layout_marginLeft="5dp"
 android:layout_marginRight="5dp">
 </TextView>
 <EditText
 android:id="@+id/etEmail"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_weight="1">
 </EditText>
 </LinearLayout>
 <LinearLayout
 android:id="@+id/linearLayout2"
 android:layout_width="match_parent"
 android:layout_height="wrap_content">
 <Button
 android:id="@+id/btnAdd"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Add">
 </Button>
 <Button
 android:id="@+id/btnRead"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Read">
 </Button>
 <Button
 android:id="@+id/btnClear"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Clear">
 </Button>
 </LinearLayout>
 </LinearLayout>

Update butonuna bastığımız zaman Name ve Email alanından değerleri okuyacağız ve tabloya yazdıracağız. ID alanındaki değer, id tablodaki değer ile eşit olacak. Delete (Silme) butonuna bastığımız zaman ID alanından gelen değere göre tablodan kaydı silinecek. MainActivity.java’ya yeni nesneleri ve işletici ekleyelim.

 final String LOG_TAG = "myLogs";
Button btnAdd, btnRead, btnClear, btnUpd, btnDel;
 EditText etName, etEmail, etID;
...
public void onCreate(Bundle savedInstanceState) {
...btnUpd = (Button) findViewById(R.id.btnUpd);
 btnUpd.setOnClickListener(this);
btnDel = (Button) findViewById(R.id.btnDel);
 btnDel.setOnClickListener(this);
etID = (EditText) findViewById(R.id.etID);
// veritabani yonetmek icin nesneyi olusturuyoruz
 dbHelper = new DBHelper(this);
 }
onClick metoduna yeni komutları ekleyelim:
public void onClick(View v) {
// veriler icin nesneyi olusturuyoruz
 ContentValues cv = new ContentValues();
// giris alanlardan verileri aliyoruz
 String name = etName.getText().toString();
 String email = etEmail.getText().toString();
 String id = etID.getText().toString();
// veritabanıya bagliyoruz
 SQLiteDatabase db = dbHelper.getWritableDatabase();
switch (v.getId()) {
 case R.id.btnAdd:
 ...
 case R.id.btnRead:
 ...
 case R.id.btnClear:
 ...
 case R.id.btnUpd:
 if (id.equalsIgnoreCase("")) {
 break;
 }
 Log.d(LOG_TAG, "--- Update mytabe: ---");
 // guncellecek verileri hazirliyoruz
 cv.put("name", name);
 cv.put("email", email);
 // id guncelliyoruz
 int updCount = db.update("mytable", cv, "id = ?",
 new String[] { id });
 Log.d(LOG_TAG, "updated rows count = " + updCount);
 break;
 case R.id.btnDel:
 if (id.equalsIgnoreCase("")) {
 break;
 }
 Log.d(LOG_TAG, "--- Delete from mytabe: ---");
 // id siliyoruz
 int delCount = db.delete("mytable", "id = " + id, null);
 Log.d(LOG_TAG, "deleted rows count = " + delCount);
 break;
 }
 //veritabanıya baglantiyi kapatiyoruz
 dbHelper.close();
 }

Yukarıdaki kodda id değişkenini ekliyoruz. Değişkenin amacı etID giriş alanından değeri almaktır. Switch’e iki yeni koşulu ekliyoruz.

btnUpd – mytable tabloda kayıtları güncelliyor. İlk başta id değerinin boş olup olmadığını kontrol ediyoruz. Güncellemek için cv’ye değeri atıyoruz. Güncelleme yapmak için update metodunu kullanıyoruz. Giriş değişkeni tablonun ismi, güncelleme değerleri içeren ContentValues, koşulu (Where) içeren satırı ve koşul satırı için argüman dizisi. Koşul satırında soru (?) işareti kullandık. Bunun amacı veritabanına sorgu geldiği zaman soru işareti yerine dizi argümandan değeri yerleştireceğiz. Bizim örnekte bu değer id’dir. Update metodu sonuç olarak güncellenen kayıtların sayısı gönderiyor. Biz bu sayıyı bildirime (Log) yazdıracağız.

btnDel – mytable tablodan kayıtları silmek için kullanılıyor. İlk aşamada id boş olup olmadığını kontrol ediyoruz. Sonra delete metodu çağırıyoruz. Giriş olarak tablonun ismi, koşul satırı ve koşul satırı için argümanların dizisi. Sonuç olarak delete metodu bize silinen kayıtların sayısı verecek. Bu sayıyı bildirime yazdıracağız. Update ve delete için koşular aynı ama küçük bir fark mevcuttur. Update için soru (?) işareti kullandım ve delete için direkt değeri belirtim. Bunu yaparak aynı işlem için iki farklı yöntemi göstermiş oldum. İkisini de kullanabilirsiniz.

Kaydedelim ve çalıştıralım. İki tane kayıt girelim ve Read butonuna basalım. Bildirime bakalım:

 ID = 1, name = Omer Aslan, email = [email protected]
ID = 2, name = Osman Bayrak, email = [email protected]

 Şimdi ID = 2 kayıdı güncelleyelim. Bunu yapmak için ID alanına 2 değeri giriyoruz ve Name, Email alanlara yeni verileri giriyoruz.

osmnbey

Update butonuna basıyoruz ve bildirime bakıyoruz:

— Update mytabe: —
updated rows count = 1

Doğru bir tane kayıdı güncelledik.

Read butonuna basıyoruz ve bildirime bakıyoruz:

ID = 1, name = Omer Aslan, email = [email protected]
ID = 2, name = Osman Bey, email = [email protected]

Kayıdın güncellendiğini görüyoruz.

Şimdi ID = 2 kayıdı silelim. ID alanına 2 değeri giriyoruz.

delete

Delete butonuna basıyoruz ve bildirime bakıyoruz:

— Delete from mytabe: —
deleted rows count = 1

Bir tane kayıdı sildik.

Read butonuna basıyoruz ve bildirime bakıyoruz:

— Rows in mytable: —
ID = 1, name = Omer Aslan, email = [email protected]

Tek kayıdı kaldı.

Eğer boş olan ID silmek isteseydik bir şey olmayacaktı çünkü daha önce koşulu koyduk. Eğer tabloda bulunmayan ID silmeyi istiyorsak delete metodu 0 değeri gönderecek. Bir şey silmedi çünkü silinecek kayıt bulunamadı.

MainActivity.java tam kodu:

import android.app.Activity;
 import android.content.ContentValues;
 import android.content.Context;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
 import android.database.sqlite.SQLiteOpenHelper;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.Button;
 import android.widget.EditText;

public class MainActivity extends Activity implements OnClickListener {
final String LOG_TAG = "myLogs";
Button btnAdd, btnRead, btnClear, btnUpd, btnDel;
 EditText etName, etEmail, etID;
DBHelper dbHelper;
/** Called when the activity is first created. */
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
btnAdd = (Button) findViewById(R.id.btnAdd);
 btnAdd.setOnClickListener(this);
btnRead = (Button) findViewById(R.id.btnRead);
 btnRead.setOnClickListener(this);
btnClear = (Button) findViewById(R.id.btnClear);
 btnClear.setOnClickListener(this);
btnUpd = (Button) findViewById(R.id.btnUpd);
 btnUpd.setOnClickListener(this);
btnDel = (Button) findViewById(R.id.btnDel);
 btnDel.setOnClickListener(this);
etName = (EditText) findViewById(R.id.etName);
 etEmail = (EditText) findViewById(R.id.etEmail);
 etID = (EditText) findViewById(R.id.etID);
// veribani yonetmek icin nesneyi olusturuyoruz
 dbHelper = new DBHelper(this);
 }
public void onClick(View v) {
// veriler icin nesneyi olusturuyoruz
 ContentValues cv = new ContentValues();
// giris alanlardan verileri aliyoruz
 String name = etName.getText().toString();
 String email = etEmail.getText().toString();
 String id = etID.getText().toString();
// veritabanina bagliyoruz
 SQLiteDatabase db = dbHelper.getWritableDatabase();
switch (v.getId()) {
 case R.id.btnAdd:
 Log.d(LOG_TAG, "--- Insert in mytable: ---");
 cv.put("name", name);
 cv.put("email", email);
 // kayidi ekliyoruz ve ID aliyoruz
 long rowID = db.insert("mytable", null, cv);
 Log.d(LOG_TAG, "row inserted, ID = " + rowID);
 break;
 case R.id.btnRead:
 Log.d(LOG_TAG, "--- Rows in mytable: ---");
 // veritabanini sorguluyoruz ve Cursoru aliyoruz
 Cursor c = db.query("mytable", null, null, null, null, null, null);
// Cursoru birinci satira yerlestiriyoruz
 // satirlari bulmadigi zaman false gondericek
 if (c.moveToFirst()) {
// isimlere ve emaile gore satirlarin numarayi belirliyoruz
 int idColIndex = c.getColumnIndex("id");
 int nameColIndex = c.getColumnIndex("name");
 int emailColIndex = c.getColumnIndex("email");
do {
 // numaralari bildirime yazdiriyoruz
 Log.d(LOG_TAG,
 "ID = " + c.getInt(idColIndex) + ", name = "
 + c.getString(nameColIndex) + ", email = "
 + c.getString(emailColIndex));
 // sonraki satira geciyoruz
 // sonraki satiri bulmadigi zaman false gondericek -
 // donguden cikiyoruz
 } while (c.moveToNext());
 } else
 Log.d(LOG_TAG, "0 rows");
 c.close();
 break;
 case R.id.btnClear:
 Log.d(LOG_TAG, "--- Clear mytable: ---");
 // kayitlari siliyoruz
 int clearCount = db.delete("mytable", null, null);
 Log.d(LOG_TAG, "deleted rows count = " + clearCount);
 break;
 case R.id.btnUpd:
 if (id.equalsIgnoreCase("")) {
 break;
 }
 Log.d(LOG_TAG, "--- Update mytabe: ---");
 // guncellecek kayitlari hazirliyoruz
 cv.put("name", name);
 cv.put("email", email);
 // id ye gore guncelliyoruz
 int updCount = db.update("mytable", cv, "id = ?",
 new String[] { id });
 Log.d(LOG_TAG, "updated rows count = " + updCount);
 break;
 case R.id.btnDel:
 if (id.equalsIgnoreCase("")) {
 break;
 }
 Log.d(LOG_TAG, "--- Delete from mytabe: ---");
 // id ye gore siliyoruz
 int delCount = db.delete("mytable", "id = " + id, null);
 Log.d(LOG_TAG, "deleted rows count = " + delCount);
 break;
 }
 //veritabanina baglanti kapatiyoruz
 dbHelper.close();
 }
class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context) {
super(context, "myDB", null, 1);
 }
public void onCreate(SQLiteDatabase db) {
 Log.d(LOG_TAG, "--- onCreate database ---");
 // tabloyu olusturuyoruz
 db.execSQL("create table mytable ("
 + "id integer primary key autoincrement,"
 + "name text,"
 + "email text" + ");");
 }
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
 }
}

 

Ders Sonu Notları:

Son iki dersimizde SQLite’ta kayıtları okuma, yazma, ekleme, silme ve güncelleme yapmayı öğrendik. Gelecek derste query metodunu ayrıntılı inceleceğiz ve sıralama, gruplama, koşuları, having kullanmayı öğreneceğiz.

Etiketler: AndroidAndroid programlama dersleriContentValuesDeletedershavingprogramlamaqueryReadSQLiteteknolojiupdateveritabanıYazılımyeni
PaylaşPaylaşTweetYollaPaylaş
Victor Cuiumju

Victor Cuiumju

Yorum Yap Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

RSS Technopat Sosyal

  • 4070 Super i5 14400F sistemde oyunlarda FPS düşüşleri yaşanıyor
  • 1000 TL'ye mouse önerisi
  • Kış için mont önerisi
  • 2. el RX 5700 R5-5500 sistem alınır mı?
  • CS2'de sesler yanlış geliyor
  • RX6600 AM5 sistem toplama
  • Acer Nitro 16 AN16-42 sıcaklıkları normal mi?
  • R7 9800x3D ve RTX 5080'li sistem önerisi
  • Galaxy S23 serisi için One UI 8 dağıtıma başladı!
  • 3 sene önce olunan septoplasti ameliyatının rahatsızlıkları devam ediyor

Technopat Video

Şu an oynayan

Apple’ı 20’ye katlayan saat! Huawei Watch GT 6 Pro incelemesi

Huawei Watch GT 6 Pro

Apple’ı 20’ye katlayan saat! Huawei Watch GT 6 Pro incelemesi

Akıllı Saat
Technopat ofisi Eylül ayında neler aldı? 

Technopat ofisi Eylül ayında neler aldı? 

Giyilebilir Teknoloji
Gigabyte AORUS FO27Q5P: 500 Hz QD-OLED ile rekabetçi oyunculara özel monitör

Gigabyte AORUS FO27Q5P: 500 Hz QD-OLED ile rekabetçi oyunculara özel monitör

Haber

Teknoloji tutkunu Technopatların ortak adresi: Technopat.net!

Güncel teknoloji, internet, donanım, yazılım, oyun ve daha fazlası haber, makale ve videolar ile Technopat’ta sizlerle.


01010100 01100101 01100011 01101000 01101110 01101111 01110000 01100001 01110100

Kategoriler

  • Yapay Zeka
  • Ev Teknolojileri
  • Makale
  • Video

Sosyal Medya

Bağlantılar

  • Hakkında
  • Haber
  • Video
  • Sosyal
  • Çerez Politikası
© 2011-2025 Technopat. Tüm Hakları Saklıdır.
Netse
Çerez Onayı
Web sitemizi ziyaret ettiğinizde, kullanıcı deneyiminizi daha iyi hale getirmek, hizmetlerimizi size daha etkin bir şekilde sunabilmek için çerezler (cookies) ve benzeri araçlar kullanıyoruz. Çerezler, internet sitesinin düzgün çalışmasını sağlamak, içeriği kişiselleştirmek, sosyal medya özellikleri sağlamak ve trafik analizi yapmak için kullanılan küçük metin dosyalarıdır. Çerezleri nasıl kullandığımız ve kişisel verilerinizi nasıl işlediğimiz hakkında daha fazla bilgi almak için çerez politikamızı ve kişisel veri politikamızı inceleyebilirsiniz.
Fonksiyonel Her zaman aktif
Teknik depolama veya erişim, sadece kullanıcının açıkça talep ettiği belirli bir hizmetin kullanılmasını sağlama amacıyla veya iletişimin elektronik iletişim ağı üzerinden iletilmesinin tek amacıyla yasal olarak kesinlikle gereklidir.
Tercihler
Teknik depolama veya erişim, abone veya kullanıcı tarafından istenmeyen tercihlerin depolanması yasal amacıyla gereklidir.
İstatistikler
Sadece istatistiksel amaçlarla kullanılan teknik depolama veya erişim. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Pazarlama
Teknik depolama veya erişim, reklam gönderimi için kullanıcı profilleri oluşturmak veya kullanıcıyı bir web sitesinde veya birden fazla web sitesinde benzer pazarlama amaçları için takip etmek amacıyla gereklidir.
Seçenekleri yönet Hizmetleri yönetin {vendor_count} satıcılarını yönetin Bu amaçlar hakkında daha fazla bilgi edinin
Tercihleri yönet
{title} {title} {title}
Onayı Yönet
En iyi deneyimleri sunmak için, cihaz bilgilerini saklamak ve/veya bunlara erişmek amacıyla çerezler gibi teknolojiler kullanıyoruz. Bu teknolojilere izin vermek, bu sitedeki tarama davranışı veya benzersiz kimlikler gibi verileri işlememize izin verecektir. Onay vermemek veya onayı geri çekmek, belirli özellikleri ve işlevleri olumsuz etkileyebilir.
Fonksiyonel Her zaman aktif
Teknik depolama veya erişim, abone veya kullanıcı tarafından açıkça talep edilen belirli bir hizmetin kullanılmasını sağlamak veya bir elektronik iletişim ağı üzerinden bir iletişimin iletimini gerçekleştirmek amacıyla meşru bir amaç için kesinlikle gereklidir.
Tercihler
Teknik depolama veya erişim, abone veya kullanıcı tarafından talep edilmeyen tercihlerin saklanmasının meşru amacı için gereklidir.
İstatistik
Sadece istatistiksel amaçlar için kullanılan teknik depolama veya erişim. Sadece anonim istatistiksel amaçlar için kullanılan teknik depolama veya erişim. Mahkeme celbi, İnternet Hizmet Sağlayıcınızın gönüllü uyumu veya üçüncü bir taraftan ek kayıtlar olmadan, yalnızca bu amaçla depolanan veya alınan bilgiler genellikle kimliğinizi belirlemek için kullanılamaz.
Pazarlama
Teknik depolama veya erişim, reklam göndermek için kullanıcı profilleri oluşturmak veya benzer pazarlama amaçları için kullanıcıyı bir web sitesinde veya birkaç web sitesinde izlemek için gereklidir.
Seçenekleri yönet Hizmetleri yönetin {vendor_count} satıcılarını yönetin Bu amaçlar hakkında daha fazla bilgi edinin
Tercihleri görüntüle
{title} {title} {title}
Sonuç bulunamadı
Bütün Sonuçları Göster
  • Giriş
  • Teknoloji Haberleri
  • Sosyal
  • Video
  • Tavsiyeler
  • İncelemeler
    • Video İncelemeler
  • Güvenlik
  • Oyun
  • Makale
    • Pratik
    • Yazar Köşeleri

© 2025 Technopat
Sorularınız için Technopat Sosyal