şimdi .Net ile hiç bir program çalıştırmadan,sunucu yöneticisi ile muhattab olmadan bu işlemi gerçekleştirebiliyoruz. Nasıl mı? Web servisleri sayesinde. Bu yazımızda Windows Forms ile Web Servislerine erişecek ve internetteki veritabanımız ile işlem yapacağız. Ben kodları C# ile yazacağım, siz VB.Net kullanıyorsanız basit bir şekilde VB.Net’e çevirebilirsiniz… Uygulamamızı adım adım geliştireceğiz. Adımları düzgün bir şekilde uygularsanız sorun çıkmayacaktır…

1) Web Servisimizi Oluşturalım…

Şimdi lütfen aşağıdaki gibi bir web servisi oluşturunuz.

2) Veritabanımızı Oluşturalım

Ben bu uygulamada Access veritabanı kullanacağım, siz isterseniz SQL Server da kullanabilirsiniz ancak kodlarda gerekli değişiklikleri yapmayı unutmayınız. Ben aşağıdaki gibi bir veritabanı yapısı kullanacağım.

Veritabanımı, bu uygulamada web servisim ile aynı klasöre koyuyorum.Adını da gördüğünüz gibi vt.mdb yapıyorum.

3) Web Servis kodları

Sıra web servisimizin kodlarını yazmaya geldi. Eğer VS.Net ile çalışıyorsanız service1.asmx.cs dosyasını, yok kendiniz web servisi yarattıysanız service1.asmx dosyasının kod bloklarını kodlarımızı yazmak için kullanabilirsiniz… Şimdi size uygun bölüme aşağıdaki kodları yazınız.

[WebMethod]
public DataSet ProgramaGonder()
{
OleDbConnection objBaglanti =
new OleDbConnection(”Provider=Microsoft.Jet.OLEDB.4.0;DATA Source=”+ Server.MapPath(”vt.mdb”)+”");
objBaglanti.Open();

DataSet objDs = new DataSet(”data_setim”);
OleDbDataAdapter objVeriKoprusu =
new OleDbDataAdapter(”Select * from Siteler order by fldSiteAd asc”,objBaglanti);
objVeriKoprusu.Fill(objDs,”siteler_tablo”);
return objDs;
}
[WebMethod]
public void ProgramdanAl(string strAd, string strUrl)
{
OleDbConnection objBaglanti =
new OleDbConnection(”Provider=Microsoft.jet.OLEDB.4.0;DATA Source=”+ Server.MapPath(”vt.mdb”)+”");
objBaglanti.Open();

OleDbCommand objKomut = new OleDbCommand(”INSERT INTO Siteler (fldSiteAd,fldSiteAdres) Values (’”+ strAd.ToString() +”‘,’”+ strUrl.ToString() +”‘)”,objBaglanti);

objKomut.ExecuteNonQuery();
}

Eğer biraz C# ile ilgilenmişseniz bugüne kadar [WebMethod] kodunu fark etmişsinizdir.Normalde Winforms uygulamalarında kullanılmayan bir koddur bu, sadece web servislerinde kullanılır. Bu koddan sonraki metodun web servisinin ona ulaşacak program ya da sayfalar için olduğunu anlar, yani onları birer web servisine dönüştürür.

Burada 2 tane metod tanımlı. Biri ProgramaGonder(), ki bu metod veritabanına bağlanıp veriyi programa DataSet halinde yolluyor, diğeri ise ProgramdanAl(), bu da programdan gelen veriyi veritabanına ekliyor.Önce ProgramaGonder() metodunu inceleyelim. Bu metodda veritabanına bağlanmak için objBaglanti isimli bir nesne oluşturuyouz. Veritabanımız Access olduğu için bunu OleDbConnection ile yapıyoruz. Daha sonra DataSet oluşturuyor ve adını “data_setim” koyuyoruz. OleDbDataAdapter sayesinde bir veri koprüsü oluşturup SQL kodumuz ile çektiğimiz verileri objVeriKoprusu.Fill özelliği ile DataSet’imize yüklüyoruz.Son olarak verileri alan DataSet’i return komutu ile döndürüyoruz.

İkinci metodu inceleyecek olursak. Burada 2 tane overload var. Bunların ikisi de string türünde. Bu veriler bize programdan gelecek. Metodu incelemeye devam edersek, yine bi bağlantı oluşturmuşuz. Ancak burada DataSet ya da DataAdapter yok. Burada Command nesnesi var. SQL komutları yürütmemizi sağlayan bir nesne olan OleDbCommand. Aslında kodlarının yazımı DataAdapter’e benzemesine rağmen çalışma mantıkları çok farklıdır. Mesela DataAdapter’de SQL sorgusu hemen yürütülmesine rağmen Command’da objKomut.ExecuteNonQuery() satırı ile SQL’i yürüttük. Buradaki SQL’imizde gördüğünüz gibi veriyi alıp, veritabanına ekliyoruz.

Bu hali ile kodları web servisinizi çalıştırmaya kalksanız hata verir. Çünkü bu kodlarda kullandığımız OleDbCommand, OleDbConnection gibi nesneleri taşıyan namespace’i sayfamıza eklemedik. Bunu da en üstteki bölümden yapıyoruz. Kodlarımızın üst tarafı aşağıdaki gibi olmalı.

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
using System.Data.OleDb;

4) Windows Programımızın oluşturulması…

Biraz sonra oluşturacağımız program ile web servisimize bağlanacak ve az önce web servimizde yazdığımız kodların icra edilmesini sağlayacağız. Tabi ki önce projemizi oluşturalım…

Projenizi oluşturduysanız kodlamaya geçmeden önce yapmanız gereken bir şey daha var. Biz bu uygulamamızda web servisi kullanacağımız için referans olarak eklememiz lazım. Eklemek için aşağıdaki şekle bakabilirsiniz.

“Add Web Reference…”a tıkladıktan sonra açılan penceredeki adres satırına web servisinizin .asmx dosyasının adresini girmelisiniz. Mesela, ben “http://localhost/csharpservis/service1.asmx” adresini girdim. Web servisinin bulununca “Add Reference” düğmesine tıklamalısınız.Eğer işlemler sorunsuz olarak gerçekleşti ise şu an referansınız eklenmiş demektir. Uygulamamızın tasarımını yapabiliriz demek. Ben aşağıdaki gibi bir program hazırladım.

Böyle bir tasarımı da hazırladıysanız kod yazma zamanı gelmiş demektir.

5) Form1′in Yüklenme Olayı…

