如何在Visual Studio中读取含特殊字符的Excel列名并对接Oracle数据库
解决方案
- 问题1:OLE DB查询Excel时,包含
/、°等特殊字符的列名,必须用方括号[]包裹,否则会被识别为运算符而非列名,导致读取失败。 - 问题2:原代码的查询语句中漏选了
N°CODIGO列,错误写为CODIGO,导致后续列映射时找不到对应源列,触发“部分已设置的参数未赋值”报错。
你可以直接修改查询语句,给特殊字符列加方括号的同时设置别名,简化后续映射逻辑,避免特殊字符在后续流程中再次引发问题,修改后的核心代码如下:
' 原错误查询语句 ' Dim command As OleDbCommand = New OleDbCommand("SELECT FECHA/CONV,CODIGO,ACUERDO FROM [FILE$]", excel_con) ' 修改后的正确查询语句 Dim command As OleDbCommand = New OleDbCommand("SELECT [FECHA/CONV] AS FECHA, [N°CODIGO] AS CODIGO, ACUERDO FROM [FILE$]", excel_con)
因为查询时已经给列设置了别名,后续的列映射代码可以直接简化为:
bulkCopy.ColumnMappings.Add(New OracleBulkCopyColumnMapping("FECHA", "FECHA")) bulkCopy.ColumnMappings.Add(New OracleBulkCopyColumnMapping("CODIGO", "CODIGO")) bulkCopy.ColumnMappings.Add(New OracleBulkCopyColumnMapping("ACUERDO", "ACUERDO"))
如果你不想调整列映射代码,只需要给查询语句里的特殊字符列加上方括号即可,原映射逻辑可以保留不变。
内容的提问来源于stack exchange,提问作者Giancarlo
相关产品推荐
相关产品推荐

