
前面一篇 https://www.oudahe.com/p/18129/ 讲了 C# 里用 MysqL 官方驱动怎么去连接 *** 作 MysqL 驱动,就是 MysqL 的 JDBC 驱动有两个一样,针对 .NET 的 MysqL 驱动也有两个。这里介绍的就是 .NET 连接 MysqL 的第二个驱动,来自于 Sourceforge 的开源驱动。
首先,到 http://sourceforge.net/projects/MysqLdrivercs/ 下载,写此篇时下载的版本是 MysqLDriverCS-n-EasyqueryTools-4.0.1-DotNet2.0.exe。安装,其中带有源代码和例子,只有三个动态库 libMysqL-4.0.dll、libMysqL.dll、MysqLDriverCS.dll,光看动态库好像不及官版的驱动强大。把安装目录中的 MysqLDriverCS.dll 引入到你的 C# 项目中就可以开始用了。具体用法还需时刻关注安装目录中的 help\SDK\documentation.chm 帮助文档。
也还是围绕着这么几个问题来展开:
基本的用法,如连接字符串的写法,基本查询 *** 作,大概会用到哪些类
异常的处理
事物的处理
参数化的查询支持
这次我会在一个例子中涉及到以上四个方面,下面这个片代码有点混乱,使用时请读懂来,然后才能各取所需:
复制代码 代码如下:
using System;
using System.IO;
using MysqLDriverCS; //引入的命名空间就这个
using System.Data.Common;
namespace cc.unmi
{
public class Program
{
public static voID Main(string[] args)
{
//MysqLDriverCS 有了 MysqLConnectionStringBuilder 和 MysqLConnectionString 来构造连接字符串
//其实反而有点故弄玄虚,也许是以前直接用连接字符串习惯了
MysqLConnectionString conStr = new MysqLConnectionString("localhost","unmi_db","unmi","xxxxxx");
//从 MysqLConnectionStringBuilder 来看似乎可支持的属性较少,不知道连接池那些功能怎么样
//string connStr = "Data Source=unmi_db;Password=xxxxxx;User ID=unmi;Location=localhost;Port=3306;Extended PropertIEs=";
MysqLConnection conn = new MysqLConnection(conStr.Asstring); //或 new MysqLConnection(connStr);
conn.open();
//参数用 @,同样支持 ? 的方式,应该也是不推荐用 ? 的形式
//string sql = "update wp_options set option_value='http://unmi.cc' where option_ID=?ID and <a href="mailto:option_name=@name">option_name=@name</a>";
string sql = "select option_name from wp_options where option_ID=?ID and <a href="mailto:option_name=@name">option_name=@name</a>";
MysqLCommand com = new MysqLCommand(sql,conn);
MysqLParameter paraID = new MysqLParameter("?ID",1);
MysqLParameter paraname = new MysqLParameter("@name","siteurl");
//其实是加在 MysqLParameterCollection 里的
//看起来与 AdDWithValue() 有异曲同功之妙,比如可写成 com.Parameters.Add(new MysqLParameter("@ID",1);
com.Parameters.Add(paraID);
com.Parameters.Add(paraname);
//如果是查询
//MysqLDataReader dr = com.ExecuteReaderEx();//执行 ExecuteReaderEx() 返回的才是 MysqLDataReader
DbTransaction trans = conn.BeginTransaction(); //开启事物
try
{
//com.ExecuteNonquery();
//还要执行更多的语句时应使用事物
Console.Writeline(com.ExecuteScalar().ToString());
trans.Commit();
}
catch (MysqLException ex)
{
Console.Writeline(ex.Message);
trans.Rollback();
}
finally
{
conn.Close();
}
Console.ReadKey();
}
}
}
虽说那个驱动文件名中有 DotNet2.0 字样,应该只要是 2.0 及以上的 .Net 运行时就行的,我是在 32 位的 XP 下,Visual Studio 2008 中,用 .Net 3.5 来跑的,没有问题。
备注一下,在我家里的电脑上却是运行不起来,提示是:
复制代码 代码如下:
{"Could not load file or assembly 'MysqLDriverCS,Version=3.0.1735.36021,Culture=neutral,PublicKeyToken=172f94dfb0faf263' or one of its dependencIEs. An attempt was made to load a program with an incorrect format."}
又是我那可恶的 64 位 XP,它只能支持 32 位的应用,与官版的驱动表现不一样。官版的 MSI 程序不能在我的 64 位系统下安装,但安装包中的 .dll 是可在 64 位下用。而这个版本的驱动是能安装,但用起来告诉我不行,明摆着是甩我。其实在下载驱动的网页上有注明用了 32 位的各种 WiNows *** 作系统云云。
最后简单说下与官版的驱动的少许差异,连接字符串上没有官版驱动丰富,且不知对连接池的支持如何。在用参数化查询设置参数时,虽然比标签的 ADO.Net 方便,便比起官版的可用 AdDWithValue() 方法稍微逊色。再就是在 64 位下根本无法运行,这可不能不算是个致使伤,服务器下 64 位系统在所难免。
然而这个开源驱动也有些独到之处,那就是它提供的 MysqLInsertCommand、MysqLSelectCommand、MysqLUpdateCommand 和 MysqLDeleteCommand 类方便了数据 *** 作,不需要你显式的去写 sql 语句,很像 wordpress 的 $wpdb 中相应的几个函数:$wpdb->insert()、$wpdb->query()、$wpdb->update() 和 $wpdb->delete()。
本不应该把这个驱动这么鲜明的几个特性放后面的。大概看下这几个函数的 *** 作:
复制代码 代码如下:
new MysqLInsertCommand(
dbCon,//连接
new object[,] { //字段名及对应值
{"SettingID",100},
{"SettingValue","http://www.jb51.net"}
},
"Settings" //表名
); //new 后即执行,可用 bSuccess 与 query 属性分别获得成功与否及相应的 sql
//这个 MysqLSelectCommand 有点让人蛋疼,还不如直接 sql 痛快
Datatable dt = new MysqLSelectCommand(dbCon,//连接
new string[] { "SettingID","SettingValue" },//要查询的字段列表
new string[] { "Settings" },// 要查询的表,可以多个
new object[,] { { "SettingID","=",100 } },//条件
null,
null //后面还可以有 limit,distinct 等指令及参数
).table; //获得 Datatable
//更新时用这种方式还算方便
new MysqLUpdateCommand(dbCon,
new object[,] { { "SettingValue","http://www.jb51.net" } },
"Settings",
null
); //new 后即执行,可用 bSuccess 与 query 属性分别获得成功与否及相应的 sql
//参数与 MysqLUpdateCommand 的后四个相同
new MysqLDeleteCommand(dbCon,"Trash",null,null);
以上是内存溢出为你收集整理的C#使用开源驱动连接 *** 作MySQL数据库全部内容,希望文章能够帮你解决C#使用开源驱动连接 *** 作MySQL数据库所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)