您的位置:首页 > 数据库

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

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

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

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

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

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

安装之后VS就会出现mysql选项



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





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





但问题在于 拖动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);

}

这样就可以做到强类型的多数据库应用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