Sem GÖKSU - Kişisel Web Sitesi Ana Sayfa | Hakkımda | Çalışmalarım | Kitap Önerileri | Fotoğraflarım | RSS RSS | İletişim
İçerik Kategorileri
Makale Kategorileri
Etiket Bulutu
Arama
Tema
Kaynaklar
Takip Ettiklerim

SQL Server 2005

LinqToSQL ile Sayfalama (Paging) İşlemi


SQL Server 2005 ile birlikte gelen row_number() fonksiyonunu kullanarak bir kayıt numarası oluşturuyor ve bu kayıt numarasını kullanarak verileri istediğimiz sayıda çekebiliyorduk. LinqToSQL ile de bu işlemi yapabiliyoruz. Aşağıdaki örnek City Tablosundan kayıtların onar onar alınmasını sağlıyor.

[C#]

class Program
{
    static void Main(string[] args)
    {
        int CityCount = 0; 
        IEnumerable<City> Cities = GetCities(0, 10, ref CityCount); // İlk 10 kaydı çekeceğiz. ilk parametre sayfa indexini ikinci parametre ise bir sayfada kaç kayıt gösterileceğini belirtiyor.
        Console.WriteLine("Toplam Şehir Sayısı:{0}", CityCount); 
        Console.WriteLine("-----------------------------");
        foreach (City city in Cities)
        {
            Console.WriteLine(city.CityName);
        }
    }

    private static IEnumerable<City> GetCities(int startingPageIndex, int PageSize, ref int CityCount)
    {
        DataClasses1DataContext db = new DataClasses1DataContext();
        CityCount = db.Cities.Count();// Toplam kayıt sayısını set edelim.
        return db.Cities.Skip<City>(PageSize * startingPageIndex).Take<City>(PageSize); 
    }
}

Bu makaleye henüz yorum yapılmamış. | 09.11.2009 15:27:19

Sem Göksu Açık Kaynak Kodlu Blog Sistemi




Sem Göksu Blog Sistemi
Sem Göksu Blog Sistemi ile kendi bloğunuzu oluşturabilirsiniz. Blog içerisinde Caching, SQL Paging, Re-Write Path gibi bir çok konu işlenmiştir.

Kullanılan Teknolojiler

- ASP.NET 3.5
- ASP.NET AJAX 1.0
- Silverlight
- JavaScript
- Enterprise Library 3.0
- SQL Server 2005

Blog Özellikleri

- İçerikler
- Makaleler
- Kitap Önerileri
- Çalışmalar
- Silverlight Fotoğfraf Galerisi
- Kaynaklar
- Takip ettiklerim
- IE 8 Hızlandırıcı
- RSS
- Tema
- Arama
- Yorum
- Arşiv
- CMS

Blog sistemini indirmek için http://www.semgoksu.com/semgoksu.rar adresini kullanabilirsiniz. Rar dosyası içerisinde bulunan semgoksu.sql isimli dosyayı çalıştırdığınız da veritabanınız hazır olacak. Bloğu kendinize uyarlamak için web.config içerisindeki ayarları yapmanız yeterli olacaktır. Bu ayarlar,

Connection String
Bloğun kullanacağı veritabanı için gerekli olan ConectionString bilgisi.

Host
Email gönderimi için gerekli olan host bilgisi.

Email
Email'in gönderileceği email hesabı.

Password
Email adresinin şifresi.

SenderEmail
Gönderilecek olan mail adresi.

SiteName
Blog ile ilgili açıklama.

SiteOwner
Bloğun sahibi

SiteLink
Bloğun adresi.

SiteShortLink
Bloğun kısa adresi.

AdminUser
CMS'e girişte kullanacağınız kullanıcı adı.

AdminPass
CMS'e girişte kullanacağınız şifre.

Bloğu kullandıktan sonra bana bilgi verirseniz çok sevinirim :)

Bu makaleye 53 yorum yapılmış. | 07.04.2009 12:19:21

ASP.NET İle Stored Procedure Kullanımı – 2 (No Wizard)


Bir önceki makalemizde Bize datayı listeleyen Stored Procedure olusturup bunu ASP.NET içinde kullanmıstık. Bu makalemizde ise Ekleme, Çıkarma ve Güncelleme Stored Proc. Ekleyecek ve bunu asp.net sayfalarında kullanacagız.

