这里介绍下比较简单的方式,引用MySql.Data.dll然后添加一个MySqlHelper类来对MySql数据库进行访问和操作。

1.将MySql.Data.dll引用到你的项目中

下载地址:MySql.Data.rar

添加引用后在你的数据库操作类(如MySqlHelper.cs)中添加引用声明

using MySql.Data;
using MySql.Data.MySqlClient;

2.添加一个MySqlHelper类来对MySql数据库进行操作。 MySqlHelper.CS网上有很多列子,把代码拷下来就可以直接使用。如果里面的ExcecuteNonquery、GetDataSet等基本访问数据库方法还是无法满足你开发需求的话,你还可以自己重新改写代码来扩充其功能。

MySqlHelper:

using System;
using System.Collections;
using System.Configuration;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Data;

/// <summary>
///MYSQLHelper 的摘要说明
/// </summary>
public abstract class MySqlHelper

{

    //数据库连接字符串
    public static string Conn = "Database='wp';Data Source='localhost';User Id='root';Password='root';charset='utf8';pooling=true";

    // 用于缓存参数的HASH表
    private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());

    /// <summary>

    ///  给定连接的数据库用假设参数执行一个sql命令(不返回数据集)

    /// </summary>

    /// <param name="connectionString">一个有效的连接字符串</param>

    /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>

    /// <param name="cmdText">存储过程名称或者sql命令语句</param>

    /// <param name="commandParameters">执行命令所用参数的集合</param>

    /// <returns>执行命令所影响的行数</returns>
    public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)

    {

        MySqlCommand cmd = new MySqlCommand();

        using (MySqlConnection conn = new MySqlConnection(connectionString))

        {

            PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);

            int val = cmd.ExecuteNonQuery();

            cmd.Parameters.Clear();

            return val;

        }

    }

    /// <summary>

    /// 用现有的数据库连接执行一个sql命令(不返回数据集)

    /// </summary>

    /// <param name="connection">一个现有的数据库连接</param>

    /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>

    /// <param name="cmdText">存储过程名称或者sql命令语句</param>

    /// <param name="commandParameters">执行命令所用参数的集合</param>

    /// <returns>执行命令所影响的行数</returns>
    public static int ExecuteNonQuery(MySqlConnection connection, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)

    {

        MySqlCommand cmd = new MySqlCommand();

        PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);

        int val = cmd.ExecuteNonQuery();

        cmd.Parameters.Clear();

        return val;

    }

    /// <summary>

    ///使用现有的SQL事务执行一个sql命令(不返回数据集)

    /// </summary>

    /// <remarks>

    ///举例:

    ///  int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));

    /// </remarks>

    /// <param name="trans">一个现有的事务</param>

    /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>

    /// <param name="cmdText">存储过程名称或者sql命令语句</param>

    /// <param name="commandParameters">执行命令所用参数的集合</param>

    /// <returns>执行命令所影响的行数</returns>
    public static int ExecuteNonQuery(MySqlTransaction trans, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)

    {

        MySqlCommand cmd = new MySqlCommand();

        PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);

        int val = cmd.ExecuteNonQuery();

        cmd.Parameters.Clear();

        return val;

    }

    /// <summary>

    /// 用执行的数据库连接执行一个返回数据集的sql命令

    /// </summary>

    /// <remarks>

    /// 举例:

    ///  MySqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));

    /// </remarks>

    /// <param name="connectionString">一个有效的连接字符串</param>

    /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>

    /// <param name="cmdText">存储过程名称或者sql命令语句</param>

    /// <param name="commandParameters">执行命令所用参数的集合</param>

    /// <returns>包含结果的读取器</returns>
    public static MySqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)

    {

        //创建一个MySqlCommand对象
        MySqlCommand cmd = new MySqlCommand();

        //创建一个MySqlConnection对象
        MySqlConnection conn = new MySqlConnection(connectionString);

        //在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在,

        //因此commandBehaviour.CloseConnection 就不会执行
        try

        {

            //调用 PrepareCommand 方法,对 MySqlCommand 对象设置参数
            PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);

            //调用 MySqlCommand  的 ExecuteReader 方法
            MySqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

            //清除参数
            cmd.Parameters.Clear();

            return reader;

        }

        catch

        {

            //关闭连接,抛出异常
            conn.Close();

            throw;

        }

    }

    /// <summary>

    /// 返回DataSet

    /// </summary>

    /// <param name="connectionString">一个有效的连接字符串</param>

    /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>

    /// <param name="cmdText">存储过程名称或者sql命令语句</param>

    /// <param name="commandParameters">执行命令所用参数的集合</param>

    /// <returns></returns>
    public static DataSet GetDataSet(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)

    {

        //创建一个MySqlCommand对象
        MySqlCommand cmd = new MySqlCommand();

        //创建一个MySqlConnection对象
        MySqlConnection conn = new MySqlConnection(connectionString);

        //在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在,

        try

        {

            //调用 PrepareCommand 方法,对 MySqlCommand 对象设置参数
            PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);

            //调用 MySqlCommand  的 ExecuteReader 方法
            MySqlDataAdapter adapter = new MySqlDataAdapter();

            adapter.SelectCommand = cmd;

            DataSet ds = new DataSet();

            adapter.Fill(ds);

            //清除参数
            cmd.Parameters.Clear();

            conn.Close();

            return ds;

        }

        catch (Exception e)

        {

            throw e;

        }

    }

    /// <summary>

    /// 用指定的数据库连接字符串执行一个命令并返回一个数据集的第一列

    /// </summary>

    /// <remarks>

    ///例如:

    ///  Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));

    /// </remarks>

    ///<param name="connectionString">一个有效的连接字符串</param>

    /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>

    /// <param name="cmdText">存储过程名称或者sql命令语句</param>

    /// <param name="commandParameters">执行命令所用参数的集合</param>

    /// <returns>用 Convert.To{Type}把类型转换为想要的 </returns>
    public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)

    {

        MySqlCommand cmd = new MySqlCommand();

        using (MySqlConnection connection = new MySqlConnection(connectionString))

        {

            PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);

            object val = cmd.ExecuteScalar();

            cmd.Parameters.Clear();

            return val;

        }

    }

    /// <summary>

    /// 用指定的数据库连接执行一个命令并返回一个数据集的第一列

    /// </summary>

    /// <remarks>

    /// 例如:

    ///  Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new MySqlParameter("@prodid", 24));

    /// </remarks>

    /// <param name="connection">一个存在的数据库连接</param>

    /// <param name="cmdType">命令类型(存储过程, 文本, 等等)</param>

    /// <param name="cmdText">存储过程名称或者sql命令语句</param>

    /// <param name="commandParameters">执行命令所用参数的集合</param>

    /// <returns>用 Convert.To{Type}把类型转换为想要的 </returns>
    public static object ExecuteScalar(MySqlConnection connection, CommandType cmdType, string cmdText, params MySqlParameter[] commandParameters)

    {

        MySqlCommand cmd = new MySqlCommand();

        PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);

        object val = cmd.ExecuteScalar();

        cmd.Parameters.Clear();

        return val;

    }

    /// <summary>

    /// 将参数集合添加到缓存

    /// </summary>

    /// <param name="cacheKey">添加到缓存的变量</param>

    /// <param name="commandParameters">一个将要添加到缓存的sql参数集合</param>
    public static void CacheParameters(string cacheKey, params MySqlParameter[] commandParameters)

    {

        parmCache[cacheKey] = commandParameters;

    }

    /// <summary>

    /// 找回缓存参数集合

    /// </summary>

    /// <param name="cacheKey">用于找回参数的关键字</param>

    /// <returns>缓存的参数集合</returns>
    public static MySqlParameter[] GetCachedParameters(string cacheKey)

    {

        MySqlParameter[] cachedParms = (MySqlParameter[])parmCache[cacheKey];

        if (cachedParms == null)

            return null;

        MySqlParameter[] clonedParms = new MySqlParameter[cachedParms.Length];

        , j = cachedParms.Length; i < j; i++)

            clonedParms[i] = (MySqlParameter)((ICloneable)cachedParms[i]).Clone();

        return clonedParms;

    }

    /// <summary>

    /// 准备执行一个命令

    /// </summary>

    /// <param name="cmd">sql命令</param>

    /// <param name="conn">OleDb连接</param>

    /// <param name="trans">OleDb事务</param>

    /// <param name="cmdType">命令类型例如 存储过程或者文本</param>

    /// <param name="cmdText">命令文本,例如:Select * from Products</param>

    /// <param name="cmdParms">执行命令的参数</param>
    private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, CommandType cmdType, string cmdText, MySqlParameter[] cmdParms)

    {

        if (conn.State != ConnectionState.Open)

            conn.Open();

        cmd.Connection = conn;

        cmd.CommandText = cmdText;

        if (trans != null)

            cmd.Transaction = trans;

        cmd.CommandType = cmdType;

        if (cmdParms != null)

        {

            foreach (MySqlParameter parm in cmdParms)

                cmd.Parameters.Add(parm);

        }

    }

}

