Browsed by
Etiket: ado.net

C# Winforms SQLite Kullanımı (VS 2013/VS 2015)

C# Winforms SQLite Kullanımı (VS 2013/VS 2015)

Merhaba arkadaşlar, bu başlıkta SQLite ile C#/Entity Framework çatısında Winforms uygulama geliştirmek için gerekli olan yapılandırmaları anlatacağım. Bu konuda pek çok kaynak var fakat VS 2013 ve VS 2015 kullanan yazılımcılar için SQLite’a giriş zorlu oluyor. Gömülü veritabanı sistemlerinde sorun yaşayan çok kişi var umarım yardımcı olur.

Nedir SQLite?
SQLite, en çok dağıtılan ve tavsiye edilen, tamamen C/C++ programlama dilleriyle geliştirilmiş açık kaynak SQL veritabanı motoru. Günümüzde mobil cihazlar ile kullanımı çok yaygınlaştı.

C# Winforms uygulama geliştirmede kullanılabilecek gömülü veritabanı sistemlerinin çoğunu denedim. (SQL Compact CE, LocalDB, SQL Server Lite…) Yaklaşık 1 yıl boyunca SQL Compact CE 4.0 kullanıyordum fakat bazı kullanıcılarımda sorunlar yaşamaya başlayınca farklı bir arayış içine girdim. C# Winforms gömülü SQL veritabanı motorları arasında kesinlikle en başarılı SQLite. (karşılaştırma tablosu). Kullanıcıya ekstra bir patch/güncelleştirme yükletme yükümlülüğü yok. (.Net Framework dışında)

Veri miktarı çok büyükse NoSQL tercih etmek mantıklı olacaktır, fakat küçük boyutlu masaüstü uygulamalar için SQLite yeterli.

En çok sevdiğim özellikleri

  • Kullanıcının ekstra bir paket yüklemesine gerek yok,
  • En kolay şekilde AutoIncrement primary key sütun tanımlayabilme,
  • Güncelleme yapıyorsak, yeni bir versiyonda farklı bir tablo yapılandırması gerekiyorsa birkaç satır kod ile tablo üzerinde ve model üzerinde değişikliğe izin vermekte. (Diğer gömülüler’de görmedim). En iyi avantajı bu.
  • Ücretsiz, güvenli, popüler.

Visual Studio 2015 için SQLite Kütüphanesi ve Eklentileri
SQLite resmi web sitesinden “SQLite sqlite-netFx46-setup-bundle-x86-2015-1.0.99.0″ paketi için anlatılmıştır.
VS2013 kullanıcıları uygun sürümü indirmelidir. Dikkat edilmesi gereken tek şey VS 2015 paketinde .Net Framework 4.6 ve üstü desteklenecek.

Kurulumda dikkat edilmesi tek önemli şey VS 2015 için eklenti kurulumu seçeneğini seçmek. VS 2013 içinse yine aynı şekilde.
sq0

Konsol ekranı ile devam eden kurulum bende 1 dk sürdü. (daha önce 5dk sürdüğünü hatırlıyorum, acele etmeyin)

Proje Oluşturma

  • Visual Studio 2015′ de New > New Project > (.Net Framework 4.6 seçili) > Windows Forms Application projesi oluşturuyoruz. (VS 2013 için 4.5.1 ve üstü)
  • NuGet Package Manager üzerinden “Entity Framework 6.x” kuruyoruz.
    nuget
  • Projemize c:\program files(x86)\System.Data.SQLite\2015\bin\ klasörü altındaki:
    SQLite.Designer.dll, System.Data.SQLite.dll, System.Data.SQLite.EF6.dll, System.Data.SQLite.Linq.dll dosyalarını referans olarak ekliyoruz.
    sqldll
  • Burası çok önemli! Eklediğimiz referans dosyalarının Copy Local seçeneğini “true” yapsakta, Debug klasörüne manuel kopyalamamız gerekiyor.
    copydll
  • Burası çok daha önemli, bu sorunu çözmem biraz zamanımı almıştı. Projemizin App.Config dosyasında eklediğimiz DLL dosyalarının versiyon ve accesstoken değerlerini doğru yazmamız gerekiyor. Kodu olduğu gibi alabilirsiniz. (VS 2013 için düzeltme gerekecek bir sonraki adımda yer almakta)

  • Yukarıda yer alan kodda “1.0.99.0” olarak geçen versiyon numarasını mevcut SQLite dll versiyonu ile değiştirmeniz gerekebilir. Hangi versiyonu kullandığınızı C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config dosyasında (SQLite) olarak aratarak bulabilir ve gerekli düzenlemeyi yapabilirsiniz.
  • Son olarak program.cs ana sınıfımıza aşağıdaki kodu eklemeniz gerekmektedir.
    programcs
  • Artık mevcut SQLite veritabanı modeli eklenebilir veya yeni Ado.Net Entity Model oluşturulabilir.

SQLite veritabanı oluşturmak

Ben SQLite veritabanı tablosu oluşturmak ve hızlıca düzenlememi sağlayan Firefox üzerinde  SQLite Manager eklentisini kullanıyorum ve tavsiye edebilirim. İsterseniz VS 2015 üzerinden Server Explorer penceresinden de SQLite veritabanı oluşturabilirsiniz. (SQLite Manager de autoincrement ile primary key oluşturmak mümkün).

  • Projemize yeni item ekliyoruz. Sırasıyla:

ado1 ado2 ado3 ado4 ado5

  • Veritabanımızı projemiz üzerinde modelledik. Artık tüm imkanlarından faydalanabiliriz. Tebrikler.

ado6 ado7