BIN文件对象数据库,直接存储对象做数据库,小型项目用它准没错
2015-05-12 23:29
253 查看
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace WpfApplication1 { public static class FileDateDo { public static T getFileDate<T>(string filePath) where T : new() { if (!File.Exists(filePath)) { return default(T); } T t = new T(); FileStream fs = new FileStream(filePath, FileMode.Open); if (fs.Length < 1) { return t; } BinaryFormatter bf = new BinaryFormatter(); t = (T)(bf.Deserialize(fs)); fs.Close(); return t; } public static void Save<T>(string filePath, List<T> t) { try { using (FileStream fss = new FileStream(filePath, FileMode.Create)) { BinaryFormatter bs = new BinaryFormatter(); bs.Serialize(fss, t); } } catch (Exception) { throw; } } } }
View Code
缺点
1.如果有10w条记录,修改一条你就需要重写这个BIN文件,开销相当大,另外如果只是查询一条记录你也需要重新将这个BIN所有内容加载到内存建立对应的对象。
2.Access, SQL Server可以简单理解做了2件事情,第一他提供了统一界面,任何语言任何进程通过sql都可以与之通讯,获取数据。
第二件事情他提供了索引机制,通过索引不需要加载所有数据到内存就能根据sql定位查询结果。
3.修改对象结构会造成数据无法读取,需要保留原对象与新对象,将原数据读取至原对象,然后通过程序转换到新对象,将新对象重新保存在一个新文件(BIN)里面,最后原对象文件和原数据文件(BIN)删除。
4.实时保存,不建议实时保存,等所有处理完毕延迟保存数据最好。
但是如果你的应用很小,内存足够hold住数据,且不需要实时保存,那么此方法是可行的,而且可以说比用access都好,呵呵。
具体问题具体分析,合适就好。
相关文章推荐
- 序列化List<T>对象,并存储为本地bin文件
- android eclipse 将项目中assets文件夹下的数据库文件存储到data/data/包名/databases下
- Oracle数据库对于大对象二进制文件的存储及下载
- 分布式文件存储的数据库开源项目MongoDB
- 分布式文件存储的数据库开源项目MongoDB
- java对象序列化并存储到文件和数据库
- 分布式文件存储的数据库开源项目MongoDB
- 一个WEB项目安装包,自动配置数据库,config文件和虚拟目录。。(原创)
- Microsoft Jet 数据库引擎找不到对象(上传.zip的文件,先解压后获取数据)
- 实验:Oracle直接拷贝物理存储文件迁移
- Myeclipse 工程项目上有红叉,但文件没错
- 单文件小型数据库的选择
- 关于 rails ActiveRecord 属性 以及 foreign_key 不直接用数据库项目 时的一些讨论
- 使用存储过程(PL/SQL)向数据库中存储BLOB对象
- Asp.Net大型项目实践(4)-用NHibernate保存和查询我们的业务领域对象之实现基本的数据库访问(附源码)
- 最近的项目,也许是产品吧,用的客户好几个,数据库也经常更新,所以就写了个比较数据库表和字段有不同的存储过程
- 在项目中根据配置文件路径生成File对象的方法
- 数据库与文件进行数据存储时的区别
- SDS趋势之二:对象存储将替代文件存储
- 解决Flex项目下bin-debug文件在其他电脑打开不显示的问题