C#连接操作 MySQL 数据库实例(使用官方驱动)

MySQL 以其免费和足够的性能受到很大的青睐,当然对于国内小公司,甚至是大公司如果对版权看得薄,敢冒险的话,随便装个 SqlServer、DB2、Oracle 都行。对于 SqlServer 数据库,因其与 MS 是一家,自然在 .net 类库中有内建支持,假如 MySQL 就得找第三方的驱动了 -- .net 中多讲 Provider。在这里我也是作为一个预研专题,记录下 C# 连接 MySQL 的两种方法,分别使用 MySQL 官方的和 SourceForge 上一个开源的 MySQL 驱动。至于 ODBC 的办法,就不提了,觉得意义不大,同样要安装个 MySQL ODBC 驱动,而且 ODBC 又如此之笨拙。

使用 MySQL 官方区动连接操作 MySQL 数据库

下载驱动,可在 http://www.mysql.com/downloads/connector/net/6.3.html#downloads 下载,当前版本是 6.3。你可以选择的平台既可以是 Microsoft Windows,也可以用 .Net & Mono 的,区别是 Microsoft Windows 的是一个MSI 文件,后者是非安装的压缩包。但是那个 MSI 文件在我的 64 位 XP 下安装不成功,所以用了后者。

这个 connector net 不光是个 MySQL 驱动,还提供了像 Entity Frameword、Asp.Net Web Providers、Compact Framework、VS 2008 集成的支持,还配置 CSharp 和 VB 的例子。详细的配置、使用文档请参考安装目录中的 MySql.Data.chm 文件。

现在从最简单的例子开始,驱动安装完,或压缩包解开后,甭里安装目录里的 mysql.data.cf.dll、mysql.data.entiry.dll、mysql.visualstudio.dll 和 mysql.web.dll,我们暂时在项目中引入 mysql.data.dll,用 using MySql.Data.MySqlClient; 引入命名空间。然后简单的代码如下:

代码如下:

//连接字符串
 string connStr = "Server=localhost;Database=unmicc;Uid=unmicc;Pwd=xxxxxx;CharSet=utf8;";
 MySqlConnection con = new MySqlConnection(connStr);
 
 con.Open();//打开连接
 
 MySqlCommand cmd = new MySqlCommand("select now()",con);
 
 object time = cmd.ExecuteScalar(); //或是 cmd.ExecuteReader();cmd.ExecuteNonQuery();
 
 MessageBox.Show(time.ToString());
 //或 Console.WriteLine(time.ToString());
 
 con.Close();

上面的连接字符串应该好理解,另外还有更多的配置参数,例如端口号、连接池相关的配置等,具体请参考手册中的 Connection Options。其他的操作就是标准的 ADO.NET 的了,再就是可以处理各步骤的异常,catch MySql.Data.MySqlClient.MySqlException 这个类型的异常。其他的用于填充数据的 MySqlDataAdapter 和  MySqlDataReader 也是备好了的。

我想,在做正式的应用时,为防止 SQL 注入时关于参数化查询肯定会被提出来的,那就来看看这个 MySQL 官方驱动如何处理参数化查询的。它所用的方式和 SqlServer Provider 是一样的,用 @author 这样的形式来标识参数,并且同样支持 AddWithValue(string name, object value) 的方式。请看代码:

代码如下:

string sql = "update wp_posts set post_author=@author and post_status=@status where id=@id";
 
 //可以用 ? 号的形式,如,但 ? 号的形式不推荐使用
 //string sql = "update wp_posts set post_author=?author and post_status=?status where id=?id";
 
 MySqlCommand cmd = con.CreateCommand();
 cmd.CommandText = sql;
 
 cmd.Parameters.AddWithValue("@author", 1);
 //cmd.Parameters.AddWithValue("?author", 1);
 cmd.Parameters.AddWithValue("@status", "publish");
 //cmd.Parameters.AddWithValue("?status", "publish");
 cmd.Parameters.AddWithValue("@id", 23);
 //cmd.Parameters.AddWithValue("?id",23);
 
 cmd.ExecuteNonQuery();

注意到,同时还能用 ?author 的形式来标识参数,不过现在不推荐这么用了,也许是为了统一成 @author 的格式吧。不知道什么时候能像 JDBC 一样,直接用 ? 来作为占位符。

对于 InnoDB 存储引擎的 MySQL 是支持事物的,这个官方的的驱动支持事物的代码如下:
[code]
MySqlTransaction trans = con.BeginTransaction(); //启用事物
 trans.Commit(); //正常时提交
 trans.Rollback(); //异常时回滚
[code]
下一篇将介绍如何使用 SourceForge 上的开源 MySQL .Net 驱动怎么去操作 MySQL 数据库的。

(0)

