【发布时间】:2014-01-15 12:20:42
【问题描述】:
我已经看到了很多解决方案,我不知道该遵循哪一个。 我认为我所拥有的会起作用,但经过进一步测试,我发现这不是真的。 我正在使用 VB 从给定的文件目录中提取 MS Excel 工作表,提取数据,然后插入到 SQL 数据表中。
这是我需要帮助的部分:
If saRet(linex, 11) <> "" Then
IntDesc = (saRet(linex, 11).ToString.Replace("'", "''"))
Echo("Internal description: " & IntDesc)
Else
Echo("No internal description given")
IntDesc = ""
End If
在 SQL Server Studio 中篡改了一些测试插入语句后,我认为将 ' 替换为 '' 有效。很遗憾,没有。
下面是一个导致插入失败的字符串示例:
Set-up and Config of New Button on BP and UDF's for Despatch Process
在我的字符串操作之后,这里是插入语句(我已经删除了一些我的公司可能不想分享的数据,反正它是微不足道的):
NSERT INTO <tablename> VALUES ('2013-12-10', '12', '2013', 'AAAA', 'AAAA', '10668', 'JBT', 'Project - Config & System Build', 'CSB', '2', 'Y', 'N', '0', 'Set-up and Config of New Button on BP and UDF's for Despatch Process', 'Set-up and Config of New Button on BP and UDF''s for Despatch Process', '0', 'NULL')
非常感谢您的帮助! 谢谢。
【问题讨论】:
-
SQL 标记不适用于 SQL Server。这个问题与 VB6、Excel 或 VB.Net 无关。标记很差。
-
@Bob77 考虑到提供的例子是VB代码,有些人用VB写类似的EXCEL提取代码可能有同样的问题,我觉得标签是合适的。恭喜您在评论上浪费了我们俩的时间。
-
我已经为您修复了标签,以使其适合您的要求以及您的问题中实际涉及的技术。请不要在标签后面添加“excel”或“vb6”。
标签: sql vb.net sql-injection