【发布时间】:2018-01-23 10:08:07
【问题描述】:
如何使用 OLEDB 连接从 .NET 代码在 VisualFoxPro 中创建临时表?
【问题讨论】:
-
不清楚你想达到什么目的,为什么要从临时表开始使用VFP?
标签: .net visual-foxpro
如何使用 OLEDB 连接从 .NET 代码在 VisualFoxPro 中创建临时表?
【问题讨论】:
标签: .net visual-foxpro
一种可能的方法(至少在 VB.Net 中)是创建一个 VFP 对象(假设您在工作站/服务器上安装了 VFP),然后使用 VFP 'Native' 命令。
例如:
Dim oVFP As Object
oVFP = CreateObject("VisualFoxPro.Application")
oVFP.DoCmd( <VFP Command1 goes here> )
oVFP.DoCmd( <VFP Command2 goes here> )
oVFP.DoCmd( <VFP Command3 goes here> )
' --- when done close VFP Object ---
oVFP.Quit()
oVFP = Nothing
祝你好运
【讨论】:
“临时”表到底是什么意思?即使在您关闭它之后,您是否需要它在磁盘上持续存在,或者在您保持它打开时仍然存在(无论是否存在磁盘持久性和唯一的连接)?
如果您想创建一个持久保存在磁盘上并且\或可供其他用户访问的表,那么您只需使用“create table ... (...)” SQL 调用即可。例如:
using (var con = new OleDbConnection(@"Provider=VFPOLEDB;Data Source=c:\temp"))
{
var sql = @"create table myTemp free (
id int,
dummy char(10),
when datetime
)";
con.Open();
new OleDbCommand(sql,con).ExecuteNonQuery();
con.Close();
}
其他类型的“临时”表在 VFP 世界中称为“光标”,根据您的具体需求,可能会以不同方式创建或根本不需要(通常是后者)。我真的不知道创建它的直接方法。您可以将其创建为派生游标,或者通常需要通过“SetResultSet()”调用在数据库中使用存储过程。
另一种可以“有点”像使用 VFP 一样使用 VFP 命令的方法是使用 ExecScript() 函数执行一堆代码。但是,如果从 VFP 中调用,有大量的命令和函数可以与 ExecScript() 一起使用,但 VFPOLEDB 不支持它们。不幸的是,没有正确的不支持和支持的命令\功能列表(有些被列为支持,而实际上不支持,有些被列为不支持,但实际上支持——如果你有足够的时间,这更多的是反复试验和耐心)。
如果您可以详细说明您正在尝试做什么,那么答案可能会更简单(或更难)。
【讨论】: