浅谈数据持久化
PS:一些小小的见解,不做之处,还望朋友们多多指导。
数据持久化值得是数据存储方式,在.net中可以利用session、cookie对象保存用户登录状态,application对象配置应用程序。
这篇文章主要讲解数据的本地存储方案。
- DataSet类操作讲解
- 以xml文件保存数据
- 基于SQLite轻量级数据库保存数据
- 基于access数据库保存数据
- 基于SQLServer数据库保存
1.在讲解数据保存方案前简述一下.net中dataset类,dataset类基本上是内存中的数据库,其中包含了所有表、关系和约束。数据表(datatable)非常类似于物理数据库表,它由一组包含特定属性的列组成,可能包含0行或多行数据。每个数据表中包含数据列(datacolumns)和数据行(datarows),以数据库表做例讲解。
我们拿数据库与DataSet类做下类比以更直观的显示:
数据库 DataSet
|—表 |—DataTable
|—行 |—DataColumn
|—列 |—DataRow
ADO.NET技术
(硬盘)<———————>(内存)
创建一个名为MusicDS数据集,里面有一个MusicDT数据表,添加Name、Path列,并设置Name列为主键。
DataSet ds = newDataSet( "MusicDS" ); DataTabledt = newDataTable( "MusicDT" ); //创建表 //dt.Columns.Add(new DataColumn("ID", typeof(int)));//添加列指定数据类型 dt.Columns.Add(newDataColumn( "Name" , typeof ( string ))); //添加列 dt.Columns.Add(newDataColumn( "Path" , typeof ( string ))); //添加列 DataColumn[] pk = newDataColumn[] { dt.Columns[ "Name" ] }; //创建主键数组 dt.Constraints.Add(newUniqueConstraint( "PK_MusicList" , pk[0])); //添加约束集合指定名称和实例 dt.PrimaryKey = pk; //添加主键数组 ds.Tables.Add(dt); //添加到数据集 |
在数据集中添加数据:
ds.Tables[ "MusicDT" ].Rows.Add(names[i], paths[i]); //参数对象类型和个数对应数据表中列的类型和个数。 |
2.在建立好DataSet对象后调用方法WriteXml(),将内存中的数据以xml文件的形式存放到硬盘。
ds.WriteXml( ".\\info\\list.xml" , XmlWriteMode.WriteSchema); |
方法的第一个参数是文件存放地址,第二个对象是指定如何存储。
ds.ReadXml( ".\\info\\list.xml" , XmlReadMode.ReadSchema); |
读取xml文件到DataSet对象调用相应方法。
3.基于SQLite数据库的本地存储方案适应于小型应用程序的用户信息存储,相比于其它数据库存储方案优点是不用在应用环境下安装支持文件,占用内存小等优点。缺点是读写速度相比于其它大型数据库慢,所以适应于小型应用程序的用户信息存储,另外安全性方面要明显优于XML文件。
在开发过程中需要使用System.Data.SQLite命名空间下的方法
SQLite的数据库支持会背系统复制到程序文件夹,所以在应用程序安装后不用安装特定的数据库支持程序。
使用方式是需要到其官方网站下载支持程序和视图开发工具,官网上也有基于SLQLite数据库开发的例子。
还有就是SQLite目前好像只支持.NET2.0下的开发。
4.基于ACCESS数据库开发的应用程序在安装后需要微软的Access程序支持。
优点是访问速度快,占用内存低,缺点是当文件信息量大了后访问速度会降低,支持数据量有限制。适合C/S模式的小型管理系统开发。
在开发过程中需要使用System.Data.OleDb命名空间下的方法
5.基于SQLServer数据库开发的用用程序需要相应版本的SQLServer数据库支持。低版本开发额数据库文件会自动升级到数据库支持运行的版本,从高级降到低级版本需要手动修改一些配置,详细过程这里不再阐述。
有点是访问速度快,运行安全可靠,缺点是相比于之前讲述的几种方案对机器要求高。
适用于B/S模式开发的中小型应用程序。
同级别的数据库有MySql、Oracle 等……
总述:基于xml、SQLite、Access、SQL Server的数据持久化方案均可在.net下与DataSet对象进行数据交换。
Q Q: 121866673
来源: http://zxlovenet.cnblogs.com
声明: 本文原创发表于博客园,作者为初行本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
消息:此博客已停止更新,想了解最新博客更新请关注我的新博客 Noogel's notes
推荐: 推荐使用为知笔记(WizNote),它是电脑、手机、平板上都能用的云笔记软件,还可以分类管理和共享资料,使用我的邀请码注册:https://note.wiz.cn/i/06102d9e
打赏: 如果您觉得文章对您的工作有帮助,请小额打赏我一些,鼓励我写出更好的文章!

微信打赏

支付宝打赏
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述