2012-07-27 11 views
14

Bir veritabanından (> 10K) terimleri okumayı deniyorum ve bu terimi başka bir sorguda kullanıyorum.sql'de "alıntılanan dize düzgün şekilde sonlandırılmadı" durumuna neden olan tek tırnak kaçışından nasıl kurtulur?

alıntı dize düzgün

Ben
term.replaceAll("'", "\\'"); 

yaptım 'sonlandırıldı değil ama bu benden işi yapmak için görünmüyor: Ben Oracle aşağıdaki hatayı alıyorum. Ayrıca, bu terimler metne dönüştürüldüklerinde belgelerin belirteçleridir. Bu sorunun üstesinden gelebilecek düzenli bir ifade var mı?

tam SQL sorgusu: Ben Java kullanıyorum

String sql = "Select * from indexDB where (DocID=" + d.getDocId() + "and Term='" + term + "')"; 

. Değiştirme benim için çalışmıyor.

+1

[SQL Injection] 'da okumaya ihtiyacınız var (http://en.wikipedia.org/wiki/SQL_injection) – Oded

+3

Ayrıca, parametreli sorguların nasıl kullanılacağı hakkında ayrıntılı bilgi için http://bobby-tables.com/ sayfasına bakın. Kullandığınız dil. Bu, Oded'in atıfta bulunduğu SQL enjeksiyonundan sizi koruyacaktır. –

+1

Evet, içinden geçti ve parametreli sorgulama yaptı! Çok teşekkürler ! – Aashima

cevap

34

Bunu tekrarlayarak tek alıntı kaçabilir:

term.replaceAll("'","''"); 

Daha iyi bir seçenek parametreli sorgu olacaktır. Örnek olarak, müşteri dilinizi bilmeliyiz.

+0

Daha özel karakterler *** *** Oracle ***, sadece _character_ ** '**? – Kiquenet

İlgili konular