C# .net连接mysql数据库的两种方法

先下载和安装MySQLDriverCS,地址:

    http://sourceforge.net/projects/mysqldrivercs/

    在安装文件夹下面找到MySQLDriver.dll,然后将MySQLDriver.dll添加引用到项目中

    注:我下载的是版本是 MySQLDriverCS-n-EasyQueryTools-4.0.1-DotNet2.0.exe

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Data.Odbc;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Windows.Forms;

    using MySQLDriverCS;


    namespace mysql

    {

        public partial class Form1 : Form

        {

            public Form1()

            {

                InitializeComponent();

            }

 

            private void Form1_Load(object sender, EventArgs e)

            {

 

            MySQLConnection conn = null;

            conn = new MySQLConnection(new MySQLConnectionString("localhost", "inv", "root", "831025").AsString);

            conn.Open();

 

            MySQLCommand commn = new MySQLCommand("set names gb2312", conn);

            commn.ExecuteNonQuery();

 

            string sql = "select * from exchange ";

            MySQLDataAdapter mda = new MySQLDataAdapter(sql, conn);

 

            DataSet ds = new DataSet();

            mda.Fill(ds, "table1");

 

            this.dataGrid1.DataSource = ds.Tables["table1"];

            conn.Close();


            }

        }

    }

 

演示了用C#操作MySQL的方法,提供了三个可重用的类MySqlDBUtil,MySqlPageUtil,Page。
本示例由 C#操作Access数据库的简单例子(http://www.albertsong.com/read-56.html)修改而来。
1.首先下载MySQL数据库的.NET驱动
http://dev.mysql.com/get/Downloads/Connector-Net/mysql-connector-net-5.0.8.1-noinstall.zip/from/pick#mirrors
将bin目录里的MySql.Data.dll文件复制到工程目录,并且将dll的引用加入到项目中,这样就可以通过相关的类来操作MySQL数据库了。
using MySql.Data.MySqlClient;
using System.Data;
连接字符串:String connectionString = "server=127.0.0.1;user id=root; password=as; database=albertsong; pooling=false;charset=utf8";
连接字符串中各个项目的意思是很明确的,需要注意的是charset应该设置成和数据库表的charset一致,否则可能出现中文乱码。
然后将整个项目中的OleDb用MySql替换,这样基本上就可以了。不同的是带参数的sql语句,
Access中是
string sql="insert into product(name,quantity,price,sale_date,checked_flag)values(?,?,?,?,?)";
parameters[0]=new MySqlParameter("@name",MySqlDbType.VarChar,100);
MySql中应改为
string sql="insert into product(name,quantity,price,sale_date,checked_flag)values(?name,?quantity,?price,?sale_date,?checked_flag)";
parameters[0]=new MySqlParameter("?name",MySqlDbType.VarChar,100);
2.取得MySQL自增标识字段在插入数据后的id值
cmd.CommandText = @"select @@identity";
int value = Int32.Parse(cmd.ExecuteScalar().ToString());
return value;
用cmd.CommandText = @"select LAST_INSERT_ID()";结果一样,两者的区别没有研究。
3.分页查询
使用Limit子句来处理分页查询,这样相对于Access的分页查询,代码大量简化,效率也会提高。
代码这里下载下载文件
MySqlDBUtilDemo.rar (198.41 KB , 下载:1295次)
本例程是一个c#的winform程序,但是数据访问类可以在Web环境下使用。
运行前先利用bin/Release下的sql语句文件建表并修改MySqlDBUtil中的连接字符串。
本例程演示了:
1.MySQL数据库的插入,更新,修改,查询;
2.带参数的sql语句的使用,而不是拼SQL;
3.使用Limit子句的分页查询;
4.用事务同时执行多个SQL语句;
5.在插入数据的同时返回最新的ID值;
6.整型,实型,字符串,日期型,布尔型五种数据类型的操作;
7.使用正则表达式来验证整数和实数;
8.listview用来显示数据的一些基本用法。
本示例不包括:
1.完善的分页封装,只提供了分页的简单包装。
2.嵌套的事务处理,提供了同时执行多个sql语句的事务处理,但不支持嵌套事务。
3.listview的使用,只是利用winform控件来演示数据访问,因此不能作为winform编程的良好示例,例如添加数据时界面并没有很好地更新。
后记:
由 于API接口一致,将操作Access数据库的类改为操作MySQL数据库的类很容易,利用这两个示例,可以学习基本的数据库操作,也可以用来做一些简单 的应用程序了。实际的项目中有成熟的开源项目可用,如iBATIS.NET和NHibernate,这些项目都建筑在这些基本的API之上,先学习我写的 这两个小例子也有助于学习理解这些项目。

 

-----按照如下已经操作成功--------------

 

 

1.安装MySql for .net插件mysql-connector-net-5.0.8.1.exe,可从这里下载: 
http://mysql.isu.edu.tw/Downloads/Connector-Net/?dir=/Unix/Database/MySQL/Downloads/Connector-Net&page=3 
2.工程中引用MySql.Data命名空间. 
3.代码如下: 
using MySql.Data.MySqlClient; 
private void button1_Click(object sender, EventArgs e)
{ 
string myConnectionString = "Database=DBtest;
Data Source=localhost;
User Id=root;
Password=sa;
charset=gb2312"; 
MySqlConnection myConnection = new MySqlConnection(myConnectionString); 
myConnection.Open(); 
string SqlStr = "select * from Table1";
MySqlDataAdapter Mda = new MySqlDataAdapter(SqlStr, myConnection); 
DataSet Ds = new DataSet(); 
Mda.Fill(Ds); 
dataGridView1.DataSource = Ds.Tables[0];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值