C#中用#define来定义ADO数据库类型

今天学习数据类的封装.因我用了两个数据库(Access)和Sql,所以就想封装一个类来操作这两类数据库
但是碰上麻烦了,操作这两个数据库的类根本不一样
1.Sql数据库用的类:
SqlCommand;
SqlConnection;
SqlDataAdapter;
2.Access数据库有的类:
OledbCommand;
OledbConnection;
OledbDataAdapter;

在网上查了半天,我就想用预编译,和给类起个别名来实现,
一顿操作后发现可行,也连上数据库了,哈哈!

要操作哪个数据库在类文件第一行用#define来定义
下面的代码是定义操作Access数据库的,所在在第一行就定义了个#define OLEDB_
如果用Sql数据库就把上面的定义改为#define SQL_就可以了

在类中用using重新定义上面三种操作类
using MyConnectin = OleDbConnection;
using MyCommand = OleDbCommand;
using MyDataAdapter = OleDbDataAdapter;
using MyCommandBuilder = OleDbCommandBuilder;
//其他要用的类…

用#if...#else....#endf
来判断自己定义的类是用的哪种
相当于C++中的字符编码重定义一样

唯一的不好就是只能在这个文件中定义,#delfine
要手动修改,不能编成DLL文件,也许有方法我还没发现,以后知道了再说吧
在别的文件中定义就好像管不到这个类
#define OLEDB_
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;


namespace MYDATACLASS
{


#if OLEDB_
    using MyConnectin = OleDbConnection;
    using MyCommand = OleDbCommand;
    using MyDataAdapter = OleDbDataAdapter;
    using MyCommandBuilder = OleDbCommandBuilder;
#elif SQL_
    using MyCommand = SqlCommand;
    using MyConnectin = SqlConnection;
    using MyDataAdapter = SqlDataAdapter;

    //....
#endif

    internal class MyDBAdo
    {
        private MyConnectin conn = null;
        public MyDBAdo() { }
        ~MyDBAdo()
        {
            CloseConn();
        }
        public bool OpenConn(string connStr)
        {
            try
            {
                conn = new MyConnectin(connStr);
                conn.Open();
                if (conn.State == ConnectionState.Open)
                    return true;
                return false;
            }
            catch (System.Exception ex)
            {
                throw new System.Exception("数据库连接错误:" + ex.Message);
            }
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值