Makale Özeti

Mobil uygulamalarda her an database servera bağlı olamayabiliriz. Bu durumda cihaz üzerinde bir database'e ihtiyaç duyarız. Makalede, SQL Server CE'de nasıl database yaratıp, CREATE,READ,UPDATE,DELETE yapabileceğimizi inceliycez.

Makale

Merhabalar,

Bu makalede CRUD(Create Read Update Delete) işlemlerinin gerçekleştigi mobile uygulamayı sizlerle paylaşacagım .

Mobile uygulamalarda veritabanı işlemlerinin SQLServer CE(Compact Edition) ile entegrasyonun nasıl yapıldığına değineceğiz.Bu makalede sizlerle paylaşacağım örnek Windows ve Web uygulamalarında sürekli olarak yaptığımız CRUD işlemlerinin, mobile ortamda nasıl yapıldığı anlatılmaktadır.

Mobile uygulamamızı yaparken önce 1. adım olan ve .NET ile birlikte gelen emulatörü kullanıyor olacağız.Mobile uygulamamızın emulatör tarafında nasıl görünüceği konusunda yapacağımız ilk işlem bir arayüz(interface) hazırlamak olacak.


Bu arayüz 'de yapılan işlem Mainmenu ile Database>Çıkış>Görüntüle>AnaSayfa MenuItem oluşturmak ve kayıtların Yapılacagı Textbox,Label,Panel ve Buton kontrollerini formumuza yerleştirmek.

SQLServerCE ile yapılacak olan veritabanı(database) bağlantısı için ilk adımda yapmamız gereken projemizin Reference>Add Reference kısmından System.Data.Common ve System.Data.SqlserverCE namespacelerini referanslara eklemektir.

Imports System.Data.Common
Imports System.Data.SqlServerCe

Mobile uygulamamızda arayüz'ümüzü hazırladıktan ve referansları ekledikten sonra sıradaki işlem olan veritabanı ve verilerimizin tutulacağı tabloyu oluşturmaya geldi.Burada yapacağımız işlem hepimizin yakından tanıdığı Northwind veritabanını ve Employees tablosunu oluşturmak olacak.


Dim cn As SqlCeConnection
cn = New SqlCeConnection
cn.ConnectionString = "Data Source=Northwind.sdf"
Dim eng As SqlCeEngine = New SqlCeEngine
eng.LocalConnectionString = "Data Source=Northwind.sdf"
eng.CreateDatabase()
Dim cmd As SqlCeCommand = New SqlCeCommand
cn.Open()
cn.CreateCommand()
cmd.Connection = cn
cmd.CommandText = "CREATE TABLE Employees(EmployeeID int PRIMARY KEY,FirstName nvarchar(50),LastName
nvarchar(50))"
cmd.ExecuteNonQuery()
cn.Close()
MessageBox.Show("Database Olustu ve Table Yaratıldı")

Veritabanı'mızı ve tablo'muzu oluşturduktan sonra artık kayıtları ekleme işlemine başlayabiliriz.


Panel1.Visible = False
Dim cn As SqlCeConnection
cn = New SqlCeConnection
cn.ConnectionString = "Data Source=Northwind.sdf"
Dim cmd As SqlCeCommand = New SqlCeCommand
Try
cmd.Connection = cn
cn.Open()
cmd.CommandText = "INSERT INTO Employees(EmployeeID,FirstName,LastName) VALUES(" &
txtemployeeID.Text & ",'" & txtfirstname.Text & "','" & txtlastname.Text & "')"
cmd.ExecuteNonQuery()
cn.Close()
MessageBox.Show("Kayıt Eklenmistir")
txtfirstname.Text = ""
txtlastname.Text = ""
txtemployeeID.Text = ""
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try

Şimdi yapılan işlemin gerçekten veritabanına yansıdığını görelim.Aslında yapacağımız işlem bir nevi de Select işlemi olacaktır.Bu işlem de datagrid üzerinde veritabanına eklenen kayıtları listeleme işlemidir.


