使用 OleDbDataAdapter 读取 CSV 文件时出现未指定的错误
Posted
技术标签:
【中文标题】使用 OleDbDataAdapter 读取 CSV 文件时出现未指定的错误【英文标题】:Getting unspecified error while Reading CSV file using OleDbDataAdapter 【发布时间】:2015-04-15 20:31:24 【问题描述】:更新 1: 我认为 schema.ini 不正确。请参考以下问题。 文件 (dsTextFile) 只有一行数据,但记录数为零。所以这意味着它根本没有阅读。这是完全删除 FMT 或使用 Delim。如果 FMT 已修复,我仍然会收到错误消息。那么,如何创建 SCHEMA.ini 或确保 schema.ini 正确?
private bool LoadTextFile(string textFilePath, out string errorInfo)
errorInfo = String.Empty;
try
string textFileFolder = (new System.IO.FileInfo(textFilePath)).DirectoryName;
string textConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + textFileFolder + ";" +
"Extended Properties=\"text;HDR=No;FMT=Fixed\";";
OleDbConnection textConnection = new OleDbConnection(textConnectionString);
textConnection.Open();
textFilePath = (new System.IO.FileInfo(textFilePath)).Name;
string selectCommand = "select * from " + textFilePath;
OleDbCommand textOpenCommand = new OleDbCommand(selectCommand);
textOpenCommand.Connection = textConnection;
OleDbDataAdapter textDataAdapter = new OleDbDataAdapter(textOpenCommand);
Console.WriteLine("Trying to set textDataAdapter");
int rows = textDataAdapter.Fill(dsTextFile); //This is where error is coming.
Console.WriteLine("detail rows being filled");
textConnection.Close();
textConnection.Dispose();
return true;
catch (Exception ex_load_text_file)
Console.WriteLine("error in loadTextFile is " + ex_load_text_file.Message.ToString());
return false;
请在下面的行中找到错误“未指定”的上述来源。
UnSpecified 错误出现在下面一行
int rows = textDataAdapter.Fill(dsTextFile)
可能是什么问题?我检查了 c:\windows\temp 上的用户权限,但没有成功。
这是一个控制台应用程序,我什至尝试在 app.config 中添加以下代码,但还没有成功。
<system.web>
<identity imperonate = "false"/> </system.web>
这是一个旧版应用程序,但需要在 windows server 2012 安装程序上运行。
【问题讨论】:
【参考方案1】:您在连接字符串上使用了 FMT=Fixed,如果您没有使用 schema.ini,请将其更改为 FMT=Delimited 即可。
即:
string textConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + textFileFolder + ";" +
"Extended Properties=\"text;HDR=No;FMT=Delimited\";";
【讨论】:
感谢您的意见。但我正在阅读的输入文件是固定长度的,没有分隔。这里重要吗? 我想你使用的是 schema.ini 文件呢? 是的,我正在使用 schema.ini 文件。 任何输入?如果我将 FMT 更改为分隔符,我不会收到原始帖子中提到的错误,但是在进一步解析数据时出现错误。 我认为 schema.ini 现在不正确。文件 (dsTextFile) 只有一行数据,但记录数为零。所以这意味着它根本没有阅读。这是完全删除 FMT 或使用 Delim。如果 FMT 已修复,我仍然会收到错误消息。那么,如何创建 schema.ini 或确保 schema.ini 正确?以上是关于使用 OleDbDataAdapter 读取 CSV 文件时出现未指定的错误的主要内容,如果未能解决你的问题,请参考以下文章
OleDbDataAdapter 忽略 Excel 单元格中的数据
使用 Jet 的 OleDbDataAdapter 数据类型不匹配
如何将准备好的语句与 OleDbDataAdapter 一起使用?
使用 vb.net、oledbdataadapter 更新数据库时出现问题