5 Temmuz 2009 Pazar

SQLite Nedir ?

SQLite kullanımı ve kurulumu oldukça basit olan bir veritabanı kütüphanesidir. Özelliklerinin tam listesini sitesinde bulabilirsiniz ancak ben bazılarını buraya aktarıyorum.

  • SQLite'ın çalışması için herhangi bir sunucuya ihtiyacı olmadığı için, kurulum ve ya konfigürasyon adımları yoktur.
  • Her veritabanı için sadece bir dosya vardır. Bu da veritabanının yedeklenmesini ve kopyalanmasını kolaylaştırır.
  • Platform bağımsızdır.
  • SQLite kompakttır. Tüm kütüphanenin boyutu 225kb'dır. Bazı özellikler çıkartılarak, bu boyut 170kb'a kadar indirilebilir. Bu sayede embedded ve ya symbian gibi platformlar için uygundur.
Özelliklerin tam listesini burada bulabilirsiniz.

SQLite'ın eşdeğeri olarak Oracle'ı ya da MySQL'i düşünmemelisiniz. Sitesinde de çok değinildiği gibi SQLite fopen'ın yerini almayı amaçlayan bir kütüphanedir. SQLite'ın size uygun olup olmadığını daha rahat anlamak için ne zaman kullanmalı sayfasına buradan göz atabilirsiniz.

SQLite ve C++, Basit bir örnek.

Öncelikle işlem yapabilmemiz için bir veritabanımızın olması gerekiyor. Bunun için http://www.sqlite.org/sqlite-3_6_16.zip adresinden sqlite3'ü indiriniz. Konsoldan sqlite3.exe'yi aşağıdaki şekilde başlatınız.

sqlite3 test.db

Argüman olarak "test.db" verdiğimiz için, herhangi bir tablo yarattığınızda, bu tablolar test.db dosyasına kayıt edilecektir.

Şimdi test veritabanımızda bir tablo oluşturuyoruz. Aşağıdaki SQL sorgusunu açtığınız sqlite3 programında yazınız.

CREATE TABLE users( id INTEGER PRIMARY KEY,
         name VARCHAR(25),
         lastname VARCHAR(25),
         email VARCHAR(100)
);

Böylelikle, veritabanımızda kullanıcıları tutabileceğimiz bir tablo oluşturmuş olduk. id Primary Key olarak tanımlandığı için otomatik olarak arttırılacaktır (autoincrement), bu SQLite'ın bir özelliği, çünkü normalde primary key olmasının haricinde autoincrement olarak da tanımlamadan o kolon autoincrement olmaz. Name ve lastname 25 karakter ve email ise 100 karakter olarak oluşturulmuştur. Programı kapatmadan önce birkaç veri girerek tabloyu dolduralım.

INSERT INTO users VALUES (NULL, 'Ercan', 'Gerçek', 'mail@mail.com');
INSERT INTO users VALUES (NULL, 'İsim', 'Soyisim', 'mail@mail.com');

Bu girdiğimiz iki veriyi listelemek için, bir SELECT sorgusu atmamız yeterli olacaktır.

SELECT * FROM users;

dediğiniz taktirde kullanıcılar listelenecektir.
( ';' koymayı unutmayın )

Eğer kolon isimlerini de görmek istiyorsanız

.explain on

yazarak bu seçeneği açabilirsiniz. Bundan sonraki SELECT sorgularında kolon isimleride listelenecektir.

Diğer komutlarıda görmek için '.help' yazmanız yeterlidir.

Eğer bir tablonun içeriği bir dosyaya yazdırmak isterseniz, aşağıdaki komutları girin.

.output deneme.txt
SELECT * FROM users;

ve çıkışı eski haline getirmek için tekrar

.output stdout

demeniz gerekiyor. Aksi taktirde tüm sorguların cevapları deneme.txt dosyasına yazdırılacaktır.

Artık bir veritabanımız olduğuna göre, bunu açmak için bir C++ programı yazabiliriz.
Önce SQLite'ın kaynak kodunu buradan indiriniz. (Güncel versiyonu için sitesine bakınız.)

main.cpp
==================================================
#include <stdio.h>
#include "sqlite3.h"

int main(int argc, char **argv)
{
   sqlite3 *db;
   // veritabanına bağlantı açıyoruz.
   int ret = sqlite3_open("test.db", &db);
   sqlite3_stmt *stmt;
   int rc = sqlite3_prepare(db, "SELECT * FROM users", -1, &stmt, 0);
   while(sqlite3_step(stmt) == SQLITE_ROW) {
      printf( "id:%s, name:%s, lname:%s, email:%s \n",
         sqlite3_column_text(stmt, 0),
         sqlite3_column_text(stmt, 1),
         sqlite3_column_text(stmt, 2),
         sqlite3_column_text(stmt, 3));
   };
   sqlite3_finalize(stmt);
   sqlite3_close(db);

   return 0;
}
==================================================


Eğer id gibi değerleri integer olarak almak istiyorsanız,

int id = sqlite3_column_int(stmt, 0);

demeniz yeterli.

SQLite projesinin C/C++, PHP, Perl, Python, Tcl gibi diller için hazır API'si bulunmakta, fakat C# için bulunmamaktadır. Ancak bunun için codeproject'te çeşitli projeler bulunmaktadır. http://www.codeproject.com/KB/cs/SQLiteCSharp.aspx adresinde C# da SQLite'ı nasıl kullanabileceğiniz açıklanmaktadır.

Linkler

Kaynak:
http://www.sqlite.org
SQLite'ı ne zaman kullanmalısınız:
http://www.sqlite.org/whentouse.html
SQLite'ın öne çıkan özellikleri:
http://www.sqlite.org/different.html
SQLite ve C#:
http://www.codeproject.com/KB/cs/SQLiteCSharp.aspx
SQLite Download Sayfası:
http://www.sqlite.org/download.html

4 yorum:

  1. Çok faydalı bir yazı. teşekkürler :)

    YanıtlaSil
  2. Hocam cok faydali oldu benim icin, hayatimi kurtardin resmen, sonsuz tesekkurler.

    YanıtlaSil
  3. Codecanyon üzerinde sözlük uygulamaları var. Veritabanı SQLite olarak belirtiliyor. Şimdi bu veritabanı uygulamaya entegre halde mi bulunuyor. Yoksa, bildiğimiz host ile birlikte gelen mysql gibi sunucuda mı barındırılıyor?

    YanıtlaSil