如何在c#中执行需要对表进行独占访问的foxpro 2.6(DOS)命令

本文关键字:foxpro 访问 命令 DOS 执行 | 更新日期: 2023-09-27 18:04:45

这是我的代码,我想删除命名为SMS_DATA的FoxPro表的所有数据,我尝试了ZAP命令,以及也尝试了 delete all PACK命令与USE -table-name,但它不起作用,并给出了例外:

System.Data.OleDb.OleDbException (0x80004005): File must be opened exclusively.

这是我的代码:

     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);
                       }

如何在c#中执行需要对表进行独占访问的foxpro 2.6(DOS)命令

你的第一行应该是:

EXECSCRIPT([USE SMS_DATA EXCLUSIVE && Open SMS_DATA table]);

为了安全起见,我还将接下来的两行改为:

string DELETE="EXECSCRIPT([DELETE ALL IN SMS_DATA])";       
string PACK="EXECSCRIPT([PACK IN SMS_DATA])";