SQLite bir sunucu yazılımına ihtiyaç duymaksızın, kurulum ve yapılandırma işlemleri olmadan kullanılabilen veri tabanı kütüphanesidir. Birden çok tablo, index, sorgu vb. veritabanı özelliklerini tek bir dosya içerisinde sağlamaktadır.
Android uygulamalar için oldukça kullanışlıdır. Database adında bir sınıf oluşturalım ve SQLiteOpenHelper sınıfından extends edelim. Aşağıda öğrenci id (otomatik artan sayı),Ad (string), Soyad (string), Bolum (string) bilgilerini tutan bir tablo oluşturduk. Bu tablodan liste halinde veri çekebilmek için öğrenci sınıfı oluşturduk. Bu sınıfın içerisine setter, getter metotlarımızı ekledik.
import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import java.security.GeneralSecurityException; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; /** * Created by CAGLARTELEF on 09.05.2017. */ public class Database extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 1; private static final String DATABASE_NAME = "SQLiteDB"; private static final String TABLE_NAME = "Ogrenci"; private static String ogrID = "id"; private static String ogrAD = "Ad"; private static String ogrSoyad = "Soyad"; private static String ogrBolum= "Bolum"; private Context context = null; public Database(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); this.context = context; } @Override public void onCreate(SQLiteDatabase db) { String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + "(" + ogrID + " INTEGER PRIMARY KEY AUTOINCREMENT," + ogrAD + " TEXT," + ogrBolum + " TEXT, " + ogrSoyad + " TEXT" + ")"; db.execSQL(CREATE_TABLE); } public void veriSil(int id) { SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_NAME, ogrID + " = ?", new String[]{String.valueOf(id)}); db.close(); } public void veriEkle(String Ad, String Soyad, String Bolum) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(ogrAD, Ad); values.put(ogrBolum, Soyad); values.put(ogrSoyad, Bolum); db.insert(TABLE_NAME, null, values); db.close(); } public clssOgrenci veriDetay(int id) { String selectQuery = "SELECT * FROM " + TABLE_NAME + " WHERE id=" + id; SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery(selectQuery, null); cursor.moveToNext(); clssOgrenci clssOgr = new clssOgrenci(); if (cursor.getCount() > 0) { clssOgr.setId(String.valueOf(cursor.getInt(0))); clssOgr.setAd(String.valueOf(cursor.getString(1))); clssOgr.setSoyad(String.valueOf(cursor.getString(2))); clssOgr.setBolum(String.valueOf(cursor.getString(3))); } cursor.close(); db.close(); return clssOgr; } public void veriDuzenle(String Ad, String Soyad, String Bolum, int id) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(ogrAD, Ad); values.put(ogrBolum, Soyad); values.put(ogrSoyad, Bolum); db.update(TABLE_NAME, values, ogrID + " = ?", new String[]{String.valueOf(id)}); } public ArrayList<clssOgrenci> arrayVeriList() { ArrayList<clssOgrenci> arraylist = new ArrayList<clssOgrenci>(); SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.query(TABLE_NAME, new String[]{"id", "Ad", "Soyad", "Bolum"}, null, null, null, null, null); clssOgrenci clssOgr = clssOgrenci(); while (cursor.moveToNext()) { clssOgr.setId(String.valueOf(cursor.getInt(0))); clssOgr.SetAd(String.valueOf(cursor.getString(1))); clssOgr.SetBolum(String.valueOf(cursor.getString(2))); clssOgr.setSoyad(String.valueOf(cursor.getString(3))); arraylist.add(clssOgr); } db.close(); return arraylist; } public int getRowCount() { String countQuery = "SELECT * FROM " + TABLE_NAME; SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery(countQuery, null); int rowCount = cursor.getCount(); db.close(); cursor.close(); return rowCount; } public void resetTables() { SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_NAME, null, null); db.close(); } @Override public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { // TODO Auto-generated method stub } }
/** * Created by CAGLARTELEF on 09.05.2017. */ class clssOgrenci { private String Id = null; private String Ad = null; private String Soyad = null; private String Bolum= null; public void setId(String ID){ this.Id=ID; } public String getId(){ return Id; } public void setAd(String AD){ this.Ad=AD; } public String getAd(){ return Ad; } public void setSoyad(String SOYAD){ this.Soyad=SOYAD; } public String getSoyad(){ return Soyad; } public void setBolum(String BOLUM){ this.Bolum=BOLUM; } public String getBolum(){ return Bolum; } }
Database ve öğrenci sınıflarımızı oluşturduktan sonra kullanımı için MainActivity de örnek işlemlerimizi yapalım.
/** * Created by CAGLARTELEF on 09.05.2017. */ MainActivity(){ Database db=new Database(getApplicationContext()); db.veriEkle("caglar","telef","Yazılım Mühendisliği"); db.veriDuzenle("Çağlar","Telef","Yazılım Mühendisi",1); clssOgrenci ogr=new clssOgrenci(); ogr=db.veriDetay(1); String ad,soyad,bolum,id; ad=ogr.getAd(); soyad=ogr.getSoyad(); bolum=ogr.getBolum(); id=ogr.getId(); txtAd.setText(ad); txtSoyad.setText(soyad); txtBolum.setText(bolum); txtId.setText(id); }
Örnekleri yaptığımıza göre bu yazımızın sonuna geldik. Bir sonraki yazımızda arrayVeriList() metodunun kullanımını adapterlar ile yapacağım. İyi çalışmalar. 🙂