0

我使用此论坛中的代码创建了一种将 DataSet 对象导出到 MDB 文件的方法: http ://www.xtremedotnettalk.com/showthread.php?t=93599

我的数据集只包含一个表,5 列,大约 100k 行。生成的 MDB 文件大小为 50 MB。我想知道它是否太大异常?

如果您有更好的方法将 DataSet 导出到 MDB 文件以减小文件大小,请告诉我。

4

2 回答 2

1

50MB * 1024KB/MB * 1024byte/KB = 52428800 字节。

52428800 / 100000 行 / 5 列/行 = 每列约 105 个字节。

根据您定义列的方式,这可能并不过分……尤其是当我们尚未考虑任何索引、页面大小和填充等时。

于 2013-10-09T03:18:42.697 回答
0

我找到了一种以编程方式修复和压缩 MDB 文件的方法:

    private static void CompactAndRepairMDB(string FilePath)
    {
        string FileName      = Path.GetFileNameWithoutExtension(FilePath);
        string FileName_Temp = Path.GetFileNameWithoutExtension(FilePath) + "_CompactAndRepair";

        string FilePath_Temp = FilePath.Replace(FileName, FileName_Temp);

        JRO.JetEngine oJetEngine = new JRO.JetEngine();

        string SourceConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                      "Data Source=" + FilePath + ";" + 
                      "Jet OLEDB:Engine Type=5;";

        string DestConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                    "Data Source=" + FilePath_Temp +";" +
                    "Jet OLEDB:Engine Type=5;";

        //Compact the database (makes a new copy)
        oJetEngine.CompactDatabase(SourceConn, DestConn);

        //Overrite the old new
        File.Copy(FilePath_Temp, FilePath, true);

        //Delete Temp File
        File.Delete(FilePath_Temp);
    }
于 2013-10-09T03:41:08.763 回答