【发布时间】:2011-01-04 19:39:11
【问题描述】:
我们正在将经典 ASP 网站转换为 ASP.NET 网站。一项功能是以 CSV 格式上传数据的“模板”,以便导入数据库。那里有几种不同的记录类型(第一个字段总是标识数据的类型)。
任务是将 CSV 放入 DataTable 以便对其进行验证(新项目是拥有更好的验证规则)
代码看起来很简单 - 淡化(取出 cmets、Try/Catch 等)如下:
Dim da As New System.Data.OleDb.OleDbDataAdapter
Dim cn As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDirectory & ";" & "Extended Properties=""Text;HDR=No;FMT=Delimited;""")
Dim cd As New System.Data.OleDb.OleDbCommand("SELECT * FROM " & strCSVFilename, cn)
cn.Open()
da.SelectCommand = cd
da.Fill(dtData)
DataTable (dtData) 已填充,但仅从 CSV 文件的第二行开始,尽管“HDR=No”在连接字符串中。
我在这里错过了什么?
【问题讨论】:
-
如下所示,如果 strCSVFilename 中有路径,无论出于何种原因,它将第一行视为标题行。如果它只有文件名(并且连接字符串会告诉 ADO 使用什么路径),第一行将被导入数据表中。
-
对我不起作用。数据源有路径,SELECT 语句只有文件名。 HDR=NO 但第一行的字段正在成为列标题。