Üye Girişi
x

Giriş Başarılı.

Yanlış Bilgiler.

E-mail adresinizi doğrulamalısınız.

Facebook'la giriş | Kayıt ol | Şifremi unuttum
İletişim
x

Mesajınız gönderildi.

Mesajınız gönderilemedi.

Güvenlik sorusu yanlış.

Kullandığınız Sosyal Medyayı Seçin
Yeni Klasör 8 yıldır sizin için en güvenli hizmeti veriyor...

Teknoloji dünyasındaki son gelişmeler ve sürpriz hediyelerimiz için bizi takip edin.

SqlCommand Nesnesi

> 1 <

Quick_man34
-- AdministratoR --

grup tuttuğum takım
Yüzbaşı Grup
Hat durumu Cinsiyet Özel mesaj 1029 ileti
Yer: Bangalore
İş: Although I would say
Kayıt: 25-08-2009 17:13

işletim sistemim [+][+3][+5] [-]
kırık link bildirimi Kırık Link Bildir! #343598 07-09-2009 23:16 GMT-1 saat    
SqlCommand Nesnesi:

Bu makalemizde SQLCommand nesnesinin EXECUTE metodlarını inceleyeceğiz.
Bu sırada kodlarımızı C# aracılığı ile yazıp, veritabanı olarak MS-SQL Server 2000 kullacağız.
SqlCommand nesnesini daha önce ASP'deki Command nesnesi ile özleştirebiliriz.

Ancak sqlCommand nesnesini Command nesnesinden çok daha fazla özelliği bulunmakta. Kısaca görev tanımı yaparsak, veritabanı işlemlerinin yapılabilmesini sağlar. Yani veritabanından kayıt getirmek, veritabanındaki kayıtları silme, güncelleme, veritabanına kayıt girme işlemlerde bize aracılık yapar.

ADO.Net dahilinde iki tane Command nesnesi bulunmaktadır. Bunlardan birisi olan SqlCommand, MS-SQL Server için hazırlanmış Command nesnesidir. Diğer veritabanları için OleDbCommand nesnesi kullanılır. Bu yüzden MS-SQL Server açısından performans üst düzeydedir.

Execute metodlarına geçmeden önce birkaç özelliğini inceleyelim.

.Connection :
Çalıştırılacak sql cümlesinin hangi veritabanı bağlantısını kullanacağını gösterir.

.CommandType :
Çalıştırılacak sql cümlesinin tipini belirler.
Text, StoredProcedure, TableDirect değerlerini alır.

Text : Sql cümlesinin çıplak olarak kullanıldığı özellik
StoredProcedure : Sql cümlesinin Stored Procedure olarak kullanıldığı özellik
TableDirect : Sql cümlesi yerine direk olarak tablo ismi verilerek kullanıldığı özellik.
Birden fazla tablo kullanılacak ise, tablo isimleri , işareti ile ayrılır.

.CommandText :
CommandType özelliği gözönünde bulundurularak sql cümlesi, stored procedure veya tablo isminin yazıldığı özelik.

. CommandTimeout :
Sql cümlesinin çalıştırılması ve cevap dönme süresi için bekleme zamanını belirtir.
Varsayılan değeri 30'dur. Süre saniye cinsinden verilir.

. Transaction :
Çalıştırılan sql cümlesine, oluşturulan transaction nesnesi bağlanılarak, ADO.NET düzeyinde kontrol yapılması sağlanabilir.

Bu uygulamanın bize sağladığı fayda, çalıştırılan sql cümlesinin, çalıştırılması sonucu oluşan hatalarda geriye dönüş yapılabilmesine imkan vermesidir.

Çoğunlukla, Insert/Update/Delete işlemlerinde kullanılır.

.Parameter :
SqlCommand nesnesi aracılığı ile çalıştırılan Stored Procedure'lara veri göndermek veya dönen sonucu almak amacı ile kullanılır.

Şimdi de, EXECUTE metodlarımıza bakalım:

ExecuteReader :
Çalıştırılan sql cümlesinden geriye birden çok değer dönecekse bu metod kullanılır.
Çoğunlukla sql cümlesi Select cümlesi ile tercih edilir.

Örneğin, bir arama sonucu dönecek veriler için bu metod kullanılabilir.

ExecuteScalar :
Çalıştırılan sql cümlesinden geriye sadece bir değer dönecekse bu metod kullanılır.
Örneğin bir update işlemi sonucunda etkilenen kayıtların adedi döndürülmek istendiğinde dönecek değer sadece bir Integer değeri olduğu için bu metod kullanılabilir.

Yada, herhangi bir verinin kaydı yapılıyor, bu kayıt yapıldıktan sonra yapılan kaydın ID sinin bize gerekli olduğunu düşünelim. Bu durumda da dönecek veri tek bir satır ve kolon olduğu için bu metodu kullanabiliriz.

ExecuteNonQuery :
Çalıştırılan sql cümlesinden geriye veri dönmediğinde bu metod kullanılır.
Yani Update/Delete/Insert işlemi çalıştıracaksanız bu metodu kullanmalısınız.

