2012-04-30 18 views
0

问题:连载数据表二进制文件,然后添加新行到文件

我需要一个数据表保存到一个二进制文件,二进制格式,为了使这一进程快,因为数据表最多可包含一千万行。所以,XML是不利的,因为它会使文件变大,并且过程会很慢。 我设法将数据表保存到一个二进制文件,并且它工作正常,但是当我尝试向现有二进制文件添加新行时(使用具有相同模式但不同行数据的数据表)时,它会复制数据表的架构到二进制文件,使其非常大。

需要什么样的:

我需要能够只行添加到现有的二进制文件。如果您尝试下面的代码并运行它3次,它应该创建二进制文件,然后为每次保存添加5行,即保存15行。但这种情况并非如此。它会保存表格模式& 5行(二进制格式)>>>然后表格模式& 5行(二进制格式)>>>表格模式& 5行(二进制格式)。表格模式本身非常大,并且消耗很多文件大小。我只需要保存一次文件模式,然后保存15行。

我的代码: 功能GetTable()作为数据表

Dim table As New DataTable ' Create new DataTable instance. 

table.Columns.Add("Dosage", GetType(Integer)) ' Create four typed columns in the DataTable. 
table.Columns.Add("Drug", GetType(String)) 
table.Columns.Add("Patient", GetType(String)) 
table.Columns.Add("Date", GetType(DateTime)) 
' Add five rows with those columns filled in the DataTable. 
table.Rows.Add(25, "Indocin", "David", DateTime.Now) 
table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now) 
table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now) 
table.Rows.Add(21, "Combivent", "Janet", DateTime.Now) 
table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now) 
Return table 
End Function 

Private Sub SaveDataTabletoBinary() 
dt = GetTable() 

Dim format As New Binary.BinaryFormatter 
Dim ds As New DataSet 
' ds = DataGridView1.DataSource 

Using fs As New FileStream("c:\sar1.txt", FileMode.Append) 
dt.RemotingFormat = SerializationFormat.Binary 

'Other option is SerilaizationFormat.XML 
format.Serialize(fs, ds) 
End Using 
End Sub 

的想法。 ?

感谢

回答

0

尝试使用其中有.bin

扩展名的二进制文件
相关问题