如何使用OLEDB连接从.NET代码在VisualFoxPro中创建临时表?
答案 0 :(得分:1)
一种可能的方法(至少在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
祝你好运
答案 1 :(得分:0)
你到底是什么意思?&#34; temp&#34;表?您是否需要它在磁盘上保留,或者在您保持打开状态(存在或不存在磁盘持久性且对连接唯一)时保持在磁盘上是否存在?
如果要创建一个在磁盘上保留的表和\或其他用户可以访问的表,那么只需使用&#34;创建表...(...)&#34; 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();
}
其他类型的&#34; temp&#34; table被称为&#34; cursor&#34;在VFP世界中,根据您的确切需求,可能会以不同的方式创建,或者可能根本不需要(后者通常是这种情况)。我不知道直接创造这种方式的方法。您可以将其创建为派生游标,或者通常需要在数据库中使用&#34; SetResultSet()&#34;呼叫。
另一种方式,你可以&#34;排序&#34;使用VFP命令就像使用VFP一样,是ExecScript()函数,需要执行一堆代码。但是,如果从VFP内部调用,则有许多命令和函数可以与ExecScript()一起使用,但VFPOLEDB不支持它们。不幸的是,没有正确的不受支持和支持的命令\功能列表(有些列为实际上没有支持,有些列为不支持但实际上支持 - 如果你有足够的话,它更多的是试错和耐心)。
如果您可以详细说明您要做的事情,那么答案可能会更简单(或更难)。