[英]C# DBF file error System.Data.OleDb.OleDbException
我正在研究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)時它將起作用,並且我不會收到錯誤消息……在大多數情況下,它將不起作用。
我會嘗試使用Path.GetFileNameWithoutExtension以確保文件名正確
string strAccessSelect = "SELECT * FROM " + Path.GetFileNameWithoutExtension(file.Name);
OleDbCommand myAccessCommand = new OleDbCommand(strAccessSelect, myAccessConn);
如果這不起作用,則唯一可能的原因是文件被其他進程鎖定或權限問題
問題是strAccessConn。 我必須使用以下代碼:
if ((file.Name.Substring(0, file.Name.Length - 4) == "SomeFile1") || (file.Name.Substring(0, file.Name.Length - 4) == "SomeFile2"))
{
strAccessConn = @"Provider=vfpoledb;Data Source=" + dir + ";Collating Sequence=machine;";
}
else
{
strAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dir + ";Extended Properties=dBase IV";
}
每個文件需要不同的連接字符串
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.