BIN文件对象数据库,直接存储对象做数据库,小型项目用它准没错
2024-09-27 14:23:18
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 < ) { 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;
}
} }
}
缺点
1.如果有10w条记录,修改一条你就需要重写这个BIN文件,开销相当大,另外如果只是查询一条记录你也需要重新将这个BIN所有内容加载到内存建立对应的对象。
2.Access, SQL Server可以简单理解做了2件事情,第一他提供了统一界面,任何语言任何进程通过sql都可以与之通讯,获取数据。
第二件事情他提供了索引机制,通过索引不需要加载所有数据到内存就能根据sql定位查询结果。
3.修改对象结构会造成数据无法读取,需要保留原对象与新对象,将原数据读取至原对象,然后通过程序转换到新对象,将新对象重新保存在一个新文件(BIN)里面,最后原对象文件和原数据文件(BIN)删除。
4.实时保存,不建议实时保存,等所有处理完毕延迟保存数据最好。
但是如果你的应用很小,内存足够hold住数据,且不需要实时保存,那么此方法是可行的,而且可以说比用access都好,呵呵。
具体问题具体分析,合适就好。
最新文章
- WPF 画心2.0版之元旦快乐
- Python3 函数
- linux 下的clock_gettime() 获取精确时间函数
- Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念区分
- Redis 数据结构之Keys
- java微信接口之二—获取用户组
- Qt from Linux to Windows target
- 光流算法:灰度恒常约束,LK算法,HS算法
- Java 十六进制转十进制
- stm32按键识别
- L7,too late
- [html5] 学习笔记-应用缓存与Web workers
- 原生js表单序列化----- FormData
- mysql为什么范围查询(>;,<;,between,%like,like%)之后的索引无效
- 安装linux的关键步骤
- OAuth2简易实战(三)-JWT
- Vue Document
- form转化json
- scrapy+redis去重实现增量抓取
- [转]java nio解决半包 粘包问题