İbrahim BAYIR ibrahimbayir.com.tr | CSharp

Linq ile Sql Cümlesi Çalıştırma

31. Ekim 2010

Ouml;ncelikle merhabalar bu yazımızda Linq ile sql cümlesinin nasıl çalıştırılabileceğini ve buradan dönen değerin nasıl alınabileceğini inceliyor olacağız. Şu anda belkide neden sql cümlesi çalıştırmak için Linq'yu kullanayım diye düşünebilirsiniz. Fakat eğer ki projenize Linq ile başlamışsanız veya zaten Linq kullanıyorsunuz yönteminizi değiştirmeden böylece istediğiniz sql cümlesinide çalıştırabilirsiniz.

Sql cümlesinin nasıl çalıştırıldığına değinmek gerekirse aslında yöntemi çok basit. Bir adet stored procedure oluşturacağız ve bu oluşturduğumuz stored procedure'u linq projemize ekleyeceğiz. Bu stored procedure'mize yalnızca bir adet parametre gönderilebilir olacak ve gönderdiğimiz parametrede sql cümlemizin ta kendisi oalcak. Böylece gönderdiğimiz sql cümlemiz stored procedure içerisinde çalıştırılıp çıkıtısı bize gönderilecek.

Lafı fazla uzatmadan hemen stored proceduremuzu yazalım. Sql serverimizi açıyoruz ve yeni bir query yazıyoruz.

CREATE PROCEDURE spKomutCalistir
@SqlKomut NVARCHAR(4000)
AS
BEGIN
EXEC (@SqlKomut)
END

Yazdığımız bu basit stored procedure'de gördüğünüz üzere sadece gelen parametreyi çalıştırıyoruz. Daha sonra bu yazdığımız ve çalıştırdığımız procedure'ü linq dosyamıza ekliyoruz.

Ben Visual Studio'yu açarak bir Asp.Net Web Application oluşturuyorum. Daha sonra projeye sağ tıklayarak Add-New Item diyerek

Linq ile Sql Cümlesi

 Linq To Sql seçilerek projeye eklenir.

Linq ile Sql Cümlesi

Projeye ekledikten sonra sıra geldi yazdığımız stored procedure 'yi Linq içerisinde eklemeye. Bunun için yanda Server Explorer penceresinen yazdığımız stored procedure seçilerek Linq to Sql içerisine sürüklenip bırakılır.

Linq ile Sql Cümlesi

Bu işlemide yaptıkdan sonra şimdi verilerimizi çekeceğimiz bir tablo yapıyoruz. Ben sadece 3 alanı olan bir tablo yaptım aşağıdaki gibi.

Linq ile Sql Cümlesi

Tablomuzada örnek bazı veriler girdikten sorna artık sql cümlemizi yazabiliriz. Tabiki sql cümlemizi yazmadan önce gelen verilerimizi tutacak bir sınıf yazıyoruz. Bu sınıfı şuan için linq to sql dosyamızın designer.cs dosyası içerisine yazabiliriz.

Linq ile Sql Cümlesi

Şimdi sıra geldi linq to sql dosyamızın içerisine eklemiş olduğumuz KomutCalistir stored procedure'ne geri dönüş tipini bildirmeye. Tabiki geri dönüş tipi olarakda yazdığımız insanlar sınıfını vereceğiz. Komutcalistir methodumuzun son hali aşağıdakine benzeyecek.

Linq ile Sql Cümlesi

Gördüğünüz üzere burda geri dönüş tipini ISingleResult arayüzüne dönüştürdük. Bunun nedeni ise göndereceğimiz sorguların yalnızca 1 dönüş tipinin olmasından kaynaklanıyor. Yani iki farklı select sorgusunu barındıramaz yazdığımız sql cümlesi. Artık sorgumuzu yazıp bir gridView'e verilerimi aktarabiliriz. Sayfanın load olayına hemen kodlarımızı yazıyoruz.

Linq ile Sql Cümlesi

Geriye F5 e basarak projemizi çalıştırıp görmek kalıyor.

Linq ile Sql Cümlesi

