En iyi yanıtlayıcılar
Veri tabanından gelen değeri değişkene atmak

Soru
-
Merhaba,
Aşağıdaki kodda sqlserverden gelen değeri int bir değişkene atmak istiyorum. Nasıl düzenleyebilirim?
public static int OdaKonaklayanSayi(int x) { int konaklayansayi=0; SqlCommand komut = new SqlCommand("SELECT COUNT(*) FROM MUSTERI WHERE MUSTERIDURUM=1 AND MUSTERIODAID=" + x, SQLBaglantisi.baglanti); if (komut.Connection.State != ConnectionState.Open) { komut.Connection.Open(); } SqlDataReader dr = komut.ExecuteReader(); konaklayansayi = Convert.ToInt32(dr.Read()); dr.Close(); return konaklayansayi; }
Yanıtlar
-
public static int OdaKonaklayanSayi(int x) { int sonuc; using (SqlConnection con = new SqlConnection(@"!Connectionstring!")) { con.Open(); using (SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM MUSTERI WHERE MUSTERIDURUM=1 AND MUSTERIODAID=@para1", con)) { cmd.Parameters.Add("@para1", SqlDbType.Int).Value = x; sonuc = Convert.ToInt32(cmd.ExecuteScalar()); } con.Close(); } return sonuc; }
Şöyle birşey.- Yanıt Olarak Öneren CetinBasoz 6 Ağustos 2019 Salı 21:43
- Yanıt Olarak İşaretleyen Recep Dogan 7 Ağustos 2019 Çarşamba 12:01
-
public static int OdaKonaklayanSayi(int x) { int konaklayansayi=0; using(SqlConnection con = new SqlConnection(SQLBaglantisi.baglanti.ConnectionString)) using(SqlCommand komut = new SqlCommand(@"SELECT COUNT(*) FROM MUSTERI WHERE MUSTERIDURUM=1 AND MUSTERIODAID=@oda", con)) { komut.Parameters.Add("@oda", SqlDbType.Integer).Value = x; con.Open(); konaklayansayi = Convert.ToInt32(komut.ExecuteScalar()); con.Close(); } return konaklayansayi; }
Not: Sizin kodunuz da cok yakindi.
dr.Read(); konaklayansayi = Convert.ToInt32(dr[0]);
Ancak, tek bir deger beklenen durumlarda ExecuteScalar daha uygun.
Not2: Linq kullanıyor olsaydiniz bu kadar koda gerek yoktu:
var konaklayansayi = db.Musteri .Count(m => m.MusteriOdaID == x && m.Durum);
How to create a Minimal, Reproducible Example
The way to Go.
World's most advanced open source (object-) relational Database.
Flutter (for mobile, for web & desktop.
- Düzenleyen CetinBasoz 6 Ağustos 2019 Salı 21:01
- Yanıt Olarak Öneren Mehmet Emin Kaymaz 6 Ağustos 2019 Salı 21:01
- Yanıt Olarak İşaretleyen Recep Dogan 7 Ağustos 2019 Çarşamba 12:01
Tüm Yanıtlar
-
public static int OdaKonaklayanSayi(int x) { int sonuc; using (SqlConnection con = new SqlConnection(@"!Connectionstring!")) { con.Open(); using (SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM MUSTERI WHERE MUSTERIDURUM=1 AND MUSTERIODAID=@para1", con)) { cmd.Parameters.Add("@para1", SqlDbType.Int).Value = x; sonuc = Convert.ToInt32(cmd.ExecuteScalar()); } con.Close(); } return sonuc; }
Şöyle birşey.- Yanıt Olarak Öneren CetinBasoz 6 Ağustos 2019 Salı 21:43
- Yanıt Olarak İşaretleyen Recep Dogan 7 Ağustos 2019 Çarşamba 12:01
-
public static int OdaKonaklayanSayi(int x) { int konaklayansayi=0; using(SqlConnection con = new SqlConnection(SQLBaglantisi.baglanti.ConnectionString)) using(SqlCommand komut = new SqlCommand(@"SELECT COUNT(*) FROM MUSTERI WHERE MUSTERIDURUM=1 AND MUSTERIODAID=@oda", con)) { komut.Parameters.Add("@oda", SqlDbType.Integer).Value = x; con.Open(); konaklayansayi = Convert.ToInt32(komut.ExecuteScalar()); con.Close(); } return konaklayansayi; }
Not: Sizin kodunuz da cok yakindi.
dr.Read(); konaklayansayi = Convert.ToInt32(dr[0]);
Ancak, tek bir deger beklenen durumlarda ExecuteScalar daha uygun.
Not2: Linq kullanıyor olsaydiniz bu kadar koda gerek yoktu:
var konaklayansayi = db.Musteri .Count(m => m.MusteriOdaID == x && m.Durum);
How to create a Minimal, Reproducible Example
The way to Go.
World's most advanced open source (object-) relational Database.
Flutter (for mobile, for web & desktop.
- Düzenleyen CetinBasoz 6 Ağustos 2019 Salı 21:01
- Yanıt Olarak Öneren Mehmet Emin Kaymaz 6 Ağustos 2019 Salı 21:01
- Yanıt Olarak İşaretleyen Recep Dogan 7 Ağustos 2019 Çarşamba 12:01
-
Aslında Sorunum şu.
Odada müşteri kaydı yok ise hesap kapatılsın istiyorum. Örneğin 12 numaralı odada 3 kayıt var ama her seferinde sonuç 1 olarak geliyor. Hangi odayı denediysem sonuç hep 1 oluyor. Aynı sorguyu sql serverda çalıştırıyorum sonuç 3 geliyor. Sizin gönderdiğiniz kodla denedim sonuç değişmedi. acaba kodlarımda mı bir sorun var çözemedim. Bakabilirseniz sevinirim.
Sayfa Kodu
protected void Button2_Click(object sender, EventArgs e) { if (BLLMusteri.BllOdaKonaklayanSayi(12) == 0) { BLLOda.HesapKapatBLL(Convert.ToInt32(OdaId.Text), Convert.ToInt32(TxtUcret.Text)); Response.Redirect("default.aspx"); } else { Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Başarısız", "<script>alert('Hesap Kapatılamadı');</script>"); } }
BllOdaKonaklayanSayı
public static int BllOdaKonaklayanSayi(int deger) { return FacadeMusteri.OdaKonaklayanSayi(deger); }
Facede Katmanı OdaKonaklayanSayı
public static int OdaKonaklayanSayi(int x) { int konaklayansayi = 0; using (SqlConnection con = new SqlConnection(SQLBaglantisi.baglanti.ConnectionString)) using (SqlCommand komut = new SqlCommand(@"SELECT COUNT(*) FROM MUSTERI WHERE MUSTERIDURUM=1 AND MUSTERIODAID=@oda", con)) { komut.Parameters.Add("@oda", SqlDbType.Int).Value = x; con.Open(); konaklayansayi = Convert.ToInt32(komut.ExecuteScalar()); con.Close(); } return konaklayansayi; }
- Düzenleyen Recep Dogan 6 Ağustos 2019 Salı 21:18
-
belki de ayni database'e bakmiyorsunuzdur. Calistirmadan once SQL profiler'i calistirip gelen sorguyu inceleyebilir, aynen SSMS'de deneyebilirsiniz.
isterseniz bir anydesk id verin beraber bakalım.
How to create a Minimal, Reproducible Example
The way to Go.
World's most advanced open source (object-) relational Database.
Flutter (for mobile, for web & desktop.
- Düzenleyen CetinBasoz 6 Ağustos 2019 Salı 21:51
-
-
Teşekkür Ederim
Halloldu mu?
How to create a Minimal, Reproducible Example
The way to Go.
World's most advanced open source (object-) relational Database.
Flutter (for mobile, for web & desktop. -
Evet halloldu şöylek; Dediğiniz gibi SQL profiler'i çalıştırdım. Benim projede ilk yazdığım sorguyu değiştirmeme rağmen sql profillerde eski sorgu çağırdığını tespit ettim. halbuku projeyi defalarca kaydettim kapatıp açtım ama duzelmemişti. projeyi derleyince düzeldi.
- Düzenleyen Recep Dogan 12 Ağustos 2019 Pazartesi 20:50