C#强类型数据集的多数据库应用

来源:互联网 发布:html与javascript分离 编辑:程序博客网 时间:2024/04/29 08:22

之前项目有人提出用强类型数据集会比较好用,因为XXXX(各种优点,详情百度),后来遇到一些当时无法解决的问题则没有再去研究。

问题1:VS2010中的数据连接没有找到mysql的数据连接选项

问题2:如何在不使用强类型数据集自带的connection在两个数据库或者多个数据库中动态切换。

 

今日研究了一下 找到了解决办法

问题1解法:下载mysql驱动 mysql官网驱动下载(var:vs2010连接mysql数据库)

安装之后VS就会出现mysql选项C#强类型数据集的多数据库应用

 

问题2思路:通过从服务器资源管理器拖动数据库表格到数据集后 生成了强类型数据集,例如DS_rfid_secure_sqlserver.xsd下有表格叫做loginhistory如图

C#强类型数据集的多数据库应用

其中的connection属性是可以修改的

C#强类型数据集的多数据库应用

但问题在于 拖动sql数据库的connection类型是System.Data.SqlClient.SqlConnection

拖动mysql数据库的connection类型是MySql.Data.MySqlClient.MySqlConnection

所以暂时找到的解决办法为:

1为同一个数据库新建两个xsd文件 一个是sqlserver,一个是mysql

2为两个xsd添加同一个名字的查询函数

3使用这个查询函数之前运行如下代码

        public static string dbstroon1;//数据库连接字符串
        public static string dbtype1;//数据库类型SQLServer或者MySQL

        object loginhistoryAdapter;//弱类型的适配器
        public loginhistory()
        {
            if (dbtype1 == "SQLServer")
            {
                DS_rfid_secure_sqlserverTableAdapters.loginhistoryTableAdapter aa = new DS_rfid_secure_sqlserverTableAdapters.loginhistoryTableAdapter();
                aa.Connection = new System.Data.SqlClient.SqlConnection(dbstroon1);
                loginhistoryAdapter = aa;
            }
            if (dbtype1 == "MySQL")
            {
                DS_rfid_secure_mysqlTableAdapters.loginhistoryTableAdapter aa = new DS_rfid_secure_mysqlTableAdapters.loginhistoryTableAdapter();
                aa.Connection = new MySql.Data.MySqlClient.MySqlConnection(dbstroon1);
                loginhistoryAdapter = aa;
            }
          
        }

4使用查询函数时(假设查询语句为add(DateTime nowtime,string loginLocation,string LoginUserID,string Descripe))

  if (dbtype1 == "SQLServer")
            {
                ((DS_rfid_secure_sqlserverTableAdapters.loginhistoryTableAdapter)loginhistoryAdapter).Insert(nowtime, loginLocation, LoginUserID, Descripe)                       
            }
            if (dbtype1 == "MySQL")
            {
                ((DS_rfid_secure_mysqlTableAdapters.loginhistoryTableAdapter)loginhistoryAdapter).Insert(nowtime, loginLocation, LoginUserID, Descripe);
             }

这样就可以做到强类型的多数据库应用

 

0 0
原创粉丝点击