我正在使用OleDbCommand截斷DBF文件。它適用於大多數文件,但如果文件大小是例如400 MB我收到「未指定的錯誤」。我讀的地方,一個DBF文件的大小限制爲2 GB,所以我希望有一種方法具有文件大工作...截斷大型dbf時出現未指定的錯誤
System.Data.OleDb.OleDbException: Unspecified error
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 OleDbTruncateTest.Program.Main(String[] args) in C:\Users\henjoh\Visual Studio 2008\Projects\OleDbTruncateTest\OleDbTruncateTest\Program.cs:line 22
下面是操作的基本代碼:
using System;
using System.Data.OleDb;
using System.IO;
namespace OleDbTruncateTest
{
class Program
{
static void Main(string[] args)
{
try
{
string file = @"C:\Temp\largefile.DBF";
string pathName = Path.GetDirectoryName(file);
string fileName = Path.GetFileName(file);
using (OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + pathName + "; Extended Properties=dBase III"))
{
connection.Open();
using (OleDbCommand comm = new OleDbCommand("DELETE FROM " + fileName, connection))
{
comm.ExecuteNonQuery();
}
}
Console.WriteLine("Done");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.WriteLine("ENTER to exit...");
Console.ReadLine();
}
}
}
有關如何能夠截斷大型dbf文件的任何想法?
感謝VFP OleDb Provider提示!它解決了截斷大型dbf文件的問題。不幸的是,它和OleDb Provider之間有太多其他的語法差異,只是爲了替換後者,所以我最終只使用VFP OleDb Provider來實現'delete from'命令。但它有效,所以我很高興! ;-) – Henrik 2012-04-17 05:58:33
VFP OleDb Provider與此解決方案一起出現!我試圖達到完全相同的目的,非常感謝你。 – reno812 2013-04-17 15:17:23