Burada bahsetmek istediğim birkaç şey var. Öncelikle linq to sql otomatik olarak her yeni bir Table yada Stored Procedure eklendiğinde tüm içeriğini değiştirmekte ve dolayısıyla eğer tutucu sınıfınızı (bizim yazdığımızda insanlar) linq to sql içerisine yazarsanız her yeni birşeyler eklediğinizde sizin yazdıklarınız gidecektir. Bunun için ayrı bir dosyada sınıfınızı yazmak daha kullanışlı olacaktır.

Bu yazımızda kısaca linq to sql içerisinden nasıl sql cümlelerini nasıl çalıştırabileceğimizi incelemeye çalıştık. Umarım faydalı olmuştur.
Bir sonraki makalede görüşmek üzere. Proje dosyasını buradan indirebilirisiniz.

ibrahim BAYIR

iletisim@ibrahimbayir.com.tr

ASP.Net, CSharp , , , ,

Asp.Net QueryString Ekleme ve Silme İşlemleri

23. Ekim 2010

Merhabalar bu makalemizde Asp.Net'de QueryString işlemlerini nasıl yapabileceğimizi incelemeye çalışacağız. Aslına bakarsanır bildiğimiz gibi QueryString işlemi çok basittir. Örneğin Response.Redirect("~/adres.aspx?ID="+degisken) gibi bir komutla yapılabilir. Fakat eğer isteğimiz adres satırında var olan bir QueryString'e karışmadan yanına yeni bir QueryString ekleme veya silme işlemi ise ne yapacağız?

Öncelikle Asp.Net'de Page.Request.QueryString.Add isminde bir method bulunmakda fakat bu method salt okunur olduğunundan bu şekilde bir ekleme yapmamız yada Request.QueryString.Remove diyerek onu silmemiz mümkün olmamaktadır.

Bundan dolayı bugün biz bu işlemi nasıl yapabiliriz bunu inceliyor olacağız. Öncelikle yeni bir Asp.Net Web Application oluşturuyoruz.

Artık QueryString ekleme methodumuzu yazabiliriz.

Burada sizinde anlayacağınız üzere aslında yaptığımız işlem gayet basit. Var olan tüm QueryStringlerimizi bir değişkene aktarıyoruz ve daha sonrada bu değişkene bizim yeni eklemek istediğimiz QueryStringide ekleyerek geriye bu yeni değişkeni döndürüyoruz.

Şimdi ise QueryStringi silme methodumuzu yazalım.


Burada yaptığımız işleme gelince. Silmek istediğimiz dışındaki tüm QueryStringleri alıyoruz ve yeni bir değişkene aktarıyoruz böylece elde ettiğimiz yeni değişkenin içinde silmek istediğimiz olmuyor ve bu yeni değerimizide geriye döndürüyoruz.

Methodlarımızı denemek için sayfamıza iki tane Button koyuyoruz ve hemen Click olaylarını yazıyoruz. QueryString Ekle butonumuz

ve QueryString Sil butonumuz.

Evet artık methodlarımız hazır ve kullanılabilir.  Aklınıza belki şöyle bir soru gelmiş olabilir acaba ben bunu nerde kullanırım? Bir örnek vermek gerekirse sayfanızda arama yaptırdığınızı ve gelen sonuçlarıda belli kriterlere göre süzdüğünüzü düşünelim. Süzme işlemi için kullanıcı her bir kriter seçtiğinde sizinde bir QueryStringi yollamanız gerekir işte böyle bir durumda kullanılabilir. Umarım faydalı olmuştur.

Örnek uygulamayı burdan indirebilirsiniz.

İbrahim BAYIR
iletisim@ibrahimbayir.com.tr

ASP.Net, CSharp , , , ,

Csharp ile USB Port Okuma

25. Temmuz 2010

CSharp ile USB Portdan Bilgi Okuma

Merhaba arkadaşlar bu ilk makalemde Csharp ile USB Portundan bilgi okumayı anlatmaya çalışacağım. Aslında yapacağımız USB to RS232 Converter’i kullanarak usb portun bir seri port gibi davranmasını sağlayacağız. Günümüzde malum kullandığımız dizüstü bilgisayarlarda seriport bulunmamakda bundan dolayıda elektronikle uğraşan arkadaşların çok kullandıkları seri haberleşme dizüstü bilgisayarlar için bir sorun olmakda. Bizde bu sorunu gidermek için USB to RS232 Converter’i kullanıyoruz. Bu aracın ayrıca kendi sürücü dosyaları var. Sürücü dosyalarını yükledikten sonra takdığımız USB portu bir seri(com) port olarak görüyor.