ExecuteXmlReader :
Çalıştırılan sql cümleciği sonucu bir XMLReader nesnesi oluşur. Böylelikle verilerimiz XML formatına dönüşmüş olur.



Şimdi de anlattıklarımız ile ilgili örneklerimize geçelim:

Açıklamalar kod içerisinde verilmiştir.

1. örneğimiz Stored Procedure aracılığı ile veri gösterimi.


<%@ Page Language="C#" Debug="true" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script language="C#" runat="server">

public **** Page_Load(Object Src, EventArgs E)
{
//veritabanı bağlantı satırımız:
SqlConnection dbConn = new SqlConnection("server=localhost;uid=sqlUser;pwd=sq lPass;database=dotnet");

// ceritabanı bağlantımızı açıyoruz
dbConn.Open();

// sqlCommand nesnemizi oluşturuyoruz.
SqlCommand sqlComm = new SqlCommand ();

// sqlCommand nesnemizin veritabanı bağlantısını belirtiyoruz.
sqlComm.Connection = dbConn;

// çalıştıracağımız sql cümlesinin StoredProcedure olduğunu // belirtiyoruz.
sqlComm.CommandType = CommandType.StoredProcedure;

// çalıştıracağımız SP nin ismini veriyoruz.
sqlComm.CommandText = "sp_sel_users";

// eğer Stored Procedure çalıştırmayacaksanız kodlarınız;
/*
sqlComm.CommandType = CommandType.Text;
sqlComm.CommandText = "SELECT * FROM users";
*/
// şeklinde olmalı

// sql cümlemizi çalışıtrıp, sqlDataReader nesnemize yüklüyoruz.
SqlDataReader rd = sqlComm.ExecuteReader();

// dbGrid nesnemize veriyi göstermesi için veriyoruz.
dbGrid.DataSource = rd;
dbGrid.DataBind();

// reader nesnemizi kapatıyoruz.
rd.Close();

// veritabanı bağlantımızı kapatıyoruz.
dbConn.Close();
}
</script>
<body>
<form runat="server">
<aspataGrid runat="server" id="dbGrid"></asp:datagrid>
</form>
</body>


2. örneğimiz veri kayıt etme ile ilgili.

İlkönce Stored Procedure'mizin kodlarını verelim.

CREATE PROCEDURE sp_ins_restaurant

@rest_name varchar(100),
@rest_index int,
@Identity int OUT

AS

INSERT INTO
restaurants
(rest_name, rest_index)
VALUES
(@rest_name, @rest_index)

SELECT @Identity = @@IDENTITY
GO


<%@ Page Language="C#" Debug="true" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script language="C#" runat="server">

public **** Page_Load(Object Src, EventArgs E)
{
SqlConnection dbConn = new SqlConnection("server=localhost;uid=sqlUser;pwd=sq lPass;database=dotnet");
dbConn.Open();

// sqlCommand nesnesini bu kısa yol ile de oluşturabilirsiniz.
SqlCommand sqlComm = new SqlCommand ("sp_ins_restaurant",dbConn);

sqlComm.CommandType = CommandType.StoredProcedure;



// çalıştıracağımız Stored Procedure'nin parameterlerini gönderiyoruz.
// Burada dikkat edilmesi gereken nokta, veri tipleri ve uzunlukları.
// Bu verilerin Stored Procedure ile aynı olması gerekli.
sqlComm.Parameters.Add("@rest_name", SqlDbType.VarChar, 100, "rest_name");
sqlComm.Parameters["@rest_name"].Value = "Ali Baba Restaurantı";

sqlComm.Parameters.Add("@rest_index", SqlDbType.Int, 4, "rest_index");
sqlComm.Parameters["@rest_index"].Value = "14587";

// çalıştırdığımız Stored Procedure sonucu geriye veri dönüşü
// sözkonusu. Bu nedenle yeni bir SqlParameter tanımlıyoruz.
// dönecek verinin tipini giriyoruz. En son olarak SqlParameter'in
// dönüş parametresi olduğunu belirtmek amaçlı satırımızı yazıyoruz.
SqlParameter sqlParam = sqlComm.Parameters.Add("@Identity", SqlDbType.Int, 0, "rest_id");
sqlParam.Direction = ParameterDirection.Output;
// SqlCommand nesnemizi çalıştırıyoruz. Dikkat ederseniz NonQuery.
sqlComm.ExecuteNonQuery();

// Geri dönen değerimizin yine bizim SqlCommand nesnemiz
// çerisinde olduğuna lütfen dikkat edin.
Int32 rest_id = (Int32)sqlComm.Parameters["@Identity"].Value;

// Ve en son olarak ekrana bastırıyoruz.
label1.Text = System.Convert.ToString(rest_id);

dbConn.Close();
}
</script>
<body>
<form runat="server">
<asp:Label runat="server" id="label1"></asp:Label>
</form>
</body>


3. Örneğimiz ExecuteScalar methodunun kullanımı ile ilgili

CREATE PROCEDURE sp_sel_rest_id

@rest_name varchar(100)

AS

SELECT
rest_id
FROM
restaurants
GO