相关推荐

  • C#使用Socket快速判断数据库连接是否正常的方法

    本文实例讲述了C#使用Socket快速判断数据库连接是否正常的方法.分享给大家供大家参考.具体分析如下: 大家在做项目的时候,一般都是和数据库有关的.而相信许多人在用代码打开数据库的时候,没有判断数据库连接是否成功.如果写对了还好,但是出错了,会等老长时间(默认15s,不过 实际响应 可能会更长).而且还会出现卡死的情况,给用户的感觉就会变得非常差劲.所以快速判断数据库连接是否成功,就显得尤为重要了.   一般情况下,如果连接字符串正确,那么连接到数据库用的时间一般在5s以内.所以我们可以在连接

  • C#使用checkedListBox1控件链接数据库的方法示例

    本文实例讲述了C#使用checkedListBox1控件链接数据库的方法.分享给大家供大家参考,具体如下: 在数据库中创建三个表: 学生信息表  爱好表   学生爱好表 结果让学生的信息和爱好同时显示到C#窗体上面 using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Diagnostics; using System.Data.Sql;

  • C#连接mysql数据库完整实例

    本文实例讲述了C#连接mysql数据库的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Configuration; using MySql.Data.MySqlClient; /// <summary> /// TestDatebase 的摘要说明 /// </summary> public class TestDatebase { public TestDatebase() { // // TODO: 在此处添加构造函数逻辑

  • C#简单访问SQLite数据库的方法(安装,连接,查询等)

    本文实例讲述了C#简单访问SQLite数据库的方法.分享给大家供大家参考,具体如下: 下载最新版SQLite(http://www.sqlite.org/download.html),其他版本也可以,这里使用的版本是sqlite-3_6_6_1 a.解压后copy c:\sqlite-3_6_6_1 b.进入cmd模式,进入sqlite-3_6_6_1目录,执行sqlite3 mytest.db c. create table test (seq int,desc varchar(8)); in

  • C#编程实现连接SQL SERVER数据库实例详解

    本文实例讲述了C#编程实现连接SQL SERVER数据库.分享给大家供大家参考,具体如下: 首先,在SQL SEVER里建立一个名为"Exercise"的数据库名,在该数据库下建立一张名为"lianxi"的表.好,现在开始写代码. 在FORM1里拖一个DATAGIRDVIEW用于显示表,在放一个BUTTON用于执行操作.加入命名空间 复制代码 代码如下: using system.data.sqlclient; private void button1_Click(

  • C#操作SQLite数据库方法小结(创建,连接,插入,查询,删除等)

    本文实例讲述了C#操作SQLite数据库方法.分享给大家供大家参考,具体如下: SQLite介绍 SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite是一个开源.免费的小型RDBMS(关系型数据库),能独立运行.无服务器.零配置.支持事物,用C实现,内存占用较小,支持绝大数的SQ

  • C#连接数据库和更新数据库的方法

    对数据库的操作总体可以分为两类:查询(select)和更新(insert,delete,update).为什么这样来分呢?仔细看看两类的区别,select只是从数据库中将数据拿出来使用,而其余三者都会对数据库的物理数据进行修改.这篇文章将接着阐述更新数据. 更新数据库信息首先是连接数据库,对数据库的更新需要一个对象:OleDbCommand.该对象表示要对数据源执行的SQL语句或存储过程. 这个对象有三个属性:1.CommandText表示要设置命令的文本:2.Connection表示要设置命令

  • C#编程实现连接ACCESS数据库实例详解

    本文实例讲述了C#编程实现连接ACCESS数据库的方法.分享给大家供大家参考,具体如下: 一.建立FORM窗体,加一个按钮控件,加一个DATAGRIDVIEW控件. 二.双击FORM,加入命名空间 复制代码 代码如下: using System.Data.OleDb; 双击按钮,进入按钮代码,写如下代码 OleDbConnection strConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source

  • C#与SQL连接:GridView控件对数据库的操作

    GridView和DataGrid的异同 GridView 是 DataGrid的后继控件,在.net framework 2 中,虽然还存在DataGrid,但是GridView已经走上了历史的前台,取代DataGrid的趋势已是势不可挡.GridView和DataGrid功能相似,都是在web页面中显示数据源中的数据,将数据源中的一行数据,也就是一条记录,显示为在web页面上输出表格中的一行. GridView相对于DataGrid来说,具有如下优势,功能上更加丰富,因为提供了智能标记面板(

  • c#连接sqlserver数据库、插入数据、从数据库获取时间示例

    c#连接sqlserver.插入数据.从数据库获取时间 复制代码 代码如下: using System;using System.Data.SqlClient; namespace Test{    //连接数据库    public class Connection    {        private static string connectionString =            "Server = 192.168.1.222;" +            "D

  • C#使用ODBC与OLEDB连接数据库的方法示例

    本文实例讲述了C#使用ODBC与OLEDB连接数据库的方法.分享给大家供大家参考,具体如下: using System; using System.Collections.Generic; using System.Text; using System.Data.Odbc; using System.Data.OleDb; namespace ODBCtest { class Program { static void Main(string[] args) { //ODBC连接 string

随机推荐