Evet isterseniz artık projemizi yapmaya başlayalım. Fakat daha önceden ben size USB to RS232 Converter’ı göstermek isterim.

 

 

 

 

 

 

 

 

 

  

 

Visual Studio’yu açıyoruz ve New diyerek Windows-Form Application’u seçiyoruz. Yeni açılan formumuza ilk olarak COM portları okumamızı sağlayacak aracımızı yani ToolBox-Components-SerialPort aracımızı formumuza çift tıklayarak ekliyoruz.  

 

Daha sonra bilgisayarımızda hangi COM portlar açık onları görmek için formumuza bir adet COMBOBOX bir adet BUTTON ve neler okuduğumuzu görmek içinde bir adet TEXTBOX koyuyoruz. Yani formumuzun genel görünümü şekildeki gibi olacaktır.

 

 Ayrıca formumuza using System.IO .Ports; isim uzayınıda eklemeyide unutmuyoruz. Bu isim uzayının altında olan SerialPort nesnesini kullanarak açık kullanılabilir seriportların isimlerini alacağız. 

 

Öncelikle hangi portların açık olduğunu görmek için formun load olayına şunu yazıyoruz.

private void Form1_Load(object sender, EventArgs e)

        {

            comboBox1.DataSource = SerialPort.GetPortNames();

        }

Burada yaptığımız işlem combobox’ın datasource’na SerialPort nesnesinin GetPortNames dizisini bağlamak böylece bize o anda sistemde kullanılabilir olan com portların listesini verecektir.

Bir sonraki aşamada butonumuza tıklayınca porttan okumaya başlayacağız fakat ben daha önce size backgroundWorker aracından bahsetmek istiyorum. 

Bu araç aslında bize arka tarafta bir Thread yani bir iş kolu daha açmamızı sağlıyor böylece formumuz ön tarafta bir iş yaparken bu araç sayesinde de arka tarafta sürekli olarak portumuzu okutabiliriz. Formumuza bir adette BackgroundWorker aracı ekliyoruz.

Artık butonumuzun içeriğini yazabiliriz.

private void button1_Click(object sender, EventArgs e)

        {

            serialPort1.PortName = comboBox1.SelectedItem.ToString(); ;

            serialPort1.Open();

            backgroundWorker1.RunWorkerAsync();

        }

Öncelikle hangi portu kullanacağımızı belirliyoruz. Daha sonra o portu kullanıma açıyoruz ve backgroundWorker aracının asenkron olarak çalışmasını sağlıyoruz. BackgroundWorker aracının ne yapacağını ise bu aracın üzerine çift tıklayarak açılan kısma dowork event’ine yazıyoruz.

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)

        {

            while (true)

            {

                textBox1.Text += serialPort1.ReadLine();               

            }              

           

        }

Burada sonsuz bir döngü açıyoruz ve içerisinde sürekli olarak gelen veriyi textbox’ımıza ekliyoruz. Buradaki can alıcı nokta ise bize veriyi getiren ve geriye string bir değer dönderen serialPort nesnesinin ReadLine methodudur.

Burada konumuz backgroundWorker olmadığından çok fazla bu konuya deyinmeyeceğim fakat 3 önemli methodu olduğunu söyleyebilirim. Bunlar DoWork, ProgressChanged ve RunWorkerCompleted’dir.

Bunların yanında elektronikçi arkadaşların daha iyi bildikleri SerialPort nesnesinin BoundRate,DataBits vb.. gibi özellikleride bulunmaktadır. Yaptıkları veya kullanacakları devrenin özelliklerine görede bunlarıda Özellikler Penceresinden değiştirebilirler. Herkese faydalı olması dileğiyle.

İbrahim Bayır

ProjeDosyasını burdan İndirebilirsiniz. 

CSharp , , ,