Отсутствует таблица в БД Visual FoxPro

Я использую 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

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

Что дает? Какие-либо предложения?


person Jonathan    schedule 12.09.2011    source источник


Ответы (1)


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

create dbf Critera  (missing the "i")

а потом

select * from Criteria (has the "i")

Если нет... для вашей строки подключения, вы просто подключаетесь к ПУТИ, в которой будут расположены файлы .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 считается, что «эта команда продолжается на следующей строке», и должно было быть выдано исключение, если она не смогла бы ее обработать.

person DRapp    schedule 13.09.2011