21 Mart 2018 Çarşamba

SQLiteDatabase Sınıfı

Giriş
Şu satırı dahil ederiz.
import android.database.sqlite.SQLiteDatabase;
Açıklaması şöyle.
Android wraps the SQLite code and export some java interface (android.database.sqlite.SQLiteDatabase), but miss some advanced features from the original SQLite implementation

1.Custom Function
2.Encryption
3.URI file syntax
4.VFS
Dosya Nerede Olmalı
Sqlite verisinin Android Studio projelerin asset dizini altında olması tavsiye ediliyor.
+ main
++ assets
+++ db.sqlite <----
++ java
++ res
Yanlışlıkla res dizini altına konabilir. res dizini altında assets diye bir şey yok.
+ res
++ drawable
++ layout
++ menu
++ mipmap
++ values
constructor
SQLiteOpenHelpersınıfından kalıtan bir sınıf içinde şöyle yaparız
SQLiteDatabase db = getWritableDatabase ()
beginTransaction-endTransaction metodları
Açıklaması şöyle
The changes will be rolled back if any transaction is ended without being marked as clean (by calling setTransactionSuccessful).
Basit bir örnek
SQLiteDatabase db = ...
db.beginTransaction();
db.execSQL("ALTER TABLE ...");
db.setTransactionSuccessful();
db.endTransaction();
close metodu
Şöyle yaparız.
if(db.isOpen())
  db.close();
compileStatement metodu
Bir PreparedStatement oluşturur. Şöyle yaparız.
String sql = "...";
SQLiteStatement insert = db.compileStatement(sql);
execSQL metodu
Verilen SQL'i çalıştırır. Örneğin tablo yaratmak için kullanabiliriz.
SQLiteDatabase db = ...
db.execSQL("CREATE TABLE IF NOT EXISTS users_table (name TEXT, last TEXT)");
Satır eklemek için kullanabiliriz.
db.execSQL("INSERT INTO users_table VALUES('" + name + "','" + last + "'");
getMaximumSize metodu
Metodun içi şöyle. Sanırım teorik bir limit dönüyor.
public long getMaximumSize() {
  long pCount = DatabaseUtils.longForQuery(this, "PRAGMA max_page_count;", null);
 return pCount * getPageSize();
}
insert metodu
Şu satırı dahil ederiz.
import android.content.sqlite.ContentValues;
ContentValues nesnesinin değerleri ile satır yaratır. İşlem başarısız ise -1 döner. Başarılı ise RowID döner. Eğer RowID autogenerated ise değeri 1'den başlar.
ContentValues values = new ContentValues();
values.put(KEY_PRODUCT_TYPE, code);
values.put(KEY_PRODUCT_QUANTITY, continent);
values.put(KEY_PRODCUT_COST, region);

long rowId = db.insert (SQLITE_TABLE, null, values);

isOpen metodu
Şöyle yaparız.
if(db.isOpen())
  db.close();
query metodu
Şöyle bir sorgu çalıştırmak isteyelim.
SELECT * FROM Customers
WHERE City LIKE '%XXXX%';
Şöyle yaparız. Parametreler sırasıyla şöyledir.table, columns, selection, selectionArgs, groupBy, having, orderBy, limit
Cursor cursor = db.query("Customers",
  null, "City LIKE ?", new String[] { "%" + name + "%" }, 
  null,
  null,
  null);
rawQuery metodu
Cursor almak için kullanılabilir.
String selectQuery = "SELECT * FROM ...";
SQLiteDatabase db = ...
Cursor cursor = db.rawQuery(selectQuery, null);
setTransactionSuccessful metodu
Şöyle yaparız.
SQLiteDatabase db = 
db.beginTransaction();
...
db.setTransactionSuccessful();
db.endTransaction();


Hiç yorum yok:

Yorum Gönder