Visual FoxPro DB中缺少表

时间:2011-09-12 22:43:39

标签: oledb visual-foxpro

我正在使用VFPOLEDB连接到VFP数据库(dbf文件的目录)。

连接后,我使用以下方法手动创建表:

create dbf critera(field_name c(30))

此时,我验证在数据库目录中创建了一个新的dbf文件。然后我尝试查询新表,它应该不返回任何行。

select * from criteria

我收到以下错误:

File "criteria.dbf" does not exit. 

奇怪,是吗?

所以我手动删除了DBF文件(VFPOLEDB不支持drop),然后运行以下查询。

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

没有错误,没有按预期返回结果。

是什么给出的?有什么建议吗?

1 个答案:

答案 0 :(得分:1)

首先,(可能是一个类型o),你有

create dbf Critera  (missing the "i")

然后

select * from Criteria (has the "i")

如果不是......对于您的连接字符串,您只是连接到.dbf文件所在的PATH,还是显式连接到路径和数据库。

如果只是一条路径

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”。您仍然可以通过OleDbCommand的ExecuteNonQuery()

运行ERASE“Criteria.dbf”来删除文件

至于最后一个,VFP没有使用“;”作为像其他SQL引擎这样的语句之间的中断,您可以一个接一个地发送一系列查询。 “;”在VFP中被认为是“这个命令在下一行继续”,并且应该抛出异常,因为它无法处理它。