salihyksl Merhaba,

Bahsettiğin ve merak ettiğin konu mükerrer kayıt kontrolü olarak geçiyor. Stored Procedure kullanım bilgin varsa çok kolay bir şekilde yapabilirsin. Ancak hangi alt yapıyı kullandığın önemli?

Örnek bir kullanıcı kayıdı yapalım seninle daha iyi anlaman için bu sorgu sp ile sunucu tarafında if exist komutuyla mükerrer kayıt kontrolü gerçekleştirip bir değer döndürüyor bu değeride ön tarafda kod tarafında alıp ona göre işlem yapıyoruz.

CREATE PROCEDURE [dbo].[sp_KullaniciEkle]
@KullaniciAdi nvarchar(50)
AS
IF EXISTS (SELECT*FROM tblKullanicilar WHERE KullaniciAdi = @KullaniciAdi)
BEGIN
RETURN 0 /* Böyle bir kayıt varsa 0 dönsün. */
END
ELSE
BEGIN
INSERT INTO tblKullanicilar (KullaniciAdi) VALUES (@KullaniciAdi)
RETURN 1 /* Yoksa Veri Tabanımıza eklesin. */
END


Kod tarafındada da bu sp yi çağarıp nasıl işlem yapacağına geçelim. Data Access Layer katmanın:

string connStr = ConfigurationManager.ConnectionStrings["MyConnStr"].ConnectionString;
SqlConnection conn = new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand("sp_KullaniciEkle", conn);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.AddWithValue("@KullaniciAdi", kullanici.KullaniciAdi);

if (conn.State == ConnectionState.Closed)
conn.Open();
int kayitSay = cmd.ExecuteNonQuery();
conn.Close();
return kayitSay;

İstemci katmanın Yukarıda verdiğim D.A.L. alanını KullanıcıIslemleri classının altındaki KullaniciEkle metoduyla bağladım. :

if (chckOnay.Checked)
{
Kullanici kullanici = new Kullanici();
kullanici.KullaniciAdi = txtKullaniciAdi.Text;
var kullaniciİslemleri = new KullaniciIslemleri();
int sonuc = kullaniciİslemleri.KullaniciEkle(kullanici);
if (sonuc == 1)
{
lblSonuc.Text = "Hesap Oluşturuldu! Yönlendiriliyor..";
Response.AppendHeader("Refresh", "3;url=KullaniciGirisi.aspx");
}
else
{
lblSonuc.Text = "Bu kullanıcı adı kullanılıyor!";
}


Katmanlı mimari kullanmayı sevmiyorsan. Karışık geliyorsa Gerilim ' hocamın dediği gibi executescaler ile tek bir veri dönüşünü alıp işlemi tek bir katmanda yapabilirsin.

Sevgi ve Saygılarımla.