原文地址: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);
        }
    }

一个C#的XML数据库访问类的更多相关文章

  1. 我也来写:数据库访问类DBHelper

    一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...

  2. 我也来写:数据库访问类DBHelper(转)

    一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...

  3. 一个通用数据库访问类(C#,SqlClient)

    本文转自:http://www.7139.com/jsxy/cxsj/c/200607/114291.html使用ADO.NET时,每次数据库操作都要设置connection属性.建立connecti ...

  4. 学习实践:使用模式,原则实现一个C++数据库访问类

    一.概述 在我参与的多个项目中,大家使用libMySQL操作MySQL数据库,而且是源码即复用,在多个项目中有多套相同或相似的源码,这样的复用方式给开发带来了不变,而且libMySQL的使用比较麻烦, ...

  5. DataAccess通用数据库访问类,简单易用,功能强悍

    以下是我编写的DataAccess通用数据库访问类,简单易用,支持:内联式创建多个参数.支持多事务提交.支持参数复用.支持更换数据库类型,希望能帮到大家,若需支持查出来后转换成实体,可以自行扩展dat ...

  6. C#.NET数据库访问类DBHelper

    这是一个与C# .NET通用的数据库访问类,包含了工厂模式.事务处理等安全机制. 调用方式: DBHelper db = new DBHelper(); DbCommand cmd = db.GetS ...

  7. 关于PHP建立数据库访问类的封装以及操作php单例模式连接数据库封装类

    建立数据库访问类的封装 <?php   class DBDA {     public $host = "localhost"; //服务器地址     public $ui ...

  8. 一个基于PDO的数据库操作类(新) 一个PDO事务实例

    <?php /* * 作者:胡睿 * 日期:2011/03/19 * 电邮:hooray0905@foxmail.com * * 20110319 * 常用数据库操作,如:增删改查,获取单条记录 ...

  9. Java知多少(107)几个重要的java数据库访问类和接口

    编写访问数据库的Java程序还需要几个重要的类和接口. DriverManager类 DriverManager类处理驱动程序的加载和建立新数据库连接.DriverManager是java.sql包中 ...

随机推荐

  1. 【JAVA - SSM】之SSM入门项目的搭建

    最近学习了一下SSM.SSM是 Spring + SpringMVC + MyBatis 整合框架,非常适合WEB后台开发,也是当前很多人的不二选择.这篇博客带大家来创建一个学习SSM的入门程序,从搭 ...

  2. javascript 函数参数

    1.javascript函数参数的个数以及类型没有强制规定,调用时不必严格按照函数的参数或类型,函数的参数只是在调用函数的时候提供了便利,但不是必须的! 2.参数在javascript内部是用数组ar ...

  3. centos6.4安装flashcache

    FlashCache呢是Facebook技术团队的又一力作,最初是为加速MySQL设计的.Flashcache是在Linux层面的,所以任何受磁盘IO困绕的软件或应用都可以方便的使用.为什么是用于加速 ...

  4. JTA 深度历险 - 原理与实现---转

    利用 JTA 处理事务 什么是事务处理 事务是计算机应用中不可或缺的组件模型,它保证了用户操作的原子性 ( Atomicity ).一致性 ( Consistency ).隔离性 ( Isolatio ...

  5. iOS--NSAttributedString使用介绍

    iOS–NSAttributedString使用介绍 原文见: http://www.itnose.net/detail/6177538.html http://***/html/topnews201 ...

  6. MD5 密码破解 碰撞 网站

    MD5反向查询网站 http://www.cmd5.com/ 文件MD5值查询网站 http://www.atool.org/file_hash.php 个人对密码破解的理解 1.使用MD5对密码加密 ...

  7. 关于黑名单IP的设置

    最近在做一个项目的时候,需要做一个自动的黑名单设置,也就是将一天内重复出错的超过一定次数的手机号,和IP给加入黑名单里面,下次请求的时候先判断是否在黑名单里. 这个是获取IP地址的方法 private ...

  8. Axiom3D学习日记 0.Axiom基础知识

    Axiom 3D Engine An open-source, cross-platform, managed 3D rendering engine for DirectX, XNA and Ope ...

  9. ORACLE每组只保留一条记录

    删除同一组内其他记录 DELETE from memactivities a where exists(select 1 FROM (select Uuid,ci_no,lst_upd_ts,ROW_ ...

  10. Eclipse代码自动填充.

    在默认情况下,Eclipse只在程序员输入“.”并用ALT+/组合键强制调用编码提示功能 我们可以通过少量配置,让Eclipse更聪明,实现完全自动编码提示:1.在你的“工作空间”下找到下在文件.me ...