我正在使用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
没有错误,没有按预期返回结果。
是什么给出的?有什么建议吗?
答案 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中被认为是“这个命令在下一行继续”,并且应该抛出异常,因为它无法处理它。