Asp.Net Te Sql Parametresine Değer Yollama Sorunu??
-
public List sorulari_cek(string kelime) { List soru_listesi = new List(); string mycommand = "select * from sorular where grup in (@deneme) order by NewID()"; SqlCommand com = new SqlCommand(mycommand, con); com.Parameters.AddWithValue("@deneme",kelime); con.Open(); SqlDataReader rd = com.ExecuteReader(); while (rd.Read()) { sorular nesne = new sorular(); nesne.soru_ID =Convert.ToInt32(rd["soru_ID"]); nesne.soru = rd["soru"].ToString(); nesne.cevap = rd["cevap"].ToString(); nesne.grup = Convert.ToInt32(rd["grup"]); soru_listesi.Add(nesne); } con.Close(); return soru_listesi; }
Kod tarafından kelime isimli string değişkenimi 2,15,6,0 şeklinde direk yolluyorum class taki fonksiyona 2. 15. 6. ve 0. gruba ait soruları getırsın diye ama runtime da
Conversion failed when converting the varchar value ‘1,2,0’ to data type int."
gibisinden hata veriyo 1,2,0 kısmı yerine kelime yazıyo bazen hatada biraz baktım cast ve convert fonksıyonu kullan demısler
beceremedım onuda 1-2 denedım olmadı. sql de İN operatorune nasıl değişken sayıda parametre yollayabilirim.??
-
string
mycommand =
"select * from sorular where grup in "+ kelime +"order by NewID()"
;
Bu şekilde yap hacı abi neden birdaha diğer türlü uğraşıyorsun ki ?
-
dediğin gibi yaptım oldu hocam peki bu yöntem güvenlik açısından sıkıntılı olur mu bazı yerlerde parametreli kullanın demişlerde hep
-
hocam bence entity framework kullan kullanıcıdan aldığın değeri temizlemeden sorguya gönderme onun dışında güvenlikle ilgili problem yaşayacağını sanmıyorum. Bende o güvenlik olayını bi ara baya taktımda ondan söylüyorum boşuna kafa yormaya gerek yok :)
-
bu örnekte burdaki kelime stringinde, checkboxlistteki listitemlerin value larını tutuyorum tüm checkboxlist i gezıyorum kullanıcı hangi itemlere tik koymussa kelime değişkenime sırası ile o itemlerin value larını ekliyorum. Yani bu örnek için risk olmaz sanırım kullanıcı bi yere bişey yazmamıs oluyo. Entity Framework ile ilgili bişeyler okuyodum şimdi de performans olarak iyi değil yazmıs birisi ?
-
Hannibal_King bunu yazdı
bu örnekte burdaki kelime stringinde, checkboxlistteki listitemlerin value larını tutuyorum tüm checkboxlist i gezıyorum kullanıcı hangi itemlere tik koymussa kelime değişkenime sırası ile o itemlerin value larını ekliyorum. Yani bu örnek için risk olmaz sanırım kullanıcı bi yere bişey yazmamıs oluyo. Entity Framework ile ilgili bişeyler okuyodum şimdi de performans olarak iyi değil yazmıs birisi ?
boşver hocam onları sen adoyu ögrenme demiyorum zaten öyle çok aktaksiyonu yok 1 proje yap tamam de ado oturdu sonra entity ile devam et kod ezberleme mantık oturunca internetten bakıyon kodlara zaten benim gibi boşuna amelelik yapma okulda bizede dediler ado ado ado ögrendik o kadar kastik iş yerinde 1 kere yaptim tepki şuydu olm napiyon sen manyakmisin entity ile yapsana piyasada en tutucu adocular bide artik entity yapıyor boşuna amelelik yapmaktan bıkmışlar
-
GUS bunu yazdıHannibal_King bunu yazdı
bu örnekte burdaki kelime stringinde, checkboxlistteki listitemlerin value larını tutuyorum tüm checkboxlist i gezıyorum kullanıcı hangi itemlere tik koymussa kelime değişkenime sırası ile o itemlerin value larını ekliyorum. Yani bu örnek için risk olmaz sanırım kullanıcı bi yere bişey yazmamıs oluyo. Entity Framework ile ilgili bişeyler okuyodum şimdi de performans olarak iyi değil yazmıs birisi ?
boşver hocam onları sen adoyu ögrenme demiyorum zaten öyle çok aktaksiyonu yok 1 proje yap tamam de ado oturdu sonra entity ile devam et kod ezberleme mantık oturunca internetten bakıyon kodlara zaten benim gibi boşuna amelelik yapma okulda bizede dediler ado ado ado ögrendik o kadar kastik iş yerinde 1 kere yaptim tepki şuydu olm napiyon sen manyakmisin entity ile yapsana piyasada en tutucu adocular bide artik entity yapıyor boşuna amelelik yapmaktan bıkmışlar
kime sql desem entity diyor.
baktım evet daha kolay ama sql i tam anlamadan geçmek bence yanlış olur.
bütün sorguları çalışan bir uygulama yapıp geçmek daha mantıklı
-
zeybekustasi bunu yazdıGUS bunu yazdıHannibal_King bunu yazdı
bu örnekte burdaki kelime stringinde, checkboxlistteki listitemlerin value larını tutuyorum tüm checkboxlist i gezıyorum kullanıcı hangi itemlere tik koymussa kelime değişkenime sırası ile o itemlerin value larını ekliyorum. Yani bu örnek için risk olmaz sanırım kullanıcı bi yere bişey yazmamıs oluyo. Entity Framework ile ilgili bişeyler okuyodum şimdi de performans olarak iyi değil yazmıs birisi ?
boşver hocam onları sen adoyu ögrenme demiyorum zaten öyle çok aktaksiyonu yok 1 proje yap tamam de ado oturdu sonra entity ile devam et kod ezberleme mantık oturunca internetten bakıyon kodlara zaten benim gibi boşuna amelelik yapma okulda bizede dediler ado ado ado ögrendik o kadar kastik iş yerinde 1 kere yaptim tepki şuydu olm napiyon sen manyakmisin entity ile yapsana piyasada en tutucu adocular bide artik entity yapıyor boşuna amelelik yapmaktan bıkmışlar
kime sql desem entity diyor.
baktım evet daha kolay ama sql i tam anlamadan geçmek bence yanlış olur.
bütün sorguları çalışan bir uygulama yapıp geçmek daha mantıklı
kavramları yanlış kullanıyorsunuz. sql ile entitiy framework karşılaştırılması yapılamaz öncelikle. Öyle olsaydı EF ile sql sorgu çalıştıramazdın.
Konu sahibinin yazdığı kodlar Ado . NET ile alakalı, bir süre önce ise alternatif olarak model bazlı bir yapı yayımlandı, entity framework. 3 parçaya ayrılan EF ile
1- model first
2- code first
3- db first
veritabanı işlemlerinizi yapabilirsiniz. Bu 3 yapının da kendine göre avantajları var (internette bulabilirsiniz muhtemelen)
Ado .NET boşverilmez elbette, çünkü yazılımda mümkün mertebe bir çok konuya hakim olmalı, ama geçmiş teknolojileri/yapıları iyi bilse de yeni teknolojilere açık olup onları öğrenmeli. Aksi takdirde kaliteli firmalarda kendine yer bulamaz.
Neden geçmiş şeyleri öğrenmeli? Karşılayacağınız sistem her zaman yeniye uyarlı olmayabilir, mesela güncellenmesi gereken bir projede ado .net kullanılmışsa, kişi sadece EF biliyorsa öğrenmek için tekrar uğraşması lazım. Ama yeni bir proje yapılıyorsa ve veritabanı yapısı uygunsa ado .net yerine EF kullanılabilir. Her ne kadar projeye göre hareket etmek gerekse de EF kullanmanın bir çok avantajı mevuct.
-
unbalanced bunu yazdızeybekustasi bunu yazdıGUS bunu yazdıHannibal_King bunu yazdı
kavramları yanlış kullanıyorsunuz. sql ile entitiy framework karşılaştırılması yapılamaz öncelikle. Öyle olsaydı EF ile sql sorgu çalıştıramazdın.
Konu sahibinin yazdığı kodlar Ado . NET ile alakalı, bir süre önce ise alternatif olarak model bazlı bir yapı yayımlandı, entity framework. 3 parçaya ayrılan EF ile
1- model first
2- code first
3- db first
veritabanı işlemlerinizi yapabilirsiniz. Bu 3 yapının da kendine göre avantajları var (internette bulabilirsiniz muhtemelen)
Ado .NET boşverilmez elbette, çünkü yazılımda mümkün mertebe bir çok konuya hakim olmalı, ama geçmiş teknolojileri/yapıları iyi bilse de yeni teknolojilere açık olup onları öğrenmeli. Aksi takdirde kaliteli firmalarda kendine yer bulamaz.
Neden geçmiş şeyleri öğrenmeli? Karşılayacağınız sistem her zaman yeniye uyarlı olmayabilir, mesela güncellenmesi gereken bir projede ado .net kullanılmışsa, kişi sadece EF biliyorsa öğrenmek için tekrar uğraşması lazım. Ama yeni bir proje yapılıyorsa ve veritabanı yapısı uygunsa ado .net yerine EF kullanılabilir. Her ne kadar projeye göre hareket etmek gerekse de EF kullanmanın bir çok avantajı mevuct.
hocam bende bunu dedim ama böyle detay verince insanların kafası karışıyor bu ufak tefek şeylere takan adamlar için tam bir kabus oluyor EF mi Ado mu EF ama model mi code mu db first mü böylece adam programlamaya başlamadan db den soguyor ben hepsini araştırmıştım bak araştırma demiyorum böyle şeyler olduğunu ögren hepsi ilede yapabiliyorsan bir uygulama yap yapamıyorsanda çok takma bence Entity de db first şeklinde gidebilirsin gayet kolay ve akıcı yapacağın şey SQL serverda tablo yapılarını kurup visual studioya aktarmak oluyor
@Hannibal_King adoda db den verileri alıp class oluşturup gezdiriyonya projede entity de classların hepsini otomatik kendi oluşturuyo hani kendi yapıyor diye yanlış algılama kontrol bende degilmiş hissi uyandırmasın herşey kitabına uygun hiçbir sıkıntısı yok
@unbalanced hocam code first ile falanda proje yaptımda 1 yaptım 2 yaptım sonra nedir bu amelelik ulan diosun bırakıyosun çünkü işte öyle sınırsız zamanın yok adam diyor proje yarına yetişcek e oturda code first ile db yapip 1 günde proje çıkar.
hocam nerde çalışıyon ne ediyon bilmiyom ama türkiyedeki ajans politikası böyle genelde
GUS tarafından 19/Eki/14 18:40 tarihinde düzenlenmiştir -
Code first çalışman şart değil hocam, eğer db yi ayrı tasarlamışsan direk olarak db yi ekleyip modelini yaratabilirsin bu çok daha kolay olur.
türkiyesini bilmem hocam da yarın projeyi teslim et demenin bir mantığı yok. Yazılım geliştirmenin aşamaları var. Bu sebeple ülkemizdeki yazılımlar dünya çapında değil. Dandik muhasebe programlarında bile yığınla hata olabiliyor. Neden? Kendine yazılımıcı diyen adamların ne design patternlerden ne unit testlerden haberi var. Tasarım ekranında butona çift tıklayıp tüm kodu oraya yazan dangalaklar profesyonelim diye ortada geziyor (lafım bunu yapan herkese değil, bunu yapıp da kendine profesyonelim diyenlere)
Projeden kastın nedir bilmem ama benim çalıştığım projeler aylar süren işler hocam, iki satırda yaz işin içinden çık olayı yok, ayrıca içerisinde AR&GE de barındırdığı için en temiz şekilde kodunu yazmak zorundasın.
Kendini bu şekilde yetiştirmeye bak. Ve sana bu imkanları sağlayan firmalarda çalışmanı tavsiye ederim.
-
Hannibal_King bunu yazdı
dediğin gibi yaptım oldu hocam peki bu yöntem güvenlik açısından sıkıntılı olur mu bazı yerlerde parametreli kullanın demişlerde hep
Hocam parametre olarak vermekle direkt olarak böyle yazmak arasında bir fark olduğunu sanmıyorum.
Sonuçta birini direkt olarak veriyorsun, diğerini parametre olarak(aslında bu da direkt olarak) veriyorsun.
He eğer güvenlik çok önemliyse management studio ile sql fonksiyonu yazıp o fonksiyona parametre olarak verirsin, böylece yazdığın kodun güvenliğinden emin olabilirsin..