MsSQL

Dataset nedir

DataSet System.Data sınıfına ait bir yapıdır. DataSet bir veritabanı yapısını programatik olarak temsil eder.

DataSet içinde veritabanı yapısına uygun tablolar bulunur. Bir kez uygulamaya geçtikten sonra veritabanı ile bağlantılı çalışması zorunluluğu ortadan kalkar.

Bütün tablolar yapılar artık uygulamadadır. Bir veritabanı tabloları ile neler yapabiliyorsak hemen hemen aynısını yapabiliriz.

DataSet ds = new DataSet();

Yukarıdaki gibi DataSet imizi tanımladıktan sonra DataAdapter ün fill metodu ile DataSet in içini dolduruyoruz.

da.Fill(ds,”CategoryName”);

DataSet imize birden fazla tabloa ekleyebiliriz. DataSet içindeki verileri göstermek için GridView kontrolu kullanabilirsiniz. GridView in DataSource una DataSet imizi tantıp binding yapıyoruz

…alıntıdır…

Reklamlar

ASP Stored Procedure Kullanımı ( MsSql )

Asp ile stored procedure kullanımı çok basittir. Ve çok önemli avantajları vardır. En önemli avantajı sitenin hızlı çalışmasıdır. Stored Procedure ile yapılan sorgular gözle görülür bir hız artışı sağlar.
Öncelikle mssql veritabanımızı oluşturduk ve tablolarımızıda oluşturduk
Beraber örnek yapalım:
tablo adımız : TblHaber olsun. Alanlar : id , baslik, detay. Şimdi Procedure oluşturalım.Sql serverımızı açtık, veri tabanı adı TblHaber.
Stored Procedures  sağ tıklayıp New Stored Procedure diyoruz. Query sayfası açıldı. İçindekileri silelim ve aşağıdaki gibi procedure oluşturalım
CREATE PROCEDURE
HaberSirala
BEGIN
SELECT * FROM TblHaber ORDER BY id
END
GO

Procedure kodlarmızı yazdık ve Execute dedik. Procedure oluşturmuş olduk.Şimdi sayfamızdan çağıralım

set  rs = baglanti.execute
Exec HaberSirala
procedure adımızı yazdık
do while not rs.eof
rs.movenext:loop

