如何从需要独占访问表的C#执行foxpro 2.6(DOS)命令?
这是我的代码,我想删除名为SMS_data的FoxPro表的所有数据,我尝试了ZAP命令,也尝试了delete all和PACK命令,使用USE-表名,但它不起作用,并给出了例外情况:如何从需要独占访问表的C#执行foxpro 2.6(DOS)命令?,c#,oledb,foxpro,C#,Oledb,Foxpro,这是我的代码,我想删除名为SMS_data的FoxPro表的所有数据,我尝试了ZAP命令,也尝试了delete all和PACK命令,使用USE-表名,但它不起作用,并给出了例外情况: System.Data.OleDb.OleDbException(0x80004005):文件必须以独占方式打开。 这是我的代码: string USETBL ="EXECSCRIPT([USE SMS_DATA && Open SMS_DATA table])"; stri
System.Data.OleDb.OleDbException(0x80004005):文件必须以独占方式打开。
这是我的代码:
string USETBL ="EXECSCRIPT([USE SMS_DATA && Open SMS_DATA table])";
string DELETE="EXECSCRIPT([DELETE ALL])";
string PACK="EXECSCRIPT([PACK])";
OleDbConnection con = new OleDbConnection(conStr);
try
{
OleDbCommand cmd = new OleDbCommand(USETBL, con);
OleDbCommand cmd1 = new OleDbCommand(DELETE, con);
OleDbCommand cmd2 = new OleDbCommand(PACK, con);
con.Open();
err.log("connection opened");
cmd.ExecuteNonQuery();
err.log("table in use");
cmd1.ExecuteNonQuery();
err.log("delete executed.");
cmd2.ExecuteNonQuery();
err.log("pack executed.");
con.Close();
}
catch (Exception e)
{
err.log("Exception:-" + e);
}
您的第一行应该是:
EXECSCRIPT([USE SMS_DATA EXCLUSIVE && Open SMS_DATA table]);
为了安全起见,我还将以下两行更改为:
string DELETE="EXECSCRIPT([DELETE ALL IN SMS_DATA])";
string PACK="EXECSCRIPT([PACK IN SMS_DATA])";
您的第一行应该是:
EXECSCRIPT([USE SMS_DATA EXCLUSIVE && Open SMS_DATA table]);
为了安全起见,我还将以下两行更改为:
string DELETE="EXECSCRIPT([DELETE ALL IN SMS_DATA])";
string PACK="EXECSCRIPT([PACK IN SMS_DATA])";
我现在已经用单个ZAP命令替换了DELETE和PACK命令,bcoz速度更快,我们不需要使用两个命令来删除,但是非常感谢..是的,两个都可以。ZAP考虑到表或数据库触发器不会在使用DELETE\PACK时触发,但我猜这在您的情况下不是问题。我现在用单个ZAP命令替换了DELETE和PACK命令,bcoz速度更快,我们不需要使用两个命令进行删除,但非常感谢。是的,这两个命令都可以。ZAP考虑到表或数据库触发器不会在使用DELETE\PACK时触发,但我猜这在您的情况下不是问题。