MySqlHelper里面的方法和SqlHelper差不多,就不一一说明了。

除此之外引用DBUTILITY类库也是一个很好的选择,DBUTILITY.DLL是一个集成SQLHELPER、MYSQLHELPER以及ORACLEHELPER等众多数据库操作类的类库,添加引用后就可以直接调用其中方法对数据库进行查询、编辑等操作,十分的方便。

3.配置你的MYSQL数据库链接字符串如下:

//数据库连接字符串
public static string Conn = "Database='数据库名';Data Source='数据库服务器地址';User Id='数据库用户名';Password='密码';charset='utf8';pooling=true";

由于PHPMYADMIN相当于一个小型网站,因此在你的数据库连接中还要设置下PHPMYADMIN编码charset='utf8'

4.以上准备工作完成后,就可以通过调用MySQLHelper类里面的方法来对MYSQL数据库进行操作了,这些方法的用法也与SqlHelper类似。

dgv.DataSource=MySqlHelper.GetDataSet(MySqlHelper.Conn, CommandType.Text, ].DefaultView;

执行MySql查询后得到结果:

对应的MySql数据库中的数据:

C#访问和操作MYSQL数据库的更多相关文章

  1. SQL Server connect to MySQL SQL Server通过LinkServer访问MySQL数据库,并操作mysql数据库代码

    SQL Server 中需要访问MySQL的数据,可以通过调用MySQL的ODBC驱动,在SQL Server中添加LinkServer的方式实现. 1.从MySQL网站下载最新的MySQL ODBC ...

  2. PHP操作MySQL数据库5个步骤

    PHP操作MySQL数据库一般可分为5个步骤:1.连接MySQL数据库服务器:2.选择数据库:3.执行SQL语句:4.关闭结果集:5断开与MySQL数据库服务器连接. 1.用mysql_connect ...

  3. Code First操作Mysql数据库

    前面博客也讲了,自己做一个网站,选用的是MVC+EF Code First+MySql+EasyUI,先说下技术选型.一.为什么选择MVC? 因为之前自己做的系统大部分是webForm,MVC的之前也 ...

  4. Java 操作MySql数据库

    Java 项目开发中数据库操作是很重要的一个方面,对于初学者来说,MySql是比较容易熟悉的一种常见数据库,这篇文章记录了如何用Java来操作MySql数据库. 第一章 JDBC的概念 JDBC(Ja ...

  5. php笔记08:数据库编程---使用php的MySQL扩展库操作MySQL数据库

    1.使用php的MySQL扩展库操作MySQL数据库: php有3种方式操作MySQL数据库 (1)mysql扩展库 (2)mysqli扩展库 (3)pdo     mysql扩展库与mysql数据库 ...

  6. python【第十二篇下】操作MySQL数据库以及ORM之 sqlalchemy

    内容一览: 1.Python操作MySQL数据库 2.ORM sqlalchemy学习 1.Python操作MySQL数据库 2. ORM sqlachemy 2.1 ORM简介 对象关系映射(英语: ...

  7. 原生Jdbc操作Mysql数据库开发步骤

    原生Jdbc操作Mysql数据库开发步骤 原生的Jdbc就是指,不使用任何框架,仅用java.sql包下的方法实现数据库查询等的操作. 下面是开发步骤:        1.导入数据库驱动包       ...

  8. .NET Core Dapper操作mysql数据库

    前言 现在ORM盛行,市面上已经出现了N款不同的ORM套餐了.今天,我们不谈EF,也不聊神马黑马,就说说 Dapper.如何在.NET Core中使用Dapper操作Mysql数据库呢,让我们跟随镜头 ...

  9. ASP.NET Core使用EF Core操作MySql数据库

    ASP.NET Core操作MySql数据库, 这样整套环境都可以布署在Linux上 使用微软的 Microsoft.EntityFrameworkCore(2.1.4) 和MySql出的 MySql ...

随机推荐

  1. Linux 平台和 Windows平台下 Unicode与UTF-8互转

    Windows: unsigned char * make_utf8_string(const wchar_t *unicode) { , index = , out_index = ; unsign ...

  2. 高精度加法--C++

    高精度加法--C++ 仿照竖式加法,在第一步计算的时候将进位保留,第一步计算完再处理进位.(见代码注释) 和乘法是类似的. #include <iostream> #include < ...

  3. .net转PHP从零开始-配置visual studio 2013 PHP开发环境php for visual studio

    作为一个.net开发者,一直在visual studio这款强大的编辑器宠爱下,其他编辑器都不会用,也用着不熟练.最近这不是转php吗,使用php编辑器很不爽,觉得还是用visual studio舒服 ...

  4. 第十七次ScrumMeeting博客

    第十七次ScrumMeeting博客 本次会议于12月7日(四)22时整在3公寓725房间召开,持续20分钟. 与会人员:刘畅.辛德泰.张安澜.赵奕.方科栋. 1. 每个人的工作(有Issue的内容和 ...

  5. 四则运算 SPEC 20160911

    本文档随时可能修改,并且没有另行通知. 请确保每一次在开始修改你的代码前,读标题中的日期,如果晚于你上次阅读, 请重读一次. 教师节你去探望初中数学老师,她感叹你当年真是个优秀学生啊,从来不报怨作 业 ...

  6. djbc

    jdbc:mysql://localhost:3306:test这句里面分如下解析:jdbc:mysql:// 是指JDBC连接方式:localhost: 是指你的本机地址:3306 SQL数据库的端 ...

  7. Notes of Daily Scrum Meeting(12.18)

    前期落下的进度我们会在周六周日赶一下,在编译课程设计中期测试之后集中处理项目中的问题. 今天的任务总结如下: 团队成员 今日团队工作 陈少杰 调试后端连接的部分,寻找bug 王迪 测试搜索功能,修改b ...

  8. 《Linux内核设计与实现》第五周读书笔记——第十一章

    <Linux内核设计与实现>第五周读书笔记——第十一章 20135301张忻 估算学习时间:共2.5小时 读书:2.0 代码:0 作业:0 博客:0.5 实际学习时间:共3.0小时 读书: ...

  9. Daily Scrum - 11/30

    Meeting Minutes 现在有以下一些问题需要解决: 1.保存用户背诵情况的文件输出出了一些问题. 2.UWP开发Debug不太方便啊.老刘说他来加一个Log模块. 3.用户数据的同步有点麻烦 ...

  10. 浅谈个人对存储区域网络SAN的理解

    存储区域网络SAN,是一种通过将网络存储设备和服务器连接起来的网络,提供计算机和存储设备间的数据传输.其中,SAN是独立于服务器系统之外的,拥有近乎无限的存储能力,通过利用光纤作为传输媒介,实现了高速 ...