BIN文件對象數據庫,直接存儲對象作數據庫,小型項目用它準沒錯

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.IO;
 6 using System.Runtime.Serialization.Formatters.Binary;
 7 
 8 namespace WpfApplication1
 9 {
10    public  static class FileDateDo
11     {
12 
13 
14         public static T getFileDate<T>(string filePath) where T : new()
15         {
16             if (!File.Exists(filePath))
17             {
18                 return default(T);
19             }
20             T t = new T(); 
21             FileStream fs = new FileStream(filePath, FileMode.Open); 
22             if (fs.Length < 1) { return t; }
23             BinaryFormatter bf = new BinaryFormatter();
24             t = (T)(bf.Deserialize(fs));
25             fs.Close();
26             return t;
27 
28 
29         } 
30         public static void Save<T>(string filePath, List<T> t)
31         {
32              
33             try
34             {
35                 using (FileStream fss = new FileStream(filePath, FileMode.Create))
36                 {
37                     BinaryFormatter bs = new BinaryFormatter();
38                     bs.Serialize(fss, t);
39                 }
40             }
41             catch (Exception)
42             {
43 
44                 throw;
45             }
46         }
47  
48 
49       
50          
51     }
52 }
View Code

 

 

缺點sql

1.若是有10w條記錄,修改一條你就須要重寫這個BIN文件,開銷至關大,另外若是隻是查詢一條記錄你也須要從新將這個BIN全部內容加載到內存創建對應的對象。


2.Access, SQL Server能夠簡單理解作了2件事情,第一他提供了統一界面,任何語言任何進程經過sql均可以與之通信,獲取數據。ide

第二件事情他提供了索引機制,經過索引不須要加載全部數據到內存就能根據sql定位查詢結果。spa

3.修改對象結構會形成數據沒法讀取,須要保留原對象與新對象,將原數據讀取至原對象,而後經過程序轉換到新對象,將新對象從新保存在一個新文件(BIN)裏面,最後原對象文件和原數據文件(BIN)刪除。3d

4.實時保存,不建議實時保存,等全部處理完畢延遲保存數據最好。

可是若是你的應用很小,內存足夠hold住數據,且不須要實時保存,那麼此方法是可行的,並且能夠說比用access都好,呵呵。

具體問題具體分析,合適就好。code

相關文章
相關標籤/搜索