Insert: Tablumuza Kayıt ekliyoruz.

Not: Person.Contact Tablosuna kayıt eklemek için Allov null alanları seçili olmayan fieldları seçelim. SP'yi düzgün yazsak bile çalısmayacaktır.

Create Proc InsertPerson
@FirstName varchar(20),
@LastName varchar (20)
as
Insert Into Person.Contact (FirstName,LastName) values (@FirstName, @LastName)


Sp'mizi Test edelim..

InsertPerson 'sem','göksu' // Bakalım Eklemismi ?



Simdi bu islemi ASP.NET tarafında da yapalım.  Olusturmus oldugumuz projeye yeni bir sayfa ekleyelim ve sayfamız üzerine 2 textbox ve 1 button ekleyelim. Button'un Click eventine asagıdaki kodları yazalım;

protected void Button1_Click(object sender, EventArgs e)

    try 
    { 
        Cnn = new SqlConnection("Data Source=localhost; Initial Catalog=AdventureWorks; trusted_connection=yes"); 
        Cmd = new SqlCommand(); 
        Cmd.CommandType = CommandType.StoredProcedure; 
        Cmd.CommandText = "InsertPerson"; 
        Cmd.Parameters.AddWithValue("@FirstName", TextBox1.Text); 
        Cmd.Parameters.AddWithValue("@LastName", TextBox2.Text); 
        Cmd.Connection = Cnn; 
        if (Cnn.State == ConnectionState.Closed) Cnn.Open(); 
        int result = Cmd.ExecuteNonQuery(); 
        Response.Write(result.ToString() + " Kayıt Eklendi..."); 
    } 
    catch (Exception ex) 
    { 
        Response.Write(ex.Message); 
    }
}



Insert islemimizi tamamladık simdi Update Islemine geçebiliriz.

Update: Varolan bir kaydı güncelliyoruz.

Create Proc UpdatePerson
@ExFirstname varchar(20),
@NewFirstname varchar(20)
as
Update Person.Contact Set FirstName = @NewFirstname
where FirstName=@ExFirstname

Test edelim;

UpdatePerson 'Crystal','Penguen'

(22 row(s) affected) > 22 tane Firstname'i Crystal olan kayıt person ile degistirildi.

Simdi Asp.net tarafını yazalım;

Yeni Bir sayfa ekleyelim ve sayfamıza 2 textbox ve 1 button girelim. 1. textbox'a güncellenecek olan Firstname'i ve 2.textbox'ada yeni degeri girecegiz. Buton ile de islemi gerçeklestirecegiz. Button'un click eventine asagıdaki kodları yazalım;

protected void Button1_Click(object sender, EventArgs e)

    try 
    { 
        Cnn = new SqlConnection("Data Source=localhost; Initial Catalog=AdventureWorks; trusted_connection=yes"); 
        Cmd = new SqlCommand(); 
        Cmd.CommandType = CommandType.StoredProcedure; 
        Cmd.CommandText = "UpdatePerson"; 
        Cmd.Parameters.AddWithValue("@ExFirstname", TextBox1.Text); 
        Cmd.Parameters.AddWithValue("@NewFirstname", TextBox2.Text); 
        Cmd.Connection = Cnn; 
        if (Cnn.State == ConnectionState.Closed) Cnn.Open(); 
        int result = Cmd.ExecuteNonQuery(); 
        Response.Write(result.ToString() + " Kayıt güncellendi..."); 
    } 
    catch (Exception ex) 
    { 
        Response.Write(ex.Message); 
    } 
}

Hemen test edelim;



Sp'yi test ederken Firstname'i Crystal olan kayıtları penguen ile degistirmistim. Simdi yeniden eski degeri ile update etmis oldum. 22 adet kaydın güncellendigini görüyoruz.

Delete: Tablomuzdan kayıt siliyoruz. Stored Proc. Olusturalım.

Not: Eger Sizde benim kullandıgım gibi Person.Contact tablosunu kullanacaksanız tablo Üzerindeki Foreign keyleri kaldırın. Yoksa kayıtları silemeyeceksiniz.

create proc DeletePerson
@Firstname varchar(20)
as
Delete from Person.Contact  where FirstName = @Firstname

SP'yi test edelim.

