C # Открыть файл DBF

У меня проблема с открытием файла 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 - он содержит конфиденциальные данные.

7
задан Sam 2 September 2014 в 18:48
поделиться