|
ADO.NET ve SQL Server CE |
|
Gönderiliyor lütfen bekleyin... |
|
|
Merhabalar, bugünkü makalemizde Visual Studio ile
birlikte gelen ve mobil uygulamalarda kullanılan mobil cihaz uygulamalarını inceleyeceğiz. Bu konuya Visual Studio ile tanıştığım günden
beri meraklıyım ama yakın zamandır hobi olarak ilgilenmeye başladım. Görünürde
çok az döküman olsada konunun içine girip biraz araştırma yapınca oldukça güzel
döküman ve örnek olduğunu fark ettim. Benim gibi yeni başlayanlar
için anlamak oldukça zor. Bu konuyu araştırırken elde ettiğim bilgileri sizinle
paylaşmak istedim.
Visual studio ortamında mobile uygulamarın da
geliştirilebiliyor olması ve ortak programlama dili olan C# veya Visual
Basic.Net i kullanabilme olanağı sunması proje geliştirme açısından çok
kolaylık sağlar. Bu durum projelerin çok ayaklı olabilme özelliği kazandırır.
Çok ayaklılık, uygulamamızın modüller olması ve bazı modüllerin masaüstü,
bazılarının web ve bazılarının da mobil uygulama olmasına olanak tanımasıdır.
Bu da kodların standart olmasını ve okunabilirliğini artırır.
Ortak dil kullanırken .Net Compact
Freameworkun .Net Freamework e göre benzerliği aşağıdaki
şemada gösterilmiş.
Şekil 1: .Net
Compact FreameWork’un mimarisi
.NET Compact Framework aşağıdaki
özellikleri .NET Framework de olduğu gibi tam kullanabilir.
.NET Compact Framework te kullanılan kütüphanelerin dağılım
şeması. Var olan sınıfların kulanım şekli .Net Freameworkte olduğu
gibidir.
Şekil 2: .NET Compact
Framework sınıf dağılımları
Yanlız kötü haber aşağıda gösterilen kütüphaneleri projelerimizde kullanamıyoruz. Bunu okuduğumda çok ilgimi çekmişti. Çünkü ADO.Net’ te azından OleDB kütüphanesinin kullanılabiliyor olmasını umut etmiştim.
-
1-Server-side APIs, such as ASP.NET, Enterprise
Services, MSMQ ve WMI desteği
-
2- COM Interop
-
3- OleDb and ODBC .NET data providerları
-
4 - Generic serialization
-
5 - Asynchronous delegates
-
6 - Application configuration dosyaları (Api.config)
-
7 - .NET Remoting
-
8 - Printing
-
9 - XPath/XSLT
Bu konu ile ilgili geniş bilgiyi aşağıdaki adreste indirilen
Mobile Application Development Toolkit 2004 ’ te bulabilirsiniz.
http://www.microsoft.com/downloads/details.aspx?familyid=f4328333-0fd4-4348-88c0-39d10fb64f0a&displaylang=en
Mobil cihaz uygulamalarının avantajlarından birtanesi istemci ile sunucu arasında istenildiği anda bağlantının kurulabilmesidir. Bu avantaj projeden projeye değişir.Bazı projeler gerektiğinde sunucuya bağlanmasını bazıları da kullanılacak dosyanın önceden cihaza yükleyip çalışmasını uygun görür. Bu xml, access veya
normal text dosyası olabilir.
Esan konumuz Smart Device Applicationlarda SQL Server Ce kütüphanesini ve bize sunduğu araçları kullanmak olacaktır. Aşağıdaki şemada SQL Server Ce nin mimarisi inceleyelim.
Şekil 5: SQL Server Ce nin
yapısı
Visual Studio .NET ile geliştirdiğimiz mobil uygulamalarında
kullanabilmek için farklı veritabanı alternatifleri bulunmaktadır.
Bunlardan birtanesi verileri mobil üzerinde tutmamızı sağlayan SQL server Ce
ve verilerin uzaktaki bir sunucuda tutulmasını sağlayan ve diğer
uygulama türlerinde de sürekli kullandığımız SQL Server’dir. ADO.Net
teki SQLCe kütüphanesi SqlClient veya OleDB de olduğu gibi var olan
nesneler olan command, connection, dataadapter, transaction vb araçlar
mevcuttur ve kullanım şekilleri diğerleri gibidir.
Mobil uygulamaları en çok orta ve büyük ölçekli firmalarda kullanılıyordu.
Özellikle satıcının sahaya çıkması yani satış ve sipariş için müşteriye
ulaşmasında büyük kolaylık sağladı. Bu uygulamalar satış
oranları yükselti, bilgi kaybını engelledi ve evrak yığınından
kurtarmış oldu. Artık bu uygulamaları sadece ticari firmalar
değil çoğu sektör tercih etmekte.Kablosuz ve istediğimiz zaman ulaşabileceğimiz makinalar
hayatımızı oldukça kolaylaştırmakta.
Bugünkü senaryomuz yine orta ölçekli bir ticari firmanın sahaya
satış için göndereceği personelinin kullanması için basit bir uygulama olacak.Sitemizde Smart Device Applicationunun nasıl yapıldığı anlatan makale olduğu için ben tekrar anlatmayacağım. Başlamadan önce ilgili makaleyi okumanınızı tavsiye ederim http://www.csharpnedir.com/makalegoster.asp?MId=131
Bizim senaryoda işlenecek verinin tutulduğu dosya satıcı
sahaya gitmeden önce cihaza yüklenmiş olacak. Ama istemci ve sunucu arasında
bilgi işlendiği an bağlantının anlatılması http://www.csharpnedir.com/makalegoster.asp?MId=142 ilgili
makaleden elde edebilirsiniz.
Formun tasarımı aşağıdaki gibi olsun.
Şekil 4: Form Tasarımı
Projemizde SQLCe yi kullanacağımız için önceden Satis.sdf
dosyasını eklemiş olacağız. SQLCe kütüphanesini projemize ekledikten
sonra veritabanını yönetmek için SQLCe Query aracı yüklenmete ve bu araç
bir nevi SQL serverda olan query analizere benzemektedir.Bu query
analizeri yardımıyla veritabanınızı yönetebilirsiniz. Yeni bir veritabanı oluşturabilir tablo ekleyebilir veya silebilirsiniz. Ama yeni bir veritabanı eklerken dosyanın uzantısı olan .sdf yi eklemeyi unutmayın. Çünkü ben bunu fark edinceye kadar epey bir zaman kaybettim.
Veritabanına bağlanma ve yeni bir veritabaını oluşturma
public static SqlCeConnection Baglantim()
{
if(conn == null)
{
if (File.Exists("Satis.sdf"))
File.Delete("Satis.sdf");
string connStr = "Data Source =
Satis.sdf
";
SqlCeEngine
engine = new SqlCeEngine(connStr);
engine.CreateDatabase();
engine.Dispose();
conn = new SqlCeConnection(connStr);
if(conn.State ==
ConnectionState.Closed)
conn.Open();
}
return conn;
}
|
Kod 1: Veritabanı
oluşturma
Daha öncede dediğim gibi SQLCe deki nesnelerin
kullanılması ADO.Net i diğer kütüphaneleri ile aynı. Command nesnesinin
kullanılması.
public Int32 NewId()
{
object obj = new object();
string SQL = "SELECT MAX(ID) FROM HAREKET";
SqlCeCommand cmd = new SqlCeCommand(SQL,conn);
obj = cmd.ExecuteScalar();
if (obj == DBNull.Value || Convert.ToInt32(obj) == 0)
return 1;
return Convert.ToInt32(obj) + 1;
}
|
Kod 2: SQLCe
de Command nesnesinin kullanılması
SQLCe de transaction ve
parametrelerin kullanılması.
public string Kaydet() {
SqlCeCommand cmd = new SqlCeCommand();
SqlCeTransaction myTrans;
SqlCeParameter param ;
cmd.CommandText = "INSERT INTO HAREKET(ID,
STOK_ID, MIKTAR) VALUES (?, ?, ?)";
cmd.Connection = conn;
myTrans = conn.BeginTransaction();
cmd.Transaction = myTrans;
cId = NewId();
param = new SqlCeParameter("@ID",SqlDbType.Int);
param.Value = cId;
cmd.Parameters.Add(param);
param = new
SqlCeParameter("@STOK_ID",SqlDbType.Int) ;
param.Value = cStok_Id;
cmd.Parameters.Add(param);
param = new
SqlCeParameter("@MIKTAR",SqlDbType.Int);
param.Value = cMiktar;
cmd.Parameters.Add(param);
try {
cmd.ExecuteNonQuery();
cStok.Guncelle(cStok_Id,
cMiktar, myTrans);
myTrans.Commit();
}
catch(SqlCeException ex) {
myTrans.Rollback();
return ex.Message;
}
return "Kayıt işlemi gerçekleşti"; }
|
Kod 3: SQLCe de transaction ve
parametrelerin kullanılması.
Konu ile ilgili araştırmalara devam
ediyorum.Oldukça güzel ve zevkli bir konu. Umarım faydalı olmuştur.
Örnek uygulama
Kaynak : http://www.microsoft.com/
Msdn
Makale:
ADO.NET ve SQL Server CE ADO.NET ve SQL Feryat Olcay
|
|
|
-
-
Eklenen Son 10
-
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
|
|