У меня проблема с открытием файла DBF - мне нужно открыть его, прочитать все и обработать. Я пробовал несколько решений (ODBC / OLEDB), несколько строк подключения, но пока ничего не получалось.
Проблема в том, что когда я выполняю команду SQL, чтобы получить все из файла, ничего не возвращается - никаких строк. Что еще более странно, содержимое открываемого файла DBF удаляется.
Смотрите код, который я имею:
public override bool OpenFile(string fileName, string subFileName = "")
{
OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Path.GetDirectoryName(fileName) + ";Extended Properties=dBASE IV;User ID=;Password=;");
try
{
if (con.State == ConnectionState.Closed) { con.Open(); }
OleDbDataAdapter da = new OleDbDataAdapter("select * from " + Path.GetFileName(fileName), con);
DataSet ds = new DataSet();
da.Fill(ds);
con.Close();
int i = ds.Tables[0].Rows.Count;
return true;
}
catch
{
return false;
}
}
Я отлаживал код и смотрел, как файл открывается в проводнике Windows. Когда он достиг этой линии:
da.Fill(ds);
размер файла уменьшился до нескольких байтов (от сотен килобайт).
Моей следующей мыслью было сделать файл DBF доступным только для чтения. Однако это вызывает «неожиданное исключение из внешнего драйвера».
Так что мой вопрос - какого черта? Я уверен, что файл не поврежден, это прямой экспорт из некоторой БД. (Нет, у меня нет доступа к этой БД). Я также могу открыть этот файл в MS Office без проблем.
Я не могу поделиться файлом DBF - он содержит конфиденциальные данные.