Programımız ilk yüklendiğinde yapılacak işlemleri burada belirliyoruz. Bizim istediğimiz program açılınca web servisine bağlansın ve objDg isimli DataGrid’i dolduracak DataSet’i alsın…

private void Form1_Load(object sender, System.EventArgs e)
{
DataSet objDs =
new DataSet(”data_setim”);
maxipower.Service1 Serv
isimiz = new maxipower.Service1();
objDs = Serv
isimiz.ProgramaGonder();

objDg.SetDataBinding(objDs,”siteler_tablo”);
}

Kodlarımıza şöyle bi bakalım. Önce objDs adında bir DataSet oluşturuyoruz. Biraz sonra web servisinden gelecek veriler bu DataSet’e yüklenecek çünkü. İşin esas kısmını yapan web servise bağlantı ise bi sonraki satırda oluyor. Buradaki “maxipower” benim bilgisayarımın adı.Bu adı “Solution Explorer”dan değiştirebilirsiniz.Neyse, kodlarımız ile web servisimize bağlanıyoruz ve sonra ProgramaGonder() metodunu çağırıyoruz ve gördüğünüz gibi objDs isimli nesneye atıyoruz bunu;çünkü bu metot bir DataSet döndürüyor.Bu kod ile dönen DataSet verisi direk bizim DataSet’imize yükleniyor.

Son satırda ise objDg isimli DataGrid’imize DataSetteki “siteler_tablo” isimli tabloyu “Bind” ediyoruz,yani bağlıyoruz. Eğer daha önce ASP.Net ile de ilgilendiyseniz kodların farklı olduğunu görmüşsünüzdür.

6) Düğme’nin tıklanma olayı…

Bu bu yazımızın son kodları. Bu kodu yazdıktan sonra uygulamamızda bir eksik kalmamış olacak.Aşağıdaki kodları düğmenizin tıklanma olayına ekleyiniz.

private void Ekle_Click(object sender, System.EventArgs e)
{
maxipower.Service1 Serv
isimiz = new maxipower.Service1();
Serv
isimiz.ProgramdanAl(txtAd.Text,txtAdres.Text);
MessageBox.Show(”Site adı ve adresi eklendi”,”Veri Eklendi”,MessageBoxButtons.OK,MessageBoxIcon.In
formation);
}

Gördüğünüz gibi bu işlemde oldukça basit kodlarla yapılıyor. Servisimiz isimli web servisi nesnemizi normal bir metot çağırıyor gibi çağırıyoruz. İki tane “textbox”taki veriyi overload olarak yolluyoruz. Son olarakta kullanıcı bilgilendirmek için MessageBox ile kullanıcıya mesaj çıkatıyoruz.

Favorilerinize Ekleyin.
  • BlinkList
  • del.icio.us
  • Digg
  • Netvouz
  • DZone
  • ThisNext
  • MisterWong
  • Wists
  • blogmarks
  • Furl
  • Netscape
  • NewsVine
  • Reddit
  • Shadows
  • Technorati
  • YahooMyWeb
  • Fark
  • feedmelinks
  • Fleck
  • kick.ie
  • LinkaGoGo
  • Linkter
  • MyShare
  • Spurl
  • Webride