`
king_c
  • 浏览: 222673 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C#访问和操作MYSQL数据库

 
阅读更多

这里介绍下比较简单的方式,引用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:

View Code
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];

        for (int i = 0, 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, "select * from wp_posts"null).Tables[0].DefaultView;

执行MySql查询后得到结果:

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

 

 

分享到:
评论

相关推荐

    C#操作mysql数据库的封装类

    C#操作mysql数据库的封装类,带注释,代码完整,适合企业级开发

    C#连接操作MySQL数据库进行添加、修改、删除、查询等操作的演示

    现本着学习的目的,将c#访问操作MySQL数据库进行添加、删除、修改、显示等操作进行梳理。以Visual Studio 2012平台下的示例形式写下来,供以后查看。 一、新建一个Windows 窗体应用程序Test。 如下图所示: 二、...

    C#连接操作MySQL数据库进行添加、修改、删除、查询、批量导入、异步处理等操作的演示代码

    现本着学习的目的,将c#访问操作MySQL数据库进行添加、删除、修改、显示等操作进行梳理。形成代码,以Visual Studio 2012平台下的示例形式写下来,供以后查看。同时实现了数据库查询,BindingSource绑定控件、...

    c# mysql数据库连接池实现

    总之,C#下使用.NET Core 2.1框架和MySQL数据库连接池,能够有效提升应用处理数据库请求的效率。通过配置连接字符串、创建DbContext、设置数据库提供者以及合理使用和配置连接池,开发者可以在保证应用性能的同时,...

    C#操作mysql数据库

    本教程将深入讲解如何使用C#进行MySQL数据库的操作,包括连接、查询、添加、修改和删除数据。 首先,我们需要在C#项目中引入对MySQL的引用。可以使用NuGet包管理器安装`MySql.Data`库,这将提供对MySQL数据库的.NET...

    通过C#连接访问MySQL数据库

    C# 连接访问 MySQL 数据库是指使用 C# 语言连接并操作 MySQL 数据库的过程。下面将详细介绍连接 MySQL 数据库的基本设置流程。 添加引用 首先,需要在 C# 项目中添加 MySQL 数据库的引用。右键点击项目,选择...

    C#调用MySQL数据库(使用MySql.Data.dll连接)

    (1)建立连接: MySqlConnectionsqlCon= new MySqlConnection("Database=...Database=数据库名字,这几个的顺序可以调换,只要对准每个字符串和标识符就好了。 ———————————————— 版权声明:本文为

    C# 连接mysql数据库

    当我们需要在C#应用中与MySQL数据库进行交互时,就需要了解如何在C#中连接和操作MySQL数据库。 首先,为了在C#中连接到MySQL数据库,我们需要一个支持.NET Framework的MySQL驱动程序。在提供的信息中提到了...

    C#连接Mysql数据库的DLL

    MySQL Connector/NET是MySQL官方提供的.NET数据提供者,它实现了ADO.NET接口,使得C#开发者可以方便地使用.NET框架来访问和操作MySQL数据库。这个DLL就是MySQL Connector/NET的一部分,用于在C#应用程序中建立和...

    C#操作Mysql数据库的MySql.Data.dll下载

    MySql.Data.dll是Oracle公司提供的.NET数据访问组件,它使得C#应用程序能够无缝连接并操作MySQL数据库。 首先,我们要理解什么是DLL(Dynamic Link Library)文件。DLL是Windows操作系统中的一个共享库,其中包含了...

    MySQL数据库生成C#实体类工具

    ### MySQL数据库生成C#实体类工具 在软件开发过程中,特别是在使用关系型数据库进行数据持久化操作时,实体类的创建是一项重复性高且容易出错的工作。为了解决这一问题,提高开发效率,出现了一些自动生成实体类的...

    C# .net连接mysql数据库的方法大全

    本篇文章将详细阐述C# .NET连接MySQL数据库的三种主要方法,以及所需的文件和配置。 一、使用MySQL Connector/NET MySQL Connector/NET是MySQL官方提供的.NET数据提供程序,它允许C#应用直接与MySQL数据库进行通信...

    C# MySQL数据库备份还原

    C# MySQL数据库批量备份还原工具是使用C#语言开发的一个数据库备份还原工具,主要用于对MySQL数据库进行批量备份和还原操作。该工具使用了Process类来操作cmd.exe,调用mysqldump.exe来执行备份和还原命令。 知识点...

    ADO.NET C# 连接MySQL数据库的类库 非常好用的哦!

    以上就是使用ADO.NET和MySQLDriverCS驱动在C#中连接MySQL数据库的基本操作。请确保正确引用了MySQLDriverCS的DLL,并根据实际情况调整连接字符串和其他配置。同时,记得遵循最佳实践,如使用using语句来自动管理...

    C# 备份还原mysql数据库示例工具

    本示例工具专注于C# Winform环境下对MySQL数据库的备份与还原功能,为用户提供了一个直观、简便的界面,非常适合初学者和软件集成。接下来,我们将详细讨论相关知识点。 首先,我们来看C#编程语言。C#是由微软开发...

    C#版Oracle数据库通用操作类

    ### C# 版 Oracle 数据库通用操作类解析 在现代软件开发中,数据库操作是必不可少的一部分,而 C# ...总之,`ConnForOracle` 类为 C# 开发者提供了一个强大且灵活的工具,使得数据库操作变得更加简单、安全和高效。

    VS2022(C#)下实现对mysql数据库数据的增删改查

    1. **创建MySQL数据库和表** 在MySQL Server上创建一个新的数据库,例如名为"MyDatabase",然后创建一个表,比如"Employees",包含字段如ID(主键)、Name、Position和Salary。 2. **建立C#项目** 打开VS2022,...

    C#连接MySql数据库的两种方法

    ### C#连接MySql数据库的两种方法 #### 一、使用 MySQLDriverCS 连接 MySQL 数据库 **1. 下载与安装 MySQLDriverCS** 为了使用 MySQLDriverCS 来连接 MySQL 数据库,首先需要下载并安装 MySQLDriverCS。可以从...

    C#连接MySQL数据库代码示例

    总之,这个项目为学习和实践如何在C#应用中与MySQL数据库交互提供了良好的示例,涵盖了连接、查询、插入、更新和删除等基本操作。通过深入理解并运用这些知识,开发者可以构建出高效、可靠的数据库驱动的应用程序。

Global site tag (gtag.js) - Google Analytics