Zine.net online

Witaj na Zine.net online Zaloguj się | Rejestracja | Pomoc
w Szukaj

dev2dev

Problem z aparatem Microsoft.Jet.OLEDB.4.0

Aparat ten już mnie kiedyś zaskoczył negatywnie gdy okazało się przy odczycie danych z pliku EXCEL, że jeżeli w kolejnych ośmiu wierszach nie pojawią się dane w danej kolumnie to aparat ten pomija wartości w tej kolumnie w kolejnych wierszach uznając, że nie jest w stanie określić typu danych jakie może przypisać dla tej kolumny. Tym razem okazało się coś innego. Próbuje się dostać do pliku DBF poprzez połączenie OleDbConnection w aplikacji .NET.Oto fragment kodu tej aplikacji:
 
using (OleDbConnection connection = new OleDbConnection())
{
   connection..ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\jakis_katalog;Extended Properties=dBASE IV;";
   connection.Open();

   DataTable tables = connection.GetSchema("TABLES");
   foreach (DataRow item in tables.Rows)
   {
         DataTable table = connection.GetSchema("TABLES", new string[] { null, null, item["TABLE_NAME"].ToString(), null });

         if (table.Rows.Count > 0)
         {
              OleDbCommand oleCommand = new OleDbCommand();
              oleCommand.CommandText = "DELETE FROM " + item["TABLE_NAME"].ToString();
              oleCommand.CommandType = CommandType.Text;
              oleCommand.Connection = connection;
              oleCommand.ExecuteNonQuery();
          }
   }

   connection.Close();
}
Wydawać by się mogło, że ten kod nie ma prawa nie działać poprawnie (bez wygenerowania wyjątku). A jednak są sytuacje gdy nie działa. Wystarczy, że jakikolwiek plik DBF zwarty w katalogu zdefiniowanym w connection string do tego aparatu ma długość nazwy większą niż osiem znaków i już jest "po herbacie". Ta liczba osiem jest jakąś zaklętą liczbą tego aparatu bazy danych.
Opublikowane 19 października 2008 23:54 przez marekpow
Filed under: ,

Komentarze:

Brak komentarzy
Komentarze anonimowe wyłączone
W oparciu o Community Server (Personal Edition), Telligent Systems