Giriş
OleDBCommand, SqlCommand, SqlCeCommand, OracleCommand, MySqlCommand gibi veritabanı türüne göre kullanılan sınıflar var. Örneği SqlCeCommand .sdf dosya uzantılı SQL Server Compact Edition için kullanılıyor.
Veritabanından tam bağımsız olmak için IDbCommand arayüzünü kullanmak daha iyi.
Alanlar
Connection Alanı
Normalde constructor ile kullanılacak connection nesnesi de sağlanır.
Command nesnesinin en önemli alanı Parameters. Bu alana Add() veya AddWithValue() metodları ile değer eklemek mümkün.
Metodlar
AddWithValue metodu
SQL'deki pametrik alana isimle erişmek istersek AddWithValue() metodu kullanılır. AddWithValue Object alır ancak veritabanı sütunundaki doğru tipi kullanmamız gerekir. Veritabanı sütunu INT ise biz string verirsek hata alırız.
String olarak kullanımı. Burada NO alanının INT olmadığını varsaydım
Add metodu
Bu metod ile daha fazla kontrole sahibiz. Dolayısıyla AddWithValue yerine Add() kullanılması öneriliyor.
Add metodu - Date Değer Ekleme
Şöyle yaparız.
OleDB kullanıyorsak şöyle yaparız.
Varchar sütunlara şöyle yapabiliyoruz.
ExecuteNonQuery - Stored Proc Çağırmak
Stored Procedure çağırmak için kullanılabilir. Nesnenin CommandType alanını ve Stored Proc ismini atamamız gerekir.
ExecuteNonQuery - Satır Eklemek
Normalde Command nesnesinin CommandType alanına değer atamamız gerekmez. Ancak istenirse şöyle de yapılabilir.
Açıklaması şöyle
ExecuteNonQuery ile aynı. Tek fark ExecuteScalar() metodu bir değer dönüyor. Şöyle yaparız.
OleDBCommand, SqlCommand, SqlCeCommand, OracleCommand, MySqlCommand gibi veritabanı türüne göre kullanılan sınıflar var. Örneği SqlCeCommand .sdf dosya uzantılı SQL Server Compact Edition için kullanılıyor.
Veritabanından tam bağımsız olmak için IDbCommand arayüzünü kullanmak daha iyi.
Alanlar
Connection Alanı
Normalde constructor ile kullanılacak connection nesnesi de sağlanır.
SqlConnection con = new SqlConnection("ConnectionString");
SqlCommand cmd = new SqlCommand("query", con);
Ancak böyle yapmak istemezsek connection alanını kullanarak bu nesneyi atamak mümkün.cmd.Connection = con;
Parameters AlanıCommand nesnesinin en önemli alanı Parameters. Bu alana Add() veya AddWithValue() metodları ile değer eklemek mümkün.
Metodlar
AddWithValue metodu
SQL'deki pametrik alana isimle erişmek istersek AddWithValue() metodu kullanılır. AddWithValue Object alır ancak veritabanı sütunundaki doğru tipi kullanmamız gerekir. Veritabanı sütunu INT ise biz string verirsek hata alırız.
String olarak kullanımı. Burada NO alanının INT olmadığını varsaydım
String query = "Delete FROM TB WHERE NO=@number";
OleDbCommand cmd = new OleDbCommand(query, con);
cmd.Parameters.AddWithValue("@number", TextBox2.Text);
Eğer INT olsaydı şöyle yapmak gerekirdi.cmd.Parameters.AddWithValue("@number", Convert.ToInt32(TextBox2.Text.Trim()));
Date olarak kullanımıSqlCommand scmd1 = new SqlCommand("select count(*) from c
where requestdate between @dateStart and @dateEnd", sc);
DateTime dtStart = ...;
DateTime dtEnd = ...;
cmd.Parameters.AddWithValue("dateStart", dtStart);
cmd.Parameters.AddWithValue("dateEnd", dtEnd);
Add metodu
Bu metod ile daha fazla kontrole sahibiz. Dolayısıyla AddWithValue yerine Add() kullanılması öneriliyor.
Add metodu - Date Değer Ekleme
Şöyle yaparız.
cmd.Parameters.Add("@date", SqlDbType.Date, 100).Value = date;
Add metodu - Numeric Değer eklemeOleDB kullanıyorsak şöyle yaparız.
String query = "Delete FROM TB WHERE NO=@number";
OleDbCommand cmd = new OleDbCommand(query, con);
cmd.Parameters.Add("@number", OleDbType.Numeric, 30).Value=TextBox2.Text;
SQL Server kullanıyorsak şöyle yaparızcmd.Parameters.Add("@number", SqlDbType.Int).Value = number;
Oracle kullanıyorsak şöyle yaparız.var param = new OracleParameter(":pEmpNo1", OracleType.Number);
param.Value = 1;
cmd.Parameters.Add(param);
Add metodu - Varchar Değer EklemeVarchar sütunlara şöyle yapabiliyoruz.
cmd.Parameters.Add("@name",SqlDbType.VarChar,30).Value=varName;
Ayrıca Stored Proc. kullanırken parametrenin out olduğunu belirtmek için illaki Add() kullanmak gerek.ExecuteNonQuery - Stored Proc Çağırmak
Stored Procedure çağırmak için kullanılabilir. Nesnenin CommandType alanını ve Stored Proc ismini atamamız gerekir.
using System.Data.SqlClient;
using (SqlConnection conn = new SqlConnection("connectionString"))
{
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "StoredProcedureName";
cmd.ExecuteNonQuery();
}
Parametre alan Stored Proc için girdi alanları AddWithValue ile atanır. Storec Proc'tan gelmesi beklenen output alanları Direction ile belirtilir.Yukarıdaki örnekten farklı olarak çağrılacak Stored Proc. ismi SqlCommand nesnesi constructor'ına geçiliyor.var cmd = new SqlCommand("StoredProcedureName", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Parameter", inputValue);
// add the output parameter
cmd.Parameters.Add("@Parameter1", SqlDbType.NVarChar).Direction =
ParameterDirection.Output;
cmd.ExecuteNonQuery();
string parameter1 = (string)cmd.Parameters["@Parameter1"].Value;
ExecuteNonQuery - Satır Eklemek
Normalde Command nesnesinin CommandType alanına değer atamamız gerekmez. Ancak istenirse şöyle de yapılabilir.
cmd.CommandType = CommandType.Text;
Daha sonra şöyle yaparız.using(var connection = new OleDbConnection(ConnectionStringStatic()))
using(var cmd = connection.CreateCommand())
{
cmd.CommandText = @"INSERT INTO tbl_Clients (ipAddress, macAddress, machineName)
VALUES (?, ?, ?)";
cmd.Parameters.Add("@ip", ipAddress);
cmd.Parameters.Add("@mac", macAddrress);
cmd.Parameters.Add("@name", machineName);
connection.Open();
cmd.ExecuteNonQuery();
} // <-- Both connection and command are disposed here
ExecuteScalarAçıklaması şöyle
Dolayısıyla döndürülen nesneyi istediğimiz tipe çevirmemiz gerekir.ExecuteScalar will Executes the query, and returns the first column of the first row in the result set returned by the query. Additional columns or rows are ignored.
int count = Convert.ToInt32(cmd.ExecuteScalar());
Para okumak için şöyle yaparız.cmd.CommandText = "Select Price from mytable where productBrand = @brand";
cmd.Parameters.AddWithValue("@brand", "...");
decimal price = (decimal)cmd.ExecuteScalar();
Select cümlesinin kaç satır döndürdüğünü saymak için şöyle yaparız.var cmd = new SqlCommand("select DISTINCT max(billno) AS bill from sale", con))
int count = (int)cmd1.ExecuteScalar();
ExecuteScalar - Stored Proc ÇağırmakExecuteNonQuery ile aynı. Tek fark ExecuteScalar() metodu bir değer dönüyor. Şöyle yaparız.
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "StoredProcedureName";
con.Open();
var x = cmd.ExecuteScalar();
Hiç yorum yok:
Yorum Gönder