2013-04-29 77 views
0

有誰知道發生了什麼事?它會刪除所有記錄,但仍返回異常OleDbException:功能未實現

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 
+0

是否有可能在FoxPro表屬於一個數據庫容器(.DBC)?如果是這樣,那麼DBC中可能存在邏輯就是在強調這個問題。 – Jerry 2013-04-29 17:57:04

+0

它是免費的表 – RoyT 2013-04-29 18:25:29

回答

0

你可以嘗試以下方法:

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

這將從刪除所有記錄文件也。文件'tablename1.dbf'應該放在'C:\ foxpro \'文件夾中。否則,請在SQL命令文本中使用完整文件名。

+0

同樣的錯誤使用OLE DB提供程序的Visual FoxPro 9.0發生 – RoyT 2013-04-29 18:26:05

+0

,錯誤消失 – RoyT 2013-05-03 18:58:19

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中刪除的所有記錄。

+0

我複製你的代碼,並更改表名稱,它包所有被刪除的記錄,但仍然會返回一個異常功能未實現。 – RoyT 2013-04-29 21:25:44

+0

什麼是'程序代碼\ FujiDocumentsPrinting \ backbuttonclicked.aspx.cs:線31'? – DaveB 2013-04-30 07:18:40

+3

ZAP可以替換2行:「全部刪除」和「包」 – izokurew 2013-04-30 13:08:32

0

你在你觸發一個有嘗試捕捉,這是沒有實現的功能。今天遇到同樣的問題。