Отсутствует таблица в БД Visual FoxPro - PullRequest
0 голосов
/ 13 сентября 2011

Я использую VFPOLEDB для подключения к базе данных VFP (каталог файлов dbf).

После подключения я вручную создаю таблицу, используя:

create dbf critera(field_name c(30))

На этом этапе я проверяю, создан ли новый файл dbf в каталоге базы данных. Затем я пытаюсь запросить новую таблицу, она не должна возвращать строк.

select * from criteria

Мне выдается следующая ошибка:

File "criteria.dbf" does not exit. 

Странно, а?

Поэтому я вручную удаляю файл DBF (VFPOLEDB не поддерживает удаление), а затем запускаю следующий запрос.

create db criteria(field_name c(30)); select * from criteria

И не получить ошибку, результаты не возвращаются, как ожидалось.

Что дает? Есть предложения?

1 Ответ

1 голос
/ 13 сентября 2011

Во-первых, (может быть тип-о), у вас было

create dbf Critera  (missing the "i")

, а затем

select * from Criteria (has the "i")

Если не так ... для вашей строки подключения, вы просто подключаетесь к PATH, в которой будут находиться файлы .dbf, или вы явно подключаетесь к пути и базе данных.

Если просто путь

string YourVFPConnectionString =
   "Provider=VFPOLEDB.1;Data Source=c:\\SomePath\\WhereDataIs\\";

Или с конкретным контейнером базы данных

string YourVFPConnectionString =
   "Provider=VFPOLEDB.1;Data Source=c:\\SomePath\\WhereDataIs\\YourDatabase.dbc";

Это может быть проще проверить, просто указав на каталог. Поставщик VFP OleDB рассмотрит путь к корню для всех запрашиваемых таблиц по сравнению с полным .dbc (контейнером базы данных), который может дать вам доступ к другим хранимым процедурам и т. Д.

OleDb не поддерживает "DROP TABLE". Вы по-прежнему можете удалить файл, запустив ERASE «Criteria.dbf» через ExecuteNonQuery ()

OleDbCommand.

Что касается последнего, VFP не использует ";" как разрыв между утверждениями, как это делают другие механизмы SQL, где вы можете отправлять серию запросов все вместе один за другим. ";" в VFP считается «эта команда продолжается на следующей строке» и должна была выдать исключение, если она не смогла бы ее обработать.

...