我有问题。我希望这个工作,但它没有:
SqlDataSource.SelectCommand = "SELECT blah1, blah2 FROM myTable WHERE @ColumnName = @Value";
SqlDataSource.SelectParameters.Add("ColumnName", System.Data.DbType.String, "one");
SqlDataSource.SelectParameters.Add("Value", System.Data.DbType.String, "two");
它不会替换第一个参数“ColumnName”。如果我删除该参数并像这样将列名放入其中,它将起作用:
SqlDataSource.SelectCommand = "SELECT blah1, blah2 FROM myTable WHERE one = @Value";
SqlDataSource.SelectParameters.Add("Value", System.Data.DbType.String, "two");
我有一个用户界面,用户可以在其中选择要搜索的数据库列名。我想保护自己免受任何形式的注射攻击。有什么想法可以让我完成这项工作吗?
我读到的一个想法是使用查找表从索引中获取索引DropDownList
并以这种方式提取列名。我可以完成这项工作,但如果可能的话,我宁愿让参数化工作,因为这对我来说似乎更自然。
提前感谢您提供的任何帮助。