Запрос файла DBF с System.data.odbc.odbcconnection, когда путь к файлу / имя имеет место

StackOverflow https://stackoverflow.com/questions/3151073

  •  01-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь запрашивать файл DBF с помощью System.data.odbc.odbccondection. Он работает правильно, когда файл не имеет в нем пространства, но я получаю следующую ошибку «Ошибка открытия DBF файл: ошибка [42000] [Microsoft] [DBASE DBASE] [DBASE] [ODBC DBASE] Синтаксис ошибки в разделе« Если путь файла или Имя имеет место в нем.

Я использую следующий код:

oconn = новая система .data.odbc.odbcconnection (); Oconn.ConnectionStringString = "Driver = {драйвер Microsoft DBASE (* .dbf)}; sourcetype = dbf; sourcedb = na; Exclusive = no; collate = machine; null = no; удален = нет; backgroundfetch = no;";

ocmd.commandtext = "Выберите * от C: Test 2 12345678.dbf";

Текст команды не жестко закодирован. Я только что включил это так для простоты. Приложение является установкой, чтобы позволить пользователю выбрать файл DBF и его отображать его. У меня нет контроля, где пользователи хранят файлы DBF и предпочли бы, чтобы они не помнили, чтобы не ставить пробелы в имени / путь к файлу.

Как я могу избежать места в файле имени / путь?

Это было полезно?

Решение

Вероятно, это проблема, связанная с «форматом имени файла MS-DOS 8.3». Вы можете просмотреть следующие ссылки:

Другие советы

Я также бегал в этот вопрос. Это был мой # 1 попал в Google, поэтому я не очень надеюсь. Тем не менее, мы смогли получить свой код работать, изменив текущий каталог в проблемный каталог, а затем исключая путь в CommandText:

//Save the current directory
string currentDir = System.IO.Directory.GetCurrentDirectory();

//Select the path that we need to use
System.IO.Directory.SetCurrentDirectory("C:\\test 2\\");

//Now the path isn't required:
oCmd.CommandText = @"SELECT * FROM 12345678.dbf";

//Restore the old directory
System.IO.Directory.SetCurrentDirectory(currentDir);

Вы все еще ограничены в том, что может быть название файла (без пробелов и <= 8 CHAR, я думаю), но это то, с чем я могу работать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top