Sql ' Karakteri Problemi
-
c# ile sqlite üzerine verileri ayıklayıp kaydederken belirli satırlarda duruyordu başta sebebini anlayamadım ama sonradan fark ettim karşılaştırma yaptığım hücrenin içerisinde ' karakteri var ve sql karakteri olduğu için problem oluyor. Bu noktada nasıl bir çözümle sorunu halledebilirim?
Sorgu;
update firma set tel='tel[i]' where firma_adi='firma_adi[i] ';
Hataya düştüğünde firma_adi[i] dizisinin içinde " ' " karakteri içeriyor ve bundan dolayı hata veriyor.
Sorguyu çalıştırmadan önce firma_adi[i] 'nı replace ile ' karakterinden ayıklayabilirim ama bu seferde where ile kıyaslama tutmayacağından sorgu geçersiz olacak.
-
Hocam bu güvenlik açığı yaratır.
Sana tavsiyem ORM kullanmandır.
Onun dışında SqlParameter kullanabilirsin.
En kötü ihtimalle String başına @ işareti koy.
Yani ;
String tel=@""+tel[i]; String firmaAdi=@""+firma_adi[i]; String query="update firma set tel=' "+tel+" ' where firma_adi=' "+firmaAdi+" '";
-
MhmdAlmz bunu yazdı
Hocam bu güvenlik açığı yaratır.
Sana tavsiyem ORM kullanmandır.
Onun dışında SqlParameter kullanabilirsin.
En kötü ihtimalle String başına @ işareti koy.
Yani ;
String tel=@""+tel[i]; String firmaAdi=@""+firma_adi[i]; String query="update firma set tel=' "+tel+" ' where firma_adi=' "+firmaAdi+" '";
c#'ta Sqlite insert kullanımına bakarken stackoverflow'da da bahsetmişlerdi sql injection zaafiyetinden. Ama kendi kendime bir şeyler yaptığım için pekte önemsemedim hocam kullanımı. Ancak ORM not aldım, araştıracağım.
Ayrıca yazdıklarınıza uyarladım ancak yine aynı yerde hata verdi. Atladığım başka bir şey mi var acaba hocam?
Hata görüntüsü ekte hocam.
-
Https bunu yazdıMhmdAlmz bunu yazdı
Hocam bu güvenlik açığı yaratır.
Sana tavsiyem ORM kullanmandır.
Onun dışında SqlParameter kullanabilirsin.
En kötü ihtimalle String başına @ işareti koy.
Yani ;
String tel=@""+tel[i]; String firmaAdi=@""+firma_adi[i]; String query="update firma set tel=' "+tel+" ' where firma_adi=' "+firmaAdi+" '";
c#'ta Sqlite insert kullanımına bakarken stackoverflow'da da bahsetmişlerdi sql injection zaafiyetinden. Ama kendi kendime bir şeyler yaptığım için pekte önemsemedim hocam kullanımı. Ancak ORM not aldım, araştıracağım.
Ayrıca yazdıklarınıza uyarladım ancak yine aynı yerde hata verdi. Atladığım başka bir şey mi var acaba hocam?
Hata görüntüsü ekte hocam.
Hocam ekran görüntüsünü göremiyorum.
Muhtemelen @ Kullanımını yanlış yazmışımdır.
Mobilim şuan bakamıyorum.
@ kullanımını araştırırsan bulursun bu şekilde çözersin.
Yada şöyle -->>>> \'
tarz bir kullanım var. Bu da işini görür.
-
MhmdAlmz bunu yazdıHttps bunu yazdıMhmdAlmz bunu yazdı
Hocam bu güvenlik açığı yaratır.
Sana tavsiyem ORM kullanmandır.
Onun dışında SqlParameter kullanabilirsin.
En kötü ihtimalle String başına @ işareti koy.
Yani ;
String tel=@""+tel[i]; String firmaAdi=@""+firma_adi[i]; String query="update firma set tel=' "+tel+" ' where firma_adi=' "+firmaAdi+" '";
c#'ta Sqlite insert kullanımına bakarken stackoverflow'da da bahsetmişlerdi sql injection zaafiyetinden. Ama kendi kendime bir şeyler yaptığım için pekte önemsemedim hocam kullanımı. Ancak ORM not aldım, araştıracağım.
Ayrıca yazdıklarınıza uyarladım ancak yine aynı yerde hata verdi. Atladığım başka bir şey mi var acaba hocam?
Hata görüntüsü ekte hocam.
Hocam ekran görüntüsünü göremiyorum.
Muhtemelen @ Kullanımını yanlış yazmışımdır.
Mobilim şuan bakamıyorum.
@ kullanımını araştırırsan bulursun bu şekilde çözersin.
Yada şöyle -->>>> \'
tarz bir kullanım var. Bu da işini görür.
Kontrol ediyorum tekrar hocam.
-
Https bunu yazdıMhmdAlmz bunu yazdıHttps bunu yazdıMhmdAlmz bunu yazdı
Kontrol ediyorum tekrar hocam.
using (SqlCommand mySqlCommand = new SqlCommand("update firma set tel=@tel where firma_adi=@firmaAdi", conn); { mySqlCommand.Parameters.AddWithValue("@firmaAdi", tel[i]); mySqlCommand.Parameters.AddWithValue("@tel", firma_adi[i]); mySqlCommand.Connection.Open(); mySqlCommand.ExecuteNonQuery(); }
Bunu kullan hocam başın ağrımasın.
Parametre kullanımını öğren en kötü ORM den önce.