<%@ Page Language="C#" Debug="true" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script language="C#" runat="server">

public **** Page_Load(Object Src, EventArgs E)
{
SqlConnection dbConn = new SqlConnection("server=localhost;uid=sqlUser;pwd=sq lPass;database=dotnet"); dbConn.Open();
SqlCommand sqlComm = new SqlCommand ("sp_sel_rest_id",dbConn);
sqlComm.CommandType = CommandType.StoredProcedure;

sqlComm.Parameters.Add("@rest_name", SqlDbType.VarChar, 100, "rest_name");
sqlComm.Parameters["@rest_name"].Value = "Ali Baba Restaurantı";

// SP'den geri dönen tek veri olan rest_id'yi yakalıyoruz.
string rest_id = sqlComm.ExecuteScalar().ToString();

label1.Text = rest_id;

dbConn.Close();
}
</script>
<body>
<form runat="server">
<asp:Label runat="server" id="label1"></asp:Label>
</form>
</body>


4. Örneğimiz XMLReader metodu ile ilgili


<%@ Page Language="C#" Debug="true" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Xml" %>
<script language="C#" runat="server">

public **** Page_Load(Object Src, EventArgs E)
{
SqlConnection dbConn = new SqlConnection("server=localhost;uid=sqlUser;pwd=sq lPass;database=dotnet");
dbConn.Open();
SqlCommand sqlComm = new SqlCommand ();
sqlComm.Connection = dbConn;
sqlComm.CommandType = CommandType.Text;

// XMLReader çıktısı olabilmesi için MS-SQL Server üzerinden
// XML çıktısı almalıyız. Bu nedenle sql cümlemizin içerisine
// FOR XML AUTO kelimelerini ekliyoruz.
// Ayrıntılı bilgiyi SQL-XML başlıklarından bulabilirsiniz.
sqlComm.CommandText = "SELECT * FROM restaurants Where rest_id = 751 FOR XML AUTO";

// sql cümlemizi çalıştırıp, XmlReader nesnemize atıyoruz.
XmlReader xmlRd = sqlComm.ExecuteXmlReader();

// Daha sonra bu veriyi DataSet üzerinden ReadXml ile okuyoruz.
DataSet ds = new DataSet();
ds.ReadXml (xmlRd);

// En son olarak dbGrid'imizin kaynağını DataSet olarak veriyoruz.
dbGrid.DataSource = ds.Tables[0].DefaultView;
dbGrid.DataBind();

dbConn.Close();
}
</script>
<body>
<form runat="server">
<aspataGrid runat="server" id="dbGrid"></asp:datagrid>
</form>
</body>


Eğer XML aracılığı ile tüm veriyi çekmek istiyorsanız, XMLReader nesnesi içerisinde do-while aracılığı ile dönmeli ve dataSet'inize her satırını ekleyip, veriyi bu şekilde dbGrid'e göndermeniz gerekli.

Bunu ilk beğenen siz olun

Hata Oluştu



StevenT26
]->Eskişehirli<-[

grup tuttuğum takım
Teğmen Grup
Hat durumu Cinsiyet Özel mesaj 823 ileti
Yer: Mavi Geceler.!
İş: Fotography
Kayıt: 16-01-2009 07:19

işletim sistemim [+][+3][+5] [-]
#343603 07-09-2009 23:21 GMT-1 saat    
Quick_man34 bu konu ve bundan önce açtığın konuların full programlarla ne alakası var,bu konular için anlatımlar daha uygun. daha dikkatli ana başlıklar seçerek konuları uygun kategoriye açman daha güzel olacak..

Bunu ilk beğenen siz olun

Hata Oluştu




bağlantıyı göster (facebook ile) bağlantıyı göster (klasik üye girişi ile)
Sadece Şahlar Hamleleri Önceden Sezer!!!

Quick_man34
-- AdministratoR --

grup tuttuğum takım
Yüzbaşı Grup
Hat durumu Cinsiyet Özel mesaj 1029 ileti
Yer: Bangalore
İş: Although I would say
Kayıt: 25-08-2009 17:13

işletim sistemim [+][+3][+5] [-]
#343608 07-09-2009 23:37 GMT-1 saat    
Özür dilerim Yanlışlık la Buraya açmışım Boş bulundum pardon

Bunu ilk beğenen siz olun

Hata Oluştu



StevenT26
]->Eskişehirli<-[

grup tuttuğum takım
Teğmen Grup
Hat durumu Cinsiyet Özel mesaj 823 ileti
Yer: Mavi Geceler.!
İş: Fotography
Kayıt: 16-01-2009 07:19

işletim sistemim [+][+3][+5] [-]
#343622 08-09-2009 00:13 GMT-1 saat    
Bir tane değil bütün konuların burda.. rastgele her önüne gelen yere anlamsız konular açılmaz ki .

Bunu ilk beğenen siz olun

Hata Oluştu




bağlantıyı göster (facebook ile) bağlantıyı göster (klasik üye girişi ile)
Sadece Şahlar Hamleleri Önceden Sezer!!!
> 1 <