2009-03-11 21 views
13

Bir metin alanım ve onun sql tablomun kırılması. Bu alandaki tüm karakterlerden nasıl kurtulurum? Ben Bunu aşağıdaki gibi bir parametre kullanılarak yapılmalıdır C#C# sqlite ile SQL kaçış #

cevap

31

yılında http://sqlite.phxsoftware.com/ ile sqlite kullanıyorum:

SQLiteCommand cmd = _connection.CreateCommand(); 
cmd.CommandType = CommandType.Text; 
cmd.CommandText = "SELECT * FROM MyTable WHERE MyColumn = @parameter"; 
cmd.Parameters.Add(new SQLiteParameter("@parameter", textfield)); 
SQLiteDataReader reader = cmd.ExecuteReader(); 

tüm giriş değerlerini kaçmak ve SQL enjeksiyon saldırılarından korunmanıza yardımcı olacak bir parametreleştirilen SQL kullanma.

+0

? I cmd.CommandText = yazabilirim" ... @parameter ... @parameter "; cmd.Parameters.Add (...); cmd.Parameters.Add (...);? –

+0

Evet, ayrıca bir dizi iletebileceğiniz bir AddRange yöntemi de olmalıdır. parametrelerinizle eşleşen paramslar –

+0

Parametreleri çağırabilirsiniz. İstediğiniz gibi birçok parametre ekleyebilir veya Parameters.AddRange parametresini kabul eder. – bstoney

0

Ayrıca (değil ") Şüphe ile tek tırnak tüm tek tırnak sınırlayıcılarınıda yerini alabilir yerleştirin. I birden params varsa ben ne yapayım

sql = sql.Replace("'","''"); 
+2

Bu Yöntem övgüyle, tuhaf hatalara yol açabilir. – Palani

+0

Mutlaka olmaz. SQL'inizi oluşturup Değiştir'i son adımı yaparsanız, her şey iyi olmalıdır. Yıllarca sorunsuz çalıştı. Uygulama Bloklarını şimdi kullanıyorum, bu yüzden önemli değil. :) – klkitchens

+0

Bu yöntem, bir metin dosyasına ya da böyle bir döküm dökmek için bir SQL güvenli oluşturmanız gerekiyorsa iyidir. –