Merhabalar.
Çok basit bir şekilde, temelde veritabanı işlemleri yapabileceğiniz bir C# sınıf yazıyorum buraya. Arama motorlarından buraya gelen ziyaretçiler için de faydalı olur umarım.
Veritabanı MS SQL Server için geçerlidir.
Öncelikle küçük ancak
önemli bir teknik açıklama yapmak istiyorum.
using ifadesi
Dispose ve
Close methodlarını otomatik çağırır ve nesneyi
null yapar.
SqlConnection,
SqlCommand gibi sınıflar, C++ ile yazılmış unmanaget (.NET içinde yönetilmeyen) Win32 API dll kullanırlar.
Bu harici dll'lerin işi bittiğinde, muhakkak, kapatılması
hafızadan silinmesi gerek.
Windows işletim sistemi pencerelerden ibarettir.Bu pencereleri açmak için kol (Handle) gerekiyor.
Veritabanı, dosya sitemi, register gibi bir çok işlemde, C# kodumuz windows kollarını açar ve açılan pencere kapatılmazsa bir süre sonra uygulama aşırı
RAM ve
CPU tüketir.
Sağlıklı bir uygulama için
IDisposable arayüzünü uygulayan tüm .NET nesnelerinde
using kullanın.
DataBase.cs dosyası public sealed class DataBase
{
// Buradaki ilgili yerlere veritabanı erişim bilgilerini yazın
public static string ConnectionString = "Data Source=localhost;Initial Catalog=dbadi;User ID=dbkullanici;Password=sifre;";
public static int Execute(string sqlQuery, System.Data.CommandType cmdType = CommandType.Text, params SqlParameter[] parameters)
{
if (string.IsNullOrEmpty(sqlQuery))
{
throw new ArgumentNullException("sqlQuery");
}
using (SqlConnection con = new SqlConnection(ConnectionString))
using (SqlCommand cmd = con.CreateCommand())
{
con.Open();
cmd.CommandText = sqlQuery;
cmd.CommandType = cmdType;
if (parameters != null && parameters.Length > 0)
{
cmd.Parameters.AddRange(parameters);
}
return cmd.ExecuteNonQuery();
}
}
public static DataTable Read(string sqlQuery, System.Data.CommandType cmdType = CommandType.Text, params SqlParameter[] parameters)
{
if (string.IsNullOrEmpty(sqlQuery))
{
throw new ArgumentNullException("sqlQuery");
}
using (SqlConnection con = new SqlConnection(ConnectionString))
using (SqlCommand cmd = con.CreateCommand())
{
con.Open();
cmd.CommandText = sqlQuery;
cmd.CommandType = cmdType;
if (parameters != null && parameters.Length > 0)
{
cmd.Parameters.AddRange(parameters);
}
DataTable dt = null;
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
dt = new DataTable();
dt.Load(reader);
}
}
return dt;
}
}
}Kullanım örnekleri : // Sql Parametreler List içinde
List<SqlParameter> sqlParams = new List<SqlParameter>();
sqlParams.Add(new SqlParameter("@Paket", 1));
sqlParams.Add(new SqlParameter("@Tarih", DateTime.Now));
sqlParams.Add(new SqlParameter("@UyeID", 96));
// Parametreli 1.Yöntem
// insert,update,delete için kullanılır
DataBase.Execute("UPDATE Uyeler SET PaketiBitti=@Paket, SonGirisTarihi=@Tarih WHERE id=@UyeID", CommandType.Text, sqlParams.ToArray());
// Parametreli 2.Yöntem
// insert,update,delete için kullanılır
DataBase.Execute(
"UPDATE Uyeler SET PaketiBitti=@PaketiBitti, SonGirisTarihi=@SonGirisTarihi WHERE id=@UyeID",
CommandType.Text,
new SqlParameter("@PaketiBitti", 1),
new SqlParameter("@SonGirisTarihi", DateTime.Now),
new SqlParameter("@UyeID", 96)
);
// Parametresiz
// insert,update,delete için kullanılır
int uyeid = 1;
DataBase.Execute("UPDATE Uyeler SET PaketiBitti=1 WHERE id=" + uyeid);
// Parametreli Veri çekme
DataTable parametreli = DataBase.Read(
"SELECT id,adi,soyadi FROM Uyeler where adi=@adi",
CommandType.Text,
new SqlParameter("@adi", "şener akdemir")
);
// Parametresiz Veri çekme
DataTable dt = DataBase.Read("SELECT id,adi,soyadi FROM Uyeler");
if (dt == null)
{
throw new Exception("Kayıt yok!");
}
foreach (DataRow item in dt.Rows)
{
Console.WriteLine(item["adi"]);
}