0

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

    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
4

3 回答 3

0

您可以尝试以下方法:

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

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

于 2013-04-29T18:00:28.397 回答
0

我已经使用以下代码成功地完成了这种事情:

 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 中删除所有标记为已删除的记录的命令。

于 2013-04-29T19:11:05.920 回答
0

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

于 2013-06-24T05:06:57.463 回答