Asp.net'te tek tırnak (') sorunu (Access INSERT INTO komutunda)

erayyynn

Doçent
Katılım
25 Haziran 2009
Mesajlar
605
Reaksiyon puanı
3
Puanları
0
("INSERT INTO not (kullanıcı,msg,tarih) Values ('" + a + "', '" + TextBox1.Text + "','" + Date.Now + "')", bagg)

Veri Tabanına kayıt kodum yukarıdaki gibi..
Kayıtta tek sorunum tek tırnak (') içeren mesajlarda problem olması..

Mesela; Pc'nin derken tek tırnak yüzünden kayıt yapılamıyor.Ben kayıtta o tek tırnağın bulunmasını istiyorum

Bu problemi nasıl halledebilirim ?
 

smokje

Asistan
Katılım
5 Şubat 2009
Mesajlar
152
Reaksiyon puanı
0
Puanları
0
Php'de addslashes() fonksiyonunu kullaniyoruz ASP de bilmiyorum ama buradan yola cikarak Google'da arastirma yapabilirsin.
 
Katılım
31 Aralık 2007
Mesajlar
17,486
Reaksiyon puanı
189
Puanları
243
yapıya müdahale eden karakterleri bir karakter filtresinden geçirerek farklı biçimde kaydedip okurken de filtre'yi tersine mantık ile okuyarak veriyi ekrana yansıtabilirsiniz...
 

erayyynn

Doçent
Katılım
25 Haziran 2009
Mesajlar
605
Reaksiyon puanı
3
Puanları
0
İlgilendiğiniz için çok teşekkürler..
Fakat kodda tam olarak neyi değiştireceğimi belirtirseniz sevinirim :)
Yeni sayılırım.. Çok yol denedim ama yapamadım.. Yardımlarınızı bekliyorum :)
 

annttiigs

Profesör
Katılım
7 Şubat 2007
Mesajlar
2,589
Reaksiyon puanı
24
Puanları
218
@cgrzone'nin dediği gibi.basitçe bir karakter kodu geliştirirsen; mesela {11} senin tırnak işaretin olsun. yazarken replace metodu ile tüm tırnakları {11} e çevir. sonrasında geri alırken de tersine replace yap. bu durumda unutmamalısın. Kullanıcıya gösterilecek her stringi myReplacer gibi bir metod'dan süzmelisin.

kısacası :
kayıt anında
insert into MyTable (mystring ) values ( myString.replace("'", "{11}") )

ekrana yazma anında
printer.myPrint(myString.replace("{11}", "'");

gibi basitçe halledebilirsin sorunu.
 

furkanfindik

Öğrenci
Katılım
6 Mart 2010
Mesajlar
6
Reaksiyon puanı
0
Puanları
0
("INSERT INTO not (kullanıcı,msg,tarih) Values ('" + a.Replace("'","''") + "', '" + TextBox1.Text.Replace("'","''") + "','" + Date.Now + "')", bagg) olarak değiştirirsen sorgunu çalışacaktır. Yaptığımız değişiklik ' karakteri yerine '' koyduk. Dikkat etmen gereken yer tek tırnağı çift tırnak değil, tek tırnağı iki tane tek tırnak ile değiştirdik. Böyle yaparsan veritabanına sorunsuz olarak tek tırnağı kaydedecektir. Böylece büyük bir sorun olan sql injection ı da önlersin.
 

erayyynn

Doçent
Katılım
25 Haziran 2009
Mesajlar
605
Reaksiyon puanı
3
Puanları
0
Yardım edenlere çok teşekkürler :)
@furkanfindik verdiğin sorguyla sorunu çözdüm :)
 

anamur

Asistan
Katılım
27 Haziran 2008
Mesajlar
357
Reaksiyon puanı
3
Puanları
18
Values(@" "," ",....) @ işareti işini görür ;)
 
Üst