Public Sub PopulateUsersByName (name As String) 'Here,the parameter 'name' is unsantized,coming straight from the form Dim query As String = "" query += vbNewLine + " SELECT Id,FirstName,LastName FROM dbo.[Users]" query += vbNewLine + " WHERE FirstName LIKE '" + REPLACE(name,"'","''") + "'" query += vbNewLine + " OR LastName LIKE '" + REPLACE(name,"''") + "'" 'Execute sqlCommand with above query and no parameters 'Then do some other stuff END Sub
我已经解释过,一般来说,在尝试执行上述操作时,不应该使用字符串连接.最佳实践是使用SP或带参数的sqlClient.sqlCommand.
他的逻辑是:通过用两个单引号替换所有单引号(并在字符串的开头和结尾添加额外的单引号)来清理任何sql varchar(xxx).
我无法提供一个用户可以输入的东西的例子 – 我希望我能找到比“更有说服力的东西”但是,作为一般校长,你应该避免这个 – 你知道……因为. ..好吧,不要和我争辩 – 我是老板,我的愿望就是你的命令.“
注意:代码将始终连接到我们的Microsoft sql Server.但我可以想象它无法清理其他sql实现的输入.
更新:
解决方法
select SELECT Id,LastName FROM dbo.[Users] from TBL_EMPLOYEES where FirstName like '%_%' or LastName like '%_%'
无论它是否失败,他的代码都很糟糕……公平地说这个只是一个单行,但除此之外的任何东西,包括复杂的sql语句都难以维护和调试..无论如何,使用Sps让他习惯使用它们并允许他利用T-sql的灵活性和强大功能……大声笑,我很想想我编写的一些sql在代码中会是什么样子……
你知道,我总是遇到这样的代码(而且情况更糟)……只是因为它可能会工作一段时间并不意味着它是正确的方法……如果你的实习生没有听取经验,他永远不会成为一个好的开发人员,这是一个可悲的事实
我曾经减少了一个初级开发人员尝试导入CSV文件(5000万行),就像你的实习生一样,从她的300行代码(从来没有工作)到只有一行LINQ将其转换为XML(我们不能使用批量插入或bcp)和花哨的SP …是防弹,工作完成….
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。