Panel1.Visible = True
Dim cn As SqlCeConnection
cn = New SqlCeConnection
cn.ConnectionString = "Data Source=Northwind.sdf"
Dim cmd As SqlCeCommand = New SqlCeCommand
Dim adapter As New SqlCeDataAdapter(cmd)
Dim ds As New DataSet
Try
cmd.Connection = cn
cn.Open()
cmd.CommandText = "Select * From Employees"
adapter.Fill(ds)
DataGrid1.DataSource = ds.Tables(0)
cn.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try

Eklenen kayıtlar üzerinde yapılan Update(güncelleme) işlemini inceleyelim.

Panel1.Visible = False
Dim cn As SqlCeConnection
cn = New SqlCeConnection
cn.ConnectionString = "Data Source=Northwind.sdf"
Dim cmd As SqlCeCommand = New SqlCeCommand
Try
cmd.Connection = cn
cn.Open()
cmd.CommandText = "UPDATE Employees Set FirstName='" & txtfirstname.Text & "', Lastname='" &
txtlastname.Text & "' where EmployeeID=" & txtemployeeID.Text & " "
cmd.ExecuteNonQuery()
cn.Close()
MessageBox.Show("Kayıt Güncellenmiştir")
txtfirstname.Text = ""
txtlastname.Text = ""
txtemployeeID.Text = ""
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try


Bu işlem esnasında 1 numaralı ID'ye sahip Soner Yasar kaydını FirstName=netron ve LastName=Soner olarak update işlemi gerçekleştirdim bakalım bu değişiklik veritabanımıza yansımış mı?Bunu inceleyeceğiz aslında Select işlemini tekrarlamış olacağız.

Bu silme işleminden sonra tüm yaptıklarımız boşa gitmek üzere... Ama amacımız öğrenmekti ve öğrendik değil mi? Cevabınız evet ise, gönül rahatlığı ile aşağıdaki kod satırlarını çalıştırabilirsiniz.

Panel1.Visible = False
Dim cn As SqlCeConnection
cn = New SqlCeConnection
cn.ConnectionString = "Data Source=Northwind.sdf"
Dim cmd As SqlCeCommand = New SqlCeCommand
Try
cmd.Connection = cn
cn.Open()
cmd.CommandText = "DELETE from Employees where EmployeeID=" & txtemployeeID.Text & " "
cmd.ExecuteNonQuery()
cn.Close()
MessageBox.Show("Kayıt Silinmiştir")
txtfirstname.Text = ""
txtlastname.Text = ""
txtemployeeID.Text = ""
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try

Ana Sayfa yazılan MenuItem da yapılan işlem Select işlemi yaparak aslında formumuza eklemiş olduğumuz Panel kontrolünü değiştirmektir.Görüntüle Menuıtem'ı ile yapılan Select işleminin akışı aşağıdaki gibidir.

Panel1.Visible = True
Dim cn As SqlCeConnection
cn = New SqlCeConnection
cn.ConnectionString = "Data Source=Northwind.sdf"
Dim cmd As SqlCeCommand = New SqlCeCommand
Dim adapter As New SqlCeDataAdapter(cmd)
Dim ds As New DataSet
Try
cmd.Connection = cn
cn.Open()
cmd.CommandText = "Select * From Employees"
adapter.Fill(ds)
DataGrid1.DataSource = ds.Tables(0)
cn.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try

Bu makalemde sizlere mobile bir uygulama örneği yaparak veritabanı işlemlerinin nasıl yapıldığını anlatmaya çalıştım.Bu uygulamaya ait kodlara download bolumunden ulaşabilirsiniz. Bu çalışma makaleye örnek teşkil ettiği ve öğrenme amaçlı olduğundan hata testleri ve hata yakalama fonksiyonları yazılmamıştır.

Soner Yaşar (soner.yasar@netron.com.tr)
Kaynak Kodlar