2014-09-30 55 views
0

我们有一个代码块,它将Excel文件中第一个工作表的内容读取到DataTable中。我们知道第一张表格中的数据是表格形式,所以没有问题。Excel中的CA2100安全警告OleDb选择查询

我们的开发环境:VS 12,C#。

相关的代码行如下所示:

OleDbCommand objCmdSelect = 
    new OleDbCommand("SELECT * FROM [" + sheetName + "]", objConn); 

其中变量SHEETNAME是第一片材的名称。 objConn是连接对象。

但是,由于字符串连接,该行在代码分析中给出了CA2100“查看安全漏洞的SQL查询”警告。 AFAIK,表名不能参数化。我想出的解决方案:

1)切换到微软的Excel库。但是这个比较慢(是吗?)。

2)禁止警告。实际上不需要它。

有没有更好的解决方案,或者这种情况下的最佳做法?

+0

'sheetName'可以被潜在的恶意用户输入吗?如果不是,那么只是压制警告。 – juharr 2014-09-30 14:37:32

回答

0

请确保sheetName实际上是工作表的名称,并且它已正确转义或不包含特殊字符。然后只是压制警告。

+0

谢谢你的回答。我知道这不是安全威胁。我只是想找到一种方法来克服CA2100而不是压制。 – 2014-10-01 07:30:20