Harun Reşit Zafer

bâki kalan bu kubbede bir hoş sadâ imiş

Java ve SQLite: Örnek Veritabanı Uygulaması – 4

Bundan önceki üç makale MySql veritabanı kullanan küçük masaüstü uygulamalarıydı. Ancak MySql aslında masaüstü uygulamalarında kullanılmak için tasarlanmış bir veritabanı yönetim sistemi değil. Daha çok web ve dağıtık uygulamalar için kullanılan bir çözüm. Bu nedenle veritabanı bir sunucu üzerinden hizmet veriyor ve veritabanını kullanacak olan tüm uygulamalar veriye bu sunucu üzerinden ulaşıyor. Bir masaüstü uygulamasının ihtiyaç duyacağı yerel bilgileri MySql veritabanı kullanarak sakladığımızda, o uygulamayı kuracağımız her bilgisayara bir de mysql sunucu kurmamız, hatta veritabanını da sunucuda yeniden oluşturmamız gerekiyor. Sözün kısası uzun zamandır bu problemle ilgili sorular geliyordu ve çözüm olarak Sqlite’i öneriyordum. Bu yazıda bu önerimi örnek bir uygulama ile pekiştireceğim. Bu arada Sqlite veritabanını kullanan uygulama ve işletim sistemlerinden bazılarının Firefox, Opera, Chrome, Skype, Dropbox, Windows Phone 8, Apple iOS, Symbian Os, Google Android vs. olduğunu hatırlatalım.

Bu yazıda ayrıntılı bir anlatım yapmak yerine kısaca önceki makalelerde yaptığımız çalışmayı SQLite’e uyarladım. Çünkü önceki makaleler yeterince ayrıntılı. Bu uyarlamayı Netbeans projesi olarak yazının sonundaki bağlantıdan indirebilirsiniz. Java ve veritabanı konusunda hiç tecrübeniz yoksa önce ilk üç makaleyi çalışmanızı tavsiye ederim.

1- SQLite veritabanı oluşturma

Öncelikle yapmamız gereken kullanacağımız veritabanını tasarlamak ve oluşturmak olacak. Bunun için de bize bir SQLite yönetici uygulaması gerekiyor. Bu uygulama bizlere yeni veritabanı oluşturma, tablo ekleme/silme/güncelleme gibi işlemleri rahatça yapabileceğimiz bir arayüz sunmalı.  Mysql için PhpMyAdmin, MySQL manager gibi bir çok benzer uygulama mevcuttu hatırlarsanız. Google’da “sqlite manager” şeklinde bir arama yaptığınızda pek çok sonuç çıkıyor. Bunları tek tek incelemeye vaktim olmadı. Ancak ilk sırada gelen ve bir Firefox eklentisi olan Firefox Sqlite Manager‘ın son derece kullanışlı ve yeterli olduğunu söyleyebilirim. Tek dezavantajı Firefox ile birlikte kullanmanız gerektiği.

Yeni veritabanımızı oluşturalım. Bu veritabanı “kisiler” isminde tek bir tablo içerecek:

– Menüden Database->New database seçeneğini tıklayın.

– Açılan pencerede yeni veritabanının ismini girin, sonuna sqlite uzantısı otomatik olarak eklenecektir.

– Veritabanına tablo eklemek için, sol paneldeki “tables” üzerine sağ tıklayıp “create table” seçeneğine tıklayın. Açılan pencerede tablo alanlarını aşağıdaki gibi oluşturun.

– Alternatif olarak soldaki sekmelerden “Execute SQL” ismindekini seçip, tabloyu aşağıdaki SQL sorgusunu çalıştırarak oluşturabilirsiniz.

