C# OLEDBEException:未实现函数

C# OLEDBEException:未实现函数,c#,asp.net,oledb,foxpro,oledbconnection,C#,Asp.net,Oledb,Foxpro,Oledbconnection,有人知道发生了什么吗?它确实删除了所有记录,但仍然返回异常 OleDbConnection dbConn = new OleDbConnection(@"Provider=vfpoledb;Data Source=C:\foxpro"); try { dbConn.Open(); using (OleDbCommand command = dbConn.CreateCommand()) { comm

有人知道发生了什么吗?它确实删除了所有记录,但仍然返回异常

    OleDbConnection dbConn = new OleDbConnection(@"Provider=vfpoledb;Data Source=C:\foxpro");

    try
    {
        dbConn.Open();
        using (OleDbCommand command = dbConn.CreateCommand())
        {
            command.CommandText = "execscript[('USE table in 0' + chr(13) + chr(10) + 'DELETE ALL')]";
            command.ExecuteNonQuery();       
        }            
    }
    catch (Exception ex)
    {
        Response.Write(ex.ToString());
    }
    finally
    {
        dbConn.Close();
    }
例外情况是:

System.Data.OleDb.OleDbException (0x80004005): Function is not implemented. at
System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) at
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) at 
System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) at
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) at 
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) at
System.Data.OleDb.OleDbCommand.ExecuteNonQuery() at backbuttonclicked.Page_Load(Object sender,
EventArgs e) in e:\MyProjects\programs\FujiDocumentsPrinting\backbuttonclicked.aspx.cs:line 31

您可以尝试以下操作:

command.CommandText = "DELETE FROM tablename1";
command.ExecuteNonQuery();       

这也将从文件中删除所有记录。文件“tablename1.dbf”应放在“C:\foxpro\”文件夹中。否则,请在SQL命令文本中使用完整文件名。

我已经成功地使用以下代码完成了这类工作:

 string connectionString = @"Provider=VFPOLEDB.1;Data Source=c:\foxpro"; 

    using (OleDbConnection connection = new OleDbConnection(connectionString)) 
    { 
        using (OleDbCommand scriptCommand = connection.CreateCommand()) 
        { 
            connection.Open();

            string vfpScript = @"SET EXCLUSIVE ON
                                USE table
                                DELETE ALL
                                PACK"; 

            scriptCommand.CommandType = CommandType.StoredProcedure; 
            scriptCommand.CommandText = "ExecScript"; 
            scriptCommand.Parameters.Add("myScript", OleDbType.Char).Value = vfpScript; 
            scriptCommand.ExecuteNonQuery(); 
        } 
    } 

DELETE ALL
将记录标记为已删除,但不会将其从表中删除。如果这是您想要的,则删除
PACK
命令,该命令将删除dbf中标记为已删除的所有记录。

您的一个触发器中有一个try catch,这是未实现的功能。今天遇到了同样的问题

Foxpro表是否可能属于数据库容器(.DBC)?如果是这样的话,可能是DBC中的逻辑导致了问题。我复制了您的代码并更改了表名,它确实打包了所有已删除的记录,但仍然返回一个异常函数。在
programs\fujidocumentsprint\backbuttonclicked.aspx.cs:line 31
上的代码是什么?ZAP可以替换这两行:“DELETE all”并使用Visual FoxPro 9.0的OLE DB提供程序“打包”,错误消失