lostyazilim
tr.link

c# sql veri ekleme kontrolü

7 Mesajlar 2.824 Okunma
acebozum
tr.link

salihyksl salihyksl WM Aracı Kullanıcı
  • Üyelik 11.08.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek öğrenci
  • Konum Konya
  • Ad Soyad S** Y**
  • Mesajlar 233
  • Beğeniler 58 / 11
  • Ticaret 1, (%0)
arkadaşlar sizden şöyle bir yardım bekliyorum şimdi textbox enter eventine basında eğer sql kayıt varsa güncellenecek yoksa yeni kayıt eklenecek bunu hangi kodla yapacağım?
 

 

elektronikssl
webimgo

Gerilim Gerilim www.giyse.com Kullanıcı
  • Üyelik 27.08.2011
  • Yaş/Cinsiyet 32 / E
  • Meslek Bilgi İşlem
  • Konum Çanakkale
  • Ad Soyad B** Ö**
  • Mesajlar 1923
  • Beğeniler 496 / 496
  • Ticaret 20, (%100)
select count(*) from tablo
where kayitsutunu = kayitbilgi

tarzında bir sorgu çekersin önce. executescalar'a bir değişken eşitlersin. if komutu ile 1 den büyükse update küçükse insert dersin..
salihyksl

kişi bu mesajı beğendi.

Giyse.com - Giyim Moda, Ayakkabı, Çanta ve Aksesuar Online Alışveriş

salihyksl salihyksl WM Aracı Kullanıcı
  • Üyelik 11.08.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek öğrenci
  • Konum Konya
  • Ad Soyad S** Y**
  • Mesajlar 233
  • Beğeniler 58 / 11
  • Ticaret 1, (%0)
bu kadar bilgim yok bana kod olarak atabilir misin?
 

 

Gerilim Gerilim www.giyse.com Kullanıcı
  • Üyelik 27.08.2011
  • Yaş/Cinsiyet 32 / E
  • Meslek Bilgi İşlem
  • Konum Çanakkale
  • Ad Soyad B** Ö**
  • Mesajlar 1923
  • Beğeniler 496 / 496
  • Ticaret 20, (%100)
Varsayarak anlatayım o zaman. öğrenci tablosu ve öğrenci numarasından gideyim.

String degisken = textbox1.text;
sqlconnection bag = new sqlconnection("...");
bag.open();
sqlcommand varmi = new sqlcommand("select count(*) from ogrenci where ogrencino="+degisken+",bag);
int sayi = int.Parse(varmi.executescalar());

if (sayi == 0)
insert komutları..
else //kayıt varsa yani
update komutları..
salihyksl

kişi bu mesajı beğendi.

Giyse.com - Giyim Moda, Ayakkabı, Çanta ve Aksesuar Online Alışveriş
wmaraci
wmaraci

salihyksl salihyksl WM Aracı Kullanıcı
  • Üyelik 11.08.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek öğrenci
  • Konum Konya
  • Ad Soyad S** Y**
  • Mesajlar 233
  • Beğeniler 58 / 11
  • Ticaret 1, (%0)
6 tane yerde hata veriyor

Ek Olarak:

Gerilim adlı üyeden alıntı

Varsayarak anlatayım o zaman. öğrenci tablosu ve öğrenci numarasından gideyim.

String degisken = textbox1.text;
sqlconnection bag = new sqlconnection("...");
bag.open();
sqlcommand varmi = new sqlcommand("select count(*) from ogrenci where ogrencino="+degisken+",bag);
int sayi = int.Parse(varmi.executescalar());

if (sayi == 0)
insert komutları..
else //kayıt varsa yani
update komutları..
int sayi = int.Parse(varmi.executescalar()); burası hata veriyor
 

 

Gerilim Gerilim www.giyse.com Kullanıcı
  • Üyelik 27.08.2011
  • Yaş/Cinsiyet 32 / E
  • Meslek Bilgi İşlem
  • Konum Çanakkale
  • Ad Soyad B** Ö**
  • Mesajlar 1923
  • Beğeniler 496 / 496
  • Ticaret 20, (%100)
kodu direk kopyala yapıştır neden yaptın :)
Ben sana ufuk olsun diye yazdım. Küçük büyük harflere dikkat etmeden.
Sen elle tek tek yaz.
 

 

Giyse.com - Giyim Moda, Ayakkabı, Çanta ve Aksesuar Online Alışveriş

Nogitsun Nogitsun Nogitsun.com Kullanıcı
  • Üyelik 18.11.2015
  • Yaş/Cinsiyet 29 / E
  • Meslek .NET Developer
  • Konum İstanbul Avrupa
  • Ad Soyad B** Y**
  • Mesajlar 232
  • Beğeniler 32 / 75
  • Ticaret 0, (%0)
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.
Gerilim

kişi bu mesajı beğendi.

Nogitsun.com | Yazılım Çözümleri Üretir.
wmaraci
wmaraci
Konuyu toplam 2 kişi okuyor. (0 kullanıcı ve 2 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al