CREATE TABLE "kisiler" ("id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , "ad" VARCHAR, "soyad" VARCHAR, "yas" INTEGER, "cinsiyet" BOOL)

– Oluşturulan tabloya kayıt girişi de aynı şekilde el ile veya SQL sorgusu çalıştırarak olabilir. El ile girişi “Browse & Search” isimli sekmeden “Add” butonuna tıklayarak yapabilirsiniz. Kayıtlar eklendikten sonra görünüm aşağıdakine benzer olacaktır.

– Kayıtları aşağıdaki sorguyu çalıştırarak da girebilirsiniz. Bunu yukarıda yaptığımız gibi “Execute SQL” sekmesinden yapabilirsiniz.

INSERT INTO "kisiler" VALUES(1,'Harun Reşit','Zafer',30,1);
INSERT INTO "kisiler" VALUES(2,'Derya','Deniz',24,0);
INSERT INTO "kisiler" VALUES(3,'Emir','Aydın',33,1);
INSERT INTO "kisiler" VALUES(4,'Levent','Denizeri',25,1);
INSERT INTO "kisiler" VALUES(5,'Abbas','Yolcu',25,1);

2- Java ile veritabanına bağlantı

Hatırlarsanız Java ile MySQL’e bağlanırken projemize “MySQL JDBC Driver” isimli kütüphaneyi eklememiz gerekiyordu. Aynı şekilde SQLite için de çeşitli JDBC sürücüleri mevcut. Ancak MySQL sürücüsü Netbeans ile birlikte hazır bir kütüphane olarak geliyor ve projeye eklenmesi daha kolay. SQLite için ise ilgili jar dosyasını indirip projemize eklememiz gerekecek. Aşağıdaki bağlantılardan sürücüyü, kaynak kodlarını ve döküman kodlarını indirebilirsiniz. Bunları projenize nasıl ekleyeceğinizi bilmiyorsanız şu makale yardımcı olacaktır.

1- sqlite-jdbc-3.7.2.jar

2- sqlite-jdbc-3.7.2-javadoc.jar

3- sqlite-jdbc-3.7.2-sources.jar

– Netbeans projenizin ana dizinine “db” ve “lib” isimli iki yeni klasör açmanızı ve jar dosyalarını “lib” klasörünün içerisine, “vt.sqlite” ya da benzer isimli veritabanı dosyanızı da “db” isimli klasörün altına kopyalamanızı öneririm.

– Veritabanına bağlantı parametreleri ise aşağıdaki gibi olacaktır.

private Connection conn = null; //Bağlantı nesnemiz
private String url = "jdbc:sqlite";//veritabanının adresi ve portu
private String dbName = ":db/vt.sqlite"; //veritabanının dosya yolu
private String driver = "org.sqlite.JDBC";//SQLite ile Java arasındaki bağlantıyı sağlayan JDBC sürücüsü

Projenin diğer kısımların önceki makalelerde açıkladığım için bir daha açıklama gereği duymuyorum. Zaten kaynak kodlarda gereken her şey mevcut. Bu dersin kaynak kodlarını Netbeans projesi olarak buradan indirebilirsiniz.

Herkese kolay gelsin

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInPrint this pageEmail this to someone

15 Yorum

  1. makaleleriniz çok yararlı oldu teşekkürler yayınladığınız için. daha fazlasını bekliyoruz

  2. Merhabalar,
    Öncelikle çalışmanız çok yararlı ve başarılı olmuş teşekkür ederim.Fakat projenizi netbeans da açıp çalıştırdığımda tablo sütun isimlerinin gözükmediğini fark ettim sanırım veritabanı ile alakalı. Bu konuda yardımcı olursanız sevinirim..

  3. Teşekkür ederim sorunu hallettim hocam.
    Bu arada bir sorum daha olacaktı.Netbeans üzerinden connection wizard kullanarak veritabanına bağlanmaya çalıştım fakat dosya yolunu jdbc:sqlite:db\vt.sqlite yazdıgım halde geçersiz dosya yolu hatası verdi.daha farklı nasıl yazabilirim acaba?

  4. order by ile isimleri sıraladığımızda türkçe karakter sorunumux var

  5. Hocam yorum yaptım yukarda duruyor mail de attım size ancak olumlu ya da olumsuz bi geri dönüş yapmadınız, ORDER BY ile isimleri sıraladığımızda türkçe karakter ile başlayanları en sona atıyor bunun çözümünü biliyor musunuz?

  6. SQLite Manager da öyle bi özellik yok (araştırmama göre sqlite türkçe desteğiyle gelmiyor ve nasıl türkçe sıralamayı yapacak şekilde ayarlanır bulamadım, beceremedim), bende bulamamış olabilirim. Gerçekten çok uğreştım bununla ve hala bi çözüm bulamıyorum. Proje dosyalarınız elinizde sonuçta bi deneseniz ve makalenin sonuna türkçe sıralamayı nasıl yapabileceğimizi de ekleseniz gerçekten çok yararlı olacak. Şimdiden teşekkürler iyi çalışmalar

    • admin

      04 Ocak 2013 at 09:55

      Biraz araştırdım bu konuyu ve gördüm ki bunun basit bir çözümü yok. En basit çözüm verileri veritabanından çektikten sonra sıralatmak. Örneğin her bir kaydı bir nesneye atıp bu nesnelerden bir liste oluşturulabilir. Daha sonra bu liste sıralanabilir.

  7. Evet basit bir çözümü yok ve hiç kimse de oturup uğraşmamış galiba bu sorunla. Ya dediğiniz gibi veri tabanından çekip sıralamışlar (ki bende öyle yaptım) ya da sqlite kullanmaktan vazgeçmişler projelerinde. Benim SQLite’a Türkçe sıralama desteği verecek eklentiyi yazıp ekleyecek kadar bilgim ve tecrübem yok ama o kadar araştırma yapmama rağmen hiç kimsenin böyle bişeyi yapmadığını(ya da paylaşmadığını) gördüm. Bunu yapabilecek kadar tecrübe kazandığımda yazılımda, bu konuyla alakalı bir yazı yazmak isterdim :).

    Bulduğum çözüm her ne kadar işimi görse de içime sinmiyor, benim SQLite’a o eklentiyi yazabilmem gerekirdi diye düşünüyorum hala, şimdilik ara veriyorum bu konuya ama illaki tekrar uğraşırım.

    Cevaplarınız ve önerileriniz için teşekkürler, iyi çalışmalar.

  8. hocam video indirme linkini yenileye bilirmisiniz link kırık.

  9. Merhaba Hocam,
    Gerçekten çok faydalı bir makale olmuş. Öncelikle bunun için teşekkür ediyorum. Ancak kafama takılan bir şey var;
    Mesela ben SQLite’ı kullanarak bir masa üstü uygulaması yaptım diyelim. Bu uygulamayı yüklediğim her bilgisayara Firefox Sqlite Manager’ıda indirip kurmam gerekiyor mu??

Bir Cevap Yazın

E-posta adresiniz yayınlanmayacak

*

© 2017 Harun Reşit Zafer

Temayı tasarlayanAnders NorenYukarı ↑