…alıntıdır… (http://www.eyurtsever.com)

Stored Procedure Yapısı

Stored procudure yani diğer adıyla saklı yordamlar SQL server da saklanan methodlardır. Özellikli büyük uygulamalarda kullanılan birçok yönden avantaj sağlayan yordamlardır. Stored procedureler ile yazacağımız sorguları SQL Server ‘ da bir kez çalıştırıp , uygulama geliştireceğimiz ortamda her defasında sorgularımızı tekrar yazmamızı engeller.
Stored procedureler parametre alan yada parametresiz türden olabilir. Aynı zamanda değer de geri döndürebilir. Stored procedureler kısaca sp olarak da adlandırılırlar. Büyük uygulamalarımızıda kolaylık sağlar. Sp yazımında for , while ,if gibi komutlar da kullanılabilir. Bir kez yazılıp çalıştırılması yeterli olduğundan hızlı çalışırlar. Sp ler aynı zamanda değişiklik yapmaya elverişli olduğundan modülerlik de sağlanamaktadır.
Yeni bir stored procure yatamak için CREATE PROCEDURE deyimi kullanılmaktadır.Var olan bir procedure ü düzenlenmek için ise ALTER PROCEDURE , bir procedure ü silmek için ise DROP PROCEDURE kullanılmaktadır.
SQL Server ‘ da stored procedure oluşturma :
Ogr_Tbl isminde örnek bir tablo oluşturuldu.
Stored procdure oluşturmak için ;

şeklinde oluşturduğumuz veri tabanı klasörünün alt dizinindeki Programmability klasörünün alt dizininde bulunan Stored procedure ‘ e sağ tıklanarak oluşturulur.

Parametresiz ve tablodaki kayıtları getiren basit bir stored procedure oluşturalım.

Bu şekilde yazdığımız stored procedure ü çalıştırmak için Execute düğmesine basılır.

Böylece stored procedure çalıştırılmıs olunur.

Parametreli ve Id ye göre listeleyen bir stored procedure yazarsak ;

Varolan listele procedure ünü değiştirmek için Create Procedure deyimi şu şekilde kullanılır :

Şimdi parametre alan ve parametresi olmayan stored procedure ler hazırlayalım ve bunu c# ta kullanalım.

Yeni bir veri tabanı oluşturalım ve RehberTbl adında şekildeki gibi bir table ekleyelim.

Visual Studio ortamında bir form application açalım. Formumuza bir datagridview elemanı , textboxlar ve buton ekleyelim.

Formumuzun loadında gridview da veritabanından çekilne veriler listenirken , girilen ad, numara ve email için de veri tabanına ekleme yapacak stored procedurelerimiz yazalım.

listeleme yapan sp_Listele sp si ;

Ekleme yapan sp_ekle sp si ;

Ekleme yapan sp_ekle parametreli bir proceduredür. Dışarıdan ad ,telefon ve maili parametre olarak alıp kaydetme işlemini yapar. C# kısmında bu parametreleri gönderebilmemiz için parametreleri belirtmemiz gerekmektedir. Command nesnemizin tipinin stored produre olduğunu belirttik. Daha sonra CommandText için stored procedure müzün ismi olan “sp_ekle” procedure ü yazıldı. Command nesnesinin parametreleri tipleri ile birlikte eklendikten sonra , parametreyi textboxtan alacağı belirtildi.Herhangi bir geri dönüş olmayacağından ExecuteNonQuery ile çalıştırıldı.

SQL de Alter Kullanımı

ALTER KOMUTU : Veritabanında var olan nesneler üzerinde yapılacak değişiklikler için kullanılan komuttur.Yeni tasarlanan bir veritabanında değişiklik yapmak çok güç değildir. Çünkü içindeki veriler az yada test amaçlıdır. Ama yaşayan bir veritabanında değişklik yapmak ciddi sorumluluklar ister. Verilin yok olmaması için çok dikkatli olmak gerekir. Bu konuda Alter ifadesi oldukça kolaylık sağlar.
Alter Table : Tablonun yapısı ile ilgili bilgilerin değiştirilmesi. Bazı durumlarda var olan tabloya yeni alan ekleyebilir, alan silebilir, alan adı değiştirebilir yada ilgili kısıtlamaları silebiliriz.

 Tablo adı değiştirme : Birinci şekil standart SQL deki gösterimidir. Fakat T-SQL de bu işlem biraz daha farklıdır. Bunun için master tablosunda tanımlanmış olan SP_RENAME saklı yordamından (stored procedur) faydalanmak zorundasınız . Buda ikinci şekildeki gibidir

 1 _ ALTER TABLE Tablo_Adı TO Yeni_Tablo_Adı    

 2_ EXEC SP_RENAME ’Tablo_Adı’, ’Yeni_Tablo_Adı’ ;

ALTER  TABLE   Personel  TO  Yeni_Personel                   // Standart SQL

 EXEC  SP_RENAME  ’Personel’,  ’Yeni_Personle’             // SQL Server T-SQL

Tabloya alan ekleme ve silme:

ALTER TABLE Tablo_Adı   ADD     Alan_Adı    Veri_Tip    Yeni alan ekleme.

ALTER TABLE Tablo_Adı   DROP COLUMN    Alan_Adı      Var olan alanı silme.       

ALTER TABLE   Personel ADD CocukSayisi  int;     ALTER TABLE   Personel DROP COLUMN   CocukSayisi    

Tablodaki alan veri tipi değiştirme: Kolon veri tipi değiştirilirken veri kaybı olmaması ve hata alınmaması için mantıklı tür dönüşümleri yapılmalı. Alanın veri tipi int iken varchar yapılırsa tür dönüşümü yapılır ve veri kaybı olmaz. Ayrıca varchar ise ve içerisinde  sadece sayı karakterleri tutulmuş ise sayı tür dönüşümü ile dönüştürülür ama sayı dışında da karakterler varsa hata ile karşılaşırsınız.

ALTER TABLE Tablo_Adi ALTER COLUMN Alan_Adi Yeni_Veri_Tipi 

ALTER TABLE Personle ALTER COLUMN    CocukSayisi    char(10)    

Tabloya kısıtlama ekleme ve silme : Özellikle iki tablo arasındaki ikincil anahtarları (foreing key) silerken dikkat edilecek en önemli nokta ilişkinin hangi tablodan hangi tabloya referans verildiğidir.

ALTER TABLE Tablo_Adı   ADD CONSTRAINT  Kısıtlama_Adı   Kısıtlamanın_Ozellikleri    Yeni kısıtlama ekleme.

ALTER TABLE Tablo_Adı   DROP CONSTRAINT Kısıtlamanını_Adı                               Var olan kısıtlamayı silme

ALTER   TABLE PersonelMal    ADD    CONSTRAINT    FK_PersonelMal_Personel_N    FOREIGN KEY (PPersonelId) REFERENCES Personel (PersonelId) ON DELETE CASCADE                                                                            // PersonelMal Tablosununa foreing key eklemeALTER   TABLE   PersonelMal   DROP CONSTRAINT   FK_PersonelMal_Personel_N    // Kısıtlamayı silme

Alan İsmi değiştirme: İsim değiştirme işlemleri standart SQL ’ de RENAME parametresi ile yapılır. Ama T-SQL’de tablo ismi değiştirmede olduğu gibi SP_RENAME  saklı yordamı ile yapılır.

ALTER TABLE Tablo_Adı  RENAME  Alan_Adı TO Yeni_Alan_Adı               Standart SQL ’ de 

EXEC SP_RENAME ’Tablo_Adı.Alan_Adı’,  ’Yeni_Alan_Adı’, ’Nesne_Tipi’      T-SQL ’ de

Nesne_Tipi  : SP_RENAME saklı yordamı(stored procedur) değiştirilecek nesnenin tipini belirtir. Bunlar DATABASE, TABLO, VIEW, COLUMN, OBJECT(CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY) , vb dir. Alan isimleri tablolara özel nesnelerdir. Her tabloda Adi diye bir alan tanımlayabilirsiniz. Ama tablo isimleri, constrainler , stored procedurler, trigerlar yani SQL Serverda sysobjects sistem tablosuna kaydedilen nesnelerin ismi tekildir. Bunların ismi değiştirilirken Nesne_Tipi parametresine ’object’ yazılması gerek.

ALTER TABLE Sicil RENAME PersonelSicilNo TO SicilNo                            //Standart sqlEXEC SP_RENAME ’Sicil.PersonelSicilNo’,  ’SicilNo’, ’Column’                   // t-sql
EXEC SP_RENAME ’myView’, ’MaasBordrosu’,’Object’                            // View İsmi değiştirmeEXEC SP_RENAME ’FK_PersonelMal_Personel’, ’FK_PM_P’,’Object’        // Foreing key ismi değiştirme

Alter View : Görünüm değiştirme. Görünüm değiştirme de tanımlama da olan standartlar geçerlidir. Bu tür yapılar üzerlerinde veri tutmadıkları ve sadece çalıştıkları zaman oluştuğu için değişiklik yapmak daha rahattır.

CREATE VIEW    V_Maas     AS      SELECT PersonelId, (Adi + ’ ’ + Soyadi) as AdSoyad, Maas FROM Personle ;                                   // View oluşturdukALTER VIEW    V_Maas     AS     SELECT PersonelId, (Adi + ’ ’ + Soyadi) as AdSoyad, Maas FROM Personle  WHERE Adi like(’A%’);   // View değiştirdik.Burda yaptığımız değişiklik sadece sorgumuza koşul ekledik. Adı A ile başlayan personellerinkini getirsin.

DROP KOMUTU: Databasede buluna nesnelerin silinmesi için kullanılan komuttur.

DROP DATABASE Veritabanı_Adı     Database silme

DROP TABLE Tablo_Adı                Tablo silme

DROP VIEW View_Adı                  View silme

DROP INDEX Index_Adı                Index silme

DROP DATABASE cSharpNedirDROP TABLE PersonleDROP VIEW myViewDROP INDEX Ix_Personel

Stored Procedure ve C# ‘ta Stored Procedure Kullanımı

Stored procudure yani diğer adıyla saklı yordamlar SQL server da saklanan methodlardır. Özellikli büyük uygulamalarda kullanılan birçok yönden avantaj sağlayan yordamlardır. Stored procedureler ile yazacağımız sorguları SQL Server ‘ da bir kez çalıştırıp , uygulama geliştireceğimiz ortamda her defasında sorgularımızı tekrar yazmamızı engeller.
Stored procedureler parametre alan yada parametresiz türden olabilir. Aynı zamanda değer de geri döndürebilir. Stored procedureler kısaca sp olarak da adlandırılırlar. Büyük uygulamalarımızıda kolaylık sağlar. Sp yazımında for , while ,if gibi komutlar da kullanılabilir. Bir kez yazılıp çalıştırılması yeterli olduğundan hızlı çalışırlar. Sp ler aynı zamanda değişiklik yapmaya elverişli olduğundan modülerlik de sağlanamaktadır.
Yeni bir stored procure yatamak için CREATE PROCEDURE deyimi kullanılmaktadır.Var olan bir procedure ü düzenlenmek için ise ALTER PROCEDURE , bir procedure ü silmek için ise DROP PROCEDURE kullanılmaktadır.
SQL Server ‘ da stored procedure oluşturma :
Ogr_Tbl isminde örnek bir tablo oluşturuldu.
Stored procdure oluşturmak için ;
şeklinde oluşturduğumuz veri tabanı klasörünün alt dizinindeki Programmability klasörünün alt dizininde bulunan Stored procedure ‘e sağ tıklanarak oluşturulur.
Parametresiz ve tablodaki kayıtları getiren basit bir stored procedure oluşturalım.
Bu şekilde yazdığımız stored procedure ü çalıştırmak için Execute düğmesine basılır.
Böylece stored procedure çalıştırılmıs olunur.
Parametreli ve Id ye göre listeleyen bir stored procedure yazarsak ;
Varolan listele procedure ünü değiştirmek için Create Procedure deyimi şu şekilde kullanılır :
Şimdi parametre alan ve parametresi olmayan stored procedure ler hazırlayalım ve bunu c# ta kullanalım.
Yeni bir veri tabanı oluşturalım ve RehberTbl adında şekildeki gibi bir table ekleyelim.
Visual Studio ortamında bir form application açalım. Formumuza bir datagridview elemanı , textboxlar ve buton ekleyelim.
Formumuzun loadında gridview da veritabanından çekilne veriler listenirken , girilen ad, numara ve email için de veri tabanına ekleme yapacak stored procedurelerimiz yazalım.
listeleme yapan sp_Listele sp si ;
Ekleme yapan sp_ekle sp si ;
Ekleme yapan sp_ekle parametreli bir proceduredür. Dışarıdan ad ,telefon ve maili parametre olarak alıp kaydetme işlemini yapar. C# kısmında bu parametreleri gönderebilmemiz için parametreleri belirtmemiz gerekmektedir. Command nesnemizin tipinin stored produre olduğunu belirttik. Daha sonra CommandText için stored procedure müzün ismi olan “sp_ekle” procedure ü yazıldı. Command nesnesinin parametreleri tipleri ile birlikte eklendikten sonra , parametreyi textboxtan alacağı belirtildi.Herhangi bir geri dönüş olmayacağından ExecuteNonQuery ile çalıştırıldı.