一种(不是很好,但总比没有好)的方法是清理 txtBox.Text 的内容,然后使用清理后的结果。
sqlsource.SelectCommand = "SELECT x from x where this_id LIKE '%" + SanitizedString(txtBox.Text) + "%';";
// ... codes ...
private string SanitizedString(string given)
{
string sanitized = given.Replace(";", string.Empty);
sanitized = sanitized.Replace("--", string.Empty);
// ... ad nauseum, conditions galore ...
return sanitized;
}
...但是,这是非常劳动密集型的。
要做的事情是以存储过程的形式使用绑定变量。据我所知,您可以绑定您的过滤器 txtbox.Text 条件,然后将其传入。
数据库上的查询很简单,例如:
SELECT x from X where this_id LIKE :filter ORDER BY x ASC
要调用它,您需要研究 MSSQL 如何与存储过程进行通信。
绑定变量使您的代码完全防 SQL 注入。 爱绑定变量,因为他们会爱你。而邪恶的 hax0rs 不会。