在查询 1 和查询 2 中,文本框中的文本被插入到数据库中。这里的参数化查询有什么意义?
将
txtTagNumber
作为查询参数传递SqlCommand cmd = new SqlCommand("INSERT INTO dbo.Cars " +"VALUES(@TagNbr);" , conn); cmd.Parameters.Add("@TagNbr", SqlDbType.Int); cmd.Parameters["@TagNbr"].Value = txtTagNumber.Text;
在构造查询之前将
txtTagNumber
转换为整数int tagnumber = txtTagNumber.Text.ToInt16(); /* EDITED */ INSERT into Cars values(tagnumber.Text); /* then is it the same? */
另外,这里我会使用正则表达式验证来阻止非法字符的插入。
最佳答案
参数化查询会在运行 SQL 查询之前正确替换参数。它完全消除了“脏”输入改变查询含义的可能性。也就是说,如果输入包含 SQL,则它不能成为执行内容的一部分,因为 SQL 永远不会注入(inject)结果语句。
关于c# - 参数化查询如何帮助防止 SQL 注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5468425/