Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Bahadır Arslan
Bahadır Arslan
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
2 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  XML / Web Serv. Bahadır Arslan
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : XML / Web Serv.
Yayınlanma Tarihi : 26.6.2003
Okunma Sayısı : 52655
Yorum Sayısı : 11     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Burak Selim Şenyurt
Kurumsal Yazılımcının Oyun Geliştirme ile İmtihanı 28.3.2024
Burak Selim Şenyurt
Matematik ve Oyun Programlama - Missile Command - Final 28.3.2024
Turhal Temizer
Conda install environment.yml Package 28.3.2024
Turhal Temizer
Mac OS/X Removing CUDA 28.3.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Web Servisleri ile Uygulama Geliştirme
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
        Yaklaşık 2 yıl önce, sitemiz MaxiASP de yeni bir projeye başlamıştık, amacımız bir program yaratıp kullanıcılara dağıtmaktı; Bu program web sitesindeki gelişmeleri takip edecek ve kullanıcıya bildirecekti. Ancak çalışmayı yürüten arkadaşlarım bir süre sonra tıkandıklarını belirttiler. Çünkü bir sorun vardı. Programın, web sitesindeki verileri sağlıklı bir şekilde alabilmesi için sunucuda bir programın çalışması gerekiyordu ama böyle bir ihtimal yoktu. Bu yüzden bu projeyi rafa kaldırmak zorunda kaldık.

        Ancak ş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 Servisimiz = new maxipower.Service1();
         objDs = Servisimiz.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 Servisimiz = new maxipower.Service1();
         Servisimiz.ProgramdanAl(txtAd.Text,txtAdres.Text);
         MessageBox.Show("Site adı ve adresi eklendi","Veri Eklendi",MessageBoxButtons.OK,MessageBoxIcon.Information);
      }
        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.

        Bu son kodumuzla hem programımızın hem de yazımızın sonuna geldik. Sanıyorum sizin için az da olsa yararlı birşeyler yapabildim. Ancak benim sizden istediğim bir şey var. User Interface konusu hakkında bilginiz varsa sizde bunları yazıya dönüştürüp bizimle paylaşın...

        Projenin winforms kodlarını indirmek için tıklayınız...

Makale:
Web Servisleri ile Uygulama Geliştirme XML ve Web Servisleri Bahadır Arslan
  • Yazılan Yorumlar
  • Yorum Yaz
OCA
8
2013
Hocam ayrıyetten Visual Studio 2012 de datagrid yok. Datagridview var ama onunda "SetDataBinding" özelliği yok. Yardımcı olur musunuz?
OCA
8
2013
Hocam merhabalar öncelikle yazınız çok bilgilendirici olmuş ama bir soru sormak istiyorum. "maxipower" benim bilgisayarımın adı derken? Solution Explorer dan değiştirebilirsiniz demişsiniz. Nasıl değiştiriliyor? Sadece orada takıldım.
MAR
8
2006
İşlem, güncelleştirilebilir sorgu kullanmalıdır hatası kullanıcı haklarından kaynaklanıyor tahmimin.
MAR
7
2006
Bu hata için yayınladığın klasörü sağ tıklayıp güvenlikte dosyaya tam denetim ver.
AĞU
12
2004
bu programı çalıştıramadım hata veriyor. yeni kayıt girme kısmında hata: System.Data.OleDb.OleDbException: İşlem, güncelleştirilebilir sorgu kullanmalıdır. at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr) at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) at System.Data.OleDb.OleDbCommand.ExecuteNonQuery() at Web.Service1.ProgramdanAl(String strAd, String strUrl) in c:\inetpub\wwwroot\web\service1.asmx.cs:line 70
AĞU
29
2003
çok faydalı, az ama öz olmuş, eline sağlık ...
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • 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