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.
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
04 Kasım 2012 at 13:24
makaleleriniz çok yararlı oldu teşekkürler yayınladığınız için. daha fazlasını bekliyoruz
14 Kasım 2012 at 09:34
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..
14 Kasım 2012 at 11:08
Öncelikle sorunun veritabanı ile ilgili olmadığını belirteyim. Sorun Jtable ile ilgili. VAktim olduğunda kodu düzelteceğim, şimdilik sorunun cevabını şu bağlantıda bulabilirsiniz. http://stackoverflow.com/questions/4839037/column-header-name-in-jtable-java
14 Kasım 2012 at 12:01
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?
24 Kasım 2012 at 17:44
order by ile isimleri sıraladığımızda türkçe karakter sorunumux var
01 Aralık 2012 at 08:46
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?
18 Aralık 2012 at 04:01
Sorunuzu yeni gördüm. Karakter kümesini (Charset, Collation) utf8_turkish seçmeniz gerekiyor. Şöyle bir yazı var. Muhtemelen sorunuza cevap olur: http://www.huysuzadam.com/2009/05/23/mysql-turkce-destegi-collation-ve-character-set-nedir/
18 Aralık 2012 at 03:28
???
24 Aralık 2012 at 05:11
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
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.
05 Ocak 2013 at 19:49
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.
19 Aralık 2013 at 17:11
hocam video indirme linkini yenileye bilirmisiniz link kırık.
26 Aralık 2013 at 00:55
indirme linkini yeniledim
16 Şubat 2017 at 08:13
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??
30 Eylül 2017 at 11:36
Hayir gerekmiyor