C# asp.net ile proje geliştirirken dinamik projelerde kullanacağınız veritabanı işlemlerinde bağlantıyı sağladıktan ve gerekli değerleri prosedüre yolladıktan sonra işlemi çalıştırmak için "execute" metodlarına ihtiyacınız vardır. Bu metodları sınıflarda da tanımlayabilirsiniz, o işlemin yapıldığı sayfalarda tek tek de belirtebilirsiniz. Bu 4 metodu da sıkça kullanabileceğiniz için hepsinin önemi farklıdır.
- ExecuteNonQuery();
- ExecuteScalar();
- ExecuteExecuteReader();
- ExecuteXmlReader();
Bu çalıştırma metodlarının kullandığı yerlere göre tek tek önemleri büyüktür.
Önemli Not
SqlConnection dbConn = new SqlConnection(ConfigurationManager.ConnectionStrings["baglantiSatiri"].ConnectionString);dbConn.Open();
dbConn.Close();
- using System;
- using System.Collections;
- using System.Configuration;
- using System.Data;
- using System.Xml;
- using System.Web;
- using System.Web.Security;
- using System.Data.SqlClient;
- using System.Collections.Generic;
- using System.Web.UI;
- using System.Web.UI.HtmlControls;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
ExecuteNonQuery
Veritabanı etkileşimli işlem yapılırken sadece veri göndermek için kullanılır, yani işlemin sonunda bir sonuç dönmez. Örnek olarak: Veritabanındaki (database) bir tabloya yeni bir satır eklerken kullanılabilinir. Tabi bu satırın eklenmesiyle çıkan bir sayı, sonuç vs kullanılmıyorsa.
Mesela "addNewUser" adındaki bir prosedür (sp) ile kullanıcılar (users) tablosuna yeni bir kullanıcı ekleyelim.
SqlCommand sqlComm = new SqlCommand();sqlComm.Connection = dbConn;sqlComm.CommandType = CommandType.StoredProcedure;sqlComm.CommandText = "addNewUser";sqlComm.ExecuteNonQuery();
- dbConn: daha önce tanımladığımız veritabanı bağlantısı adı.
- sqlComm: en başta tanımladığımız sql komutu ismi.
- addNewUser: sql komutu için kullandığımız prosedür.
- CommandType kısmını da prosedür kullandığımız için CommandType.StoredProcedure yapıyoruz.
- İşlem sonunda sadece veritabanına veri gönderdiğimiz için "ExecuteNonQuery" kullanıyoruz.
ExecuteScalar
SqlCommand sqlComm= new SqlCommand();sqlComm.Connection = dbConn;sqlComm.CommandType = CommandType.StoredProcedure; ;sqlComm.CommandText = "checkTag";sqlComm.Parameters.Add("@tag", SqlDbType.NVarChar, 50, "tag");sqlComm.Parameters["@tag"].Value = "etiket";tagID = sqlComm.ExecuteScalar().ToString();
- dbConn: daha önce tanımladığımız veritabanı bağlantısı adı.
- sqlComm: en başta tanımladığımız sql komutu ismi.
- checkTag: sql komutu için kullandığımız prosedür.
- "@tag": bu prosedürün doldurmamız gereken parametresi, ona "etiket" kelimisini yolluyoruz.
- CommandType kısmını da prosedür kullandığımız için CommandType.StoredProcedure yapıyoruz.
- İşlem sonunda tek satırlık sonucu, string'e çevirip "tagID" ye atıyoruz.
ExecuteExecuteReader
SqlCommand sqlComm = new SqlCommand();sqlComm.Connection = dbConn;sqlComm.CommandType = CommandType.StoredProcedure; ;sqlComm.CommandText = "getCategories";SqlDataReader rd = sqlComm.ExecuteReader();ddlCategories.DataSource = rd;ddlCategories.DataBind();rd.Close();
<asp:DropDownList ID="ddlCategories" runat="server" DataTextField="name" DataValueField="ID"></asp:DropDownList>
- dbConn: daha önce tanımladığımız veritabanı bağlantısı adı.
- sqlComm: en başta tanımladığımız sql komutu ismi.
- getCategories: sql komutu için kullandığımız prosedür.
- rd: verileri koyduğumuz sqldatareader öğesi.
- ddlCategories: arayüzde dropdown (açılır liste) olarak duran asp.net html input öğesi.
- İşlem sonunda çektiğimiz verileri "ddlCategories" öğesine doldurarak kullanıcıya gösteriyoruz.
ExecuteXmlReader
XmlReader xr = sqlComm.ExecuteXmlReader();