当前位置: 首页 > news >正文

一个C#的XML数据库访问类

原文地址:http://hankjin.blog.163.com/blog/static/33731937200942915452244/

程序中不可避免的要用到配置文件或数据,对于数据量比较小的程序,部署数据库花费的时间就显得浪费了,因此用XML来存储不妨为一个很好的办法,而且结合C#的DataSet,我们可以很轻易的封装出一个代码简单而功能强大的数据访问类XMLConfig
config.xml
<root>
 
<table1>
    <rowName1>hello</rowName1>
   
<rowName2>World</rowName2>
  </table1>
 
<table1>
    <rowName1>hank</rowName1>
   
<rowName2>Joke</rowName2><!--table1, row1:
ds.Tables["table1"].Rows[1]["rowName2"] -->
  </table1>

 
<table2>
  </table2>
  <table2>
 
</table2>

  <table3>
 
</table3>
</root>

    class XMLConfig
    {
       
/// <summary>
        /// XML文件名
        ///
</summary>
        private static string fileName;
        ///
<summary>
        /// 数据集
        /// </summary>
       
private static DataSet objDataSet;
        /// <summary>
        ///
表名
        /// </summary>
        private string
tableName;
        private bool updated = false;
        static
XMLConfig()
        {
            fileName =
"data//config.xml";
            objDataSet = new DataSet();
           
objDataSet.ReadXml(fileName);
        }
        ///
<summary>
        /// 获取一个表
        /// </summary>
       
/// <param name="tableName">表名</param>
        public
XMLConfig(string tableName)
        {
            this.tableName =
tableName;
        }
        /// <summary>
        ///
获取配置
        /// </summary>
        /// <param
name="index"></param>
        /// <param
name="row"></param>
        ///
<returns></returns>
        public object GetConfig(int index,
string row)
        {
            return
objDataSet.Tables[tableName].Rows[index][row];
        }
        ///
<summary>
        /// 修改配置
        /// </summary>
       
/// <param name="index"></param>
        /// <param
name="row"></param>
        /// <param
name="value"></param>
        public void SetConfig(int index,
string row, string value)
        {
           
objDataSet.Tables[tableName].Rows[index][row] = value;
            updated =
true;
        }
        /// <summary>
        ///
析构函数,程序退出时,如果有修改,则把修改写回XML文件中
        /// </summary>
       
~XMLConfig()
        {
            if(updated)
               
objDataSet.WriteXml(fileName);
        }
    }

转载于:https://www.cnblogs.com/CocoWang/p/3700654.html

相关文章:

  • 图像的像素点操作【OpenCV学习笔记3】
  • 简单弹出视图
  • 文件的保存【OpenCV学习笔记4】
  • 清除vs2005、vs2008起始页最近打开项目
  • 51单片机-红外遥控解码
  • 汇编实验课程设计1
  • [转]实验室小科普之:方便又健康——洗水果的学问
  • C++ is on the way 8: 类初始化列表的分析总结
  • 异步DNS解析的实现
  • 图像绘制功能【OpenCV学习笔记5】
  • nopCommerce 3.3正式发布及新增功能改进
  • 对视频流进行边缘检测【OpenCV学习笔记6】
  • 发布一快速开发报表的类库,让报表的开发具有前所未有的方便和快速
  • 一个实用并且确实的内核补丁--关于桥接nat的
  • PHP数据连接主键与外键!
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • [nginx文档翻译系列] 控制nginx
  • 【笔记】你不知道的JS读书笔记——Promise
  • 2017年终总结、随想
  •  D - 粉碎叛乱F - 其他起义
  • Idea+maven+scala构建包并在spark on yarn 运行
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Java小白进阶笔记(3)-初级面向对象
  • java小心机(3)| 浅析finalize()
  • JSDuck 与 AngularJS 融合技巧
  • mongo索引构建
  • Next.js之基础概念(二)
  • React as a UI Runtime(五、列表)
  • react 代码优化(一) ——事件处理
  • ucore操作系统实验笔记 - 重新理解中断
  • 阿里云Kubernetes容器服务上体验Knative
  • 第2章 网络文档
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 理解在java “”i=i++;”所发生的事情
  • 如何学习JavaEE,项目又该如何做?
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 我这样减少了26.5M Java内存!
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​ubuntu下安装kvm虚拟机
  • ​用户画像从0到100的构建思路
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (4.10~4.16)
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (三)elasticsearch 源码之启动流程分析
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)关于多人操作数据的处理策略
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • **python多态
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .mysql secret在哪_MySQL如何使用索引
  • .Net core 6.0 升8.0