En iyi yanıtlayıcılar
true değerine bir değişkene atamak. Yardımcı olabilirmisiniz.

Soru
-
merhaba. bir yerde takıldım. veritabanından true değeri geliyor ve bunu if içinde karışlaştırma yapmak istiyorum acak bir türlü true ile karşılaştırma yapamadım. nerede yanlış yapıyorum.
SqlConnection baglanti = klas.baglan();
SqlCommand yetki = new SqlCommand("SELECT Admin FROM dbo.Yetkiler where OgretmenID==" + OgretmenID,baglanti);
double yetkim = Convert.ToDouble(yetki.ExecuteScalar);
if(yetkim == null || yetkim == "")
{
}
Yanıtlar
-
Bu şekilde parametresiz sorgu yazmayın. Çokbüyük bir güvenlik açığı oluşturmuş olursunuz. Sorunuza gelince SQL de eşitlik karşılaştırması == ile değil = ile yapılır. yetkim değişkeni null değer alabilen bir tür değil eğer null değer alabiliyorsa double, bool, int yerine double?, bool?, int? yazılır ve dönüşümler ona göre yapılır. Eğer null olabiliyorsa aşağıdaki kodlarda bool olan kısımları bool? olarak değiştirmelisin
SqlConnection baglanti = klas.baglan(); SqlCommand yetki = baglanti.CreateCommand(); yetki.CommandText = "Select Admin From dbo.Yetkiler Where OgretmenID = @ogretmenID"; yetki.Parameters.AddWithValue("@ogretmenID", OgretmenID); bool yetkim = (bool)yetki.ExecuteScalar(); if(yetkim) { //Yetki Var } else { //Yetki Yok }
- Yanıt Olarak İşaretleyen CÜNEYT.A 13 Şubat 2017 Pazartesi 11:11
Tüm Yanıtlar
-
-
yapmak istediğim şey şu.
veritabanındaki veri çekiyorum. gelen değer true veya false.
bu gelen true veya false göre işlem yaptırmak istiyorum.
yani
SqlConnection baglanti = klas.baglan();
SqlCommand yetki = new SqlCommand("SELECT Admin FROM dbo.Yetkiler where OgretmenID==" + OgretmenID,baglanti);
if(yetki==true)
{pnlMenu.visible=true;
}gibi.... bunu yapmak istiyorum. ancak veritabanından gelen true veya false if içinde bir türlü karşılaştıramıyorum. uyarılarda bunu bool yap veya dönüştür diyor. bunu nasıl yapabilirim. yardımcı olurmusunuz.
-
Bu şekilde parametresiz sorgu yazmayın. Çokbüyük bir güvenlik açığı oluşturmuş olursunuz. Sorunuza gelince SQL de eşitlik karşılaştırması == ile değil = ile yapılır. yetkim değişkeni null değer alabilen bir tür değil eğer null değer alabiliyorsa double, bool, int yerine double?, bool?, int? yazılır ve dönüşümler ona göre yapılır. Eğer null olabiliyorsa aşağıdaki kodlarda bool olan kısımları bool? olarak değiştirmelisin
SqlConnection baglanti = klas.baglan(); SqlCommand yetki = baglanti.CreateCommand(); yetki.CommandText = "Select Admin From dbo.Yetkiler Where OgretmenID = @ogretmenID"; yetki.Parameters.AddWithValue("@ogretmenID", OgretmenID); bool yetkim = (bool)yetki.ExecuteScalar(); if(yetkim) { //Yetki Var } else { //Yetki Yok }
- Yanıt Olarak İşaretleyen CÜNEYT.A 13 Şubat 2017 Pazartesi 11:11
-
ExecuteScalar()'dan gelen değeri cast yapmadan önce true/false denetimi yapman gerekiyor. Örnek verdim:
object obj;
int id = 0;
if ((obj = cmd.ExecuteScalar()) == null)
{
Console.WriteLine("ExecuteScalar() == null: Aranılan değer tabloda bulunmuyor.");
}
else
{
id = (Int32)obj;
Console.WriteLine("Değer: " + id);
}
Eğer senin yaptığın gibi önce cast yaparsan, (Int32) null değerini sıfıra çevirir. Yukardakini test ettim, çalışıyor.- Düzenleyen A.M. Sabuncu 13 Şubat 2017 Pazartesi 12:30
-