DeletePerson 'Gustavo'

(2 row(s) affected) > Gustavo adın da 2 kaydı sildi..

Simdi son olarak da bunun asp.net tarafını yapalım.  Yeni bir sayfa ekleyelim ve sayfamıza 1 textbox ve 1 button ekleyelim. Daha sonra butonun click eventine asagıdaki kodları yazalım;

protected void Button1_Click(object sender, EventArgs e)

    try 
    { 
        Cnn = new SqlConnection("Data Source=localhost; Initial Catalog=AdventureWorks; trusted_connection=yes"); 
        Cmd = new SqlCommand(); 
        Cmd.CommandType = CommandType.StoredProcedure; 
        Cmd.CommandText = "DeletePerson"; 
        Cmd.Parameters.AddWithValue("@Firstname", TextBox1.Text); 
        Cmd.Connection = Cnn; 
        if (Cnn.State == ConnectionState.Closed) Cnn.Open(); 
        int result = Cmd.ExecuteNonQuery(); 
        Response.Write(result.ToString() + " Kayıt silindi..."); 
    } 
    catch (Exception ex) 
    { 
        Response.Write(ex.Message); 
    }
}

Testimizi yapalım;



Firstname'i "Sem" olan 5 kayıt vardı ve biz bunu stored procedurumuzü çalıstırarak sildik.. Bu makalenin de sonuna geldik, Baska bir makalede görüsmek üzere basarı ve iyi günler dilerim.

Sem GÖKSU
MCP | MCAD.NET | MCTS

Örnek Kodlar için mail adresimi kullanabilirsiniz
semgoksu@semgoksu.com

Kaynaklar
http://msdn.com

Bu makaleye 1 yorum yapılmış. | 04.03.2007 17:46:44

ASP.NET İle Stored Procedure Kullanımı – 1 (No Wizard)


Stored Procedure Nedir?

Ilk olarak kısaca Stored Procedürden bahsedeyim;

Stored Procedures SQL Server üzerinde tutulan T-SQL ifadeleridir. Belli bir görevi yerine getirebilmek amacıyla yapılandırılırlar. SQL Server üzerinde derlenirler. Belirledigimiz sartlara göre, program içinden çagrılarak kullanılırlar.  T-SQL deyimleriyle yazılan Store Procedures sadece ilk kez çalıstırıldıklarında derlenirler. Daha sonraki çalıstırma islemlerinde derlenmezler. Bu sayede çalısmalarımızda hız kazanmıs oluruz. Stored Procedürlerin bir baska artısı da çok güvenlidir.

Örnek
Create Proc LastTenPerson
as
select top 10 ContactID, FirstName, LastName from Person.Contact order by ContactID desc


Bu Stored procedurü çalıstıralım;

exec LastTenPerson > bize geri dönen sonuç;



Bize son 10 kaydı geri döndürdü.

Simdi isterseniz bu olusturdugumuz Stored Procedurü, ASP.NET Projesinde kullanalım;  lk olarak bir web projesi açalım;



Projemizi olusturduktan sonra sayfamıza bir adet grid ekleyelim;



Evet simdi kaydımızı görüntüleyecek olan kodları yazalım ilk olarak System.Data ve System.Data.SqlClient namespacelerini sayfamıza ekleyelim.

using System.Data;
using System.Data.SqlClient;

Daha sonra sayfamızda kullanacagımız degiskenleri tanımlayalım;

SqlConnection Cnn;
SqlCommand Cmd;
SqlDataAdapter Da;
DataSet Ds;

Simdi Kaydımızı listeleyecek olan voidi yazalım(Isterseniz function olarak yada class içerisinde kullanabilirsiniz).

private void GetLastTenPerson()

    Cnn = new SqlConnection("Data Source=localhost; Initial Catalog=AdventureWorks; trusted_connection=yes");//DB Baglantısı 
    Cmd = new SqlCommand(); 
    Cmd.CommandType = CommandType.StoredProcedure;//Command Tipi 
    Cmd.CommandText = "LastTenPerson";//SP Adı 
    Cmd.Connection = Cnn;//Commandin kullanacagı Connection 
    if (Cnn.State == ConnectionState.Closed) Cnn.Open(); 
    Da = new SqlDataAdapter(Cmd); 
    Ds = new DataSet(); 
    Da.Fill(Ds,"table"); 
    GridView1.DataSource = Ds.Tables[0]; 
    GridView1.DataBind();
}

En son olarak bunu Formun Load'da çagıralım;

protected void Page_Load(object sender, EventArgs e)

    GetLastTenPerson();
}

Simdi Projemizi çalıstıralım;



Son 10 kaydımızı basarı ile listeledik; Simdi Stored Proceduremizi biraz daha genisletelim ve Bir kriter ekleyelim. Örnegin Firstname'ni biz dısarıdan girelim ve girdigimiz Firstname'e göre kayıtlar listelensin. Bunun için Stored Procedure içerisine dısarıdan bir parametre almalıyız. Biz buna input parametre diyoruz.

Stored Proceduremizin düzenlenmis hali;

Alter Proc LastTenPerson //SP'mizi Alter ettik
@FirstName varchar(20)//Input Parameter
as
select top 10 ContactID, FirstName, LastName from Person.Contact
where FirstName=@FirstName
order by ContactID desc


exec LastTenPerson 'Crystal'

Sonucu görelim;



Firstname'i sadece Crystal olanlar geldi; Simdi bunu ASP.NET tarafında da yapalım;  Bunun için projemize bir adet buton ve bir adet textbox ekleyelim. Sayfamızdaki kodları Command out yapalım yada silelim çünkü SP degistigi için çalıstıgında hata verecektir. Button1'e tıklayalım;

protected void Button1_Click(object sender, EventArgs e)

    Cnn = new SqlConnection("Data Source=localhost; Initial Catalog=AdventureWorks; trusted_connection=yes"); 
    Cmd = new SqlCommand(); 
    Cmd.CommandType = CommandType.StoredProcedure; 
    Cmd.CommandText = "LastTenPerson"; 
    Cmd.Parameters.AddWithValue("@Firstname", TextBox1.Text);// Dısarıdan Store Procedure parametre ekliyoruz.. 
    Cmd.Connection = Cnn; 
    if (Cnn.State == ConnectionState.Closed) Cnn.Open(); 
    Da = new SqlDataAdapter(Cmd); 
    Ds = new DataSet(); 
    Da.Fill(Ds, "table"); 
    GridView1.DataSource = Ds.Tables[0]; 
    GridView1.DataBind();
}

Simdi projemizi tekrar çalıstıralım ve sonucu görelim.



Yukarıda da görüldügü gibi Firstname'i sadece 'Crystal' olan kayıtlar listelenmektedir.  Bu makalenin de sonuna geldik, bir sonraki makale de Insert, Update ve Delete islemlerini inceleyecegiz. Baska bir makalede görüsmek üzere basarı ve iyi günler dilerim.

Sem GÖKSU
MCP | MCAD.NET | MCTS

Örnek Kodlar için mail adresimi kullanabilirsiniz
semgoksu@semgoksu.com

Kaynaklar
http://msdn.com

Bu makaleye henüz yorum yapılmamış. | 04.03.2007 16:54:15

SQL Server COALESCE Fonksiyonu


Database`den veri çekerken null degerlerin geri dönmesi her zaman canımı sıkmıstır. Access`de iif, Sql Server`da case ile degerleri replace  ettirsekte sorunu çözsekde aslında bu isi yapabilecek daha kolay bir fonksiyon bulunmaktadır. Bu fonksiyonun adı COALESCE` dır. Bu fonksiyon veri çekerken field içersindeki null degeri istedigimiz deger ile replace etmemizi saglar. Kullanımı asagıdaki gibidir;

Kulanımı
Select
top 5
FirstName,
LastName,
COALESCE
(MiddleName,`-`) as MiddleName -- Eger MiddleName`deki deger NULL ise yerine "-" yazacak.
From
Person.Contact

Sonuç
Gustavo Achong -
Catherine Abel R.
Kim Abercrombie -
Humberto Acevedo -
Pilar Ackerman -

(5 row(s) affected)

Bu makaleye 1 yorum yapılmış. | 06.09.2008 11:52:52

Ana Sayfa | Hakkımda | Çalışmalarım | Kitap Önerileri | Fotoğraflarım | RSS | İletişim
Sem Göksu 2004-2009 © Tüm Hakları Saklıdır.