我正在开发一个 C# 程序,该程序将读取 DBF 文件并将表导入 MySQL 数据库。我能够获取所有 DBF 文件位置的目录并读取大部分 DBF 文件。问题是 17 个 DBF 文件中有 2 个会抛出 myDataAdapter.Fill(myDataSet); 异常。
这是我的代码:
private void button2_Click(object sender, EventArgs e)
{
DirectoryInfo dir = new DirectoryInfo(Regex.Replace(textBox1.Text, @"\\", @"\\"));
string strAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dir + ";Extended Properties=dBase III";
DataSet myDataSet = new DataSet();
OleDbConnection myAccessConn = null;
try
{
myAccessConn = new OleDbConnection(strAccessConn);
}
catch (Exception ex)
{
Console.WriteLine("Error: Failed to create a database connection. \n{0}", ex.Message);
return;
}
foreach (FileInfo file in dir.GetFiles())
{
MessageBox.Show(file.Name.Substring(0, file.Name.Length - 4));
string strAccessSelect = "SELECT * FROM " + file.Name.Substring(0, file.Name.Length - 4);
OleDbCommand myAccessCommand = new OleDbCommand(strAccessSelect, myAccessConn);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);
myAccessConn.Open();
myDataAdapter.Fill(myDataSet);
myAccessConn.Close();
}
MessageBox.Show("End");
}
这些是错误消息:
System.Data.dll 中出现“System.Data.OleDb.OleDbException”类型的未处理异常
附加信息:Microsoft Jet 数据库引擎找不到对象“SomeFile”。确保对象存在并且正确拼写其名称和路径名。
这是什么原因造成的?我已经打印出 dir、file.name 和 strAccessSelect,并且所有内容看起来都拼写正确。
任何帮助将不胜感激,谢谢!
- 更新 -
我检查了文件权限,每个用户都拥有完全权限。
不确定这会有多大帮助,但有时当我重命名文件(例如:SomeFile1)时,它会起作用并且我不会收到错误消息......大多数时候这不起作用。