【C#】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:

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数据库中的数据:

绿色通道: 好文要顶 关注我 收藏该文与我联系 

悠游人生
关注 - 1
粉丝 - 82

+加关注

5
1
(请您对文章做出评价)

« 上一篇:【ORACLE】最简便快速Oracle 9i+PLSQL客户端安装
» 下一篇:【C#】C#实现对网站数据的采集和抓取

posted @ 2011-06-16 15:17 悠游人生 阅读(20789) 评论(10) 编辑 收藏

C#访问和操作MYSQL数据库相关推荐

  1. nodejs进入mysql数据库_nodejs简单访问及操作mysql数据库的方法示例

    本文实例讲述了nodejs简单访问及操作mysql数据库的方法.分享给大家供大家参考,具体如下: var mysql = require('mysql'); //调用MySQL模块 mysql模块要安 ...

  2. c# mysql 插入 和 查询_C#访问和操作MYSQL数据库

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

  3. cs通信查询mysql数据库_C#访问和操作MYSQL数据库

    usingSystem;usingSystem.Collections;usingSystem.Configuration;usingMySql.Data;usingMySql.Data.MySqlC ...

  4. mysql 命令行访问_Mysql 命令行模式访问操作mysql数据库操作

    使用环境 在cmd模式下输入 mysql --version (查看mysql安装的版本). 完整的命令可以通过mysql --help来获取. 本测试使用的Mysql版本是mysql5, 本测试使用 ...

  5. mysqlclient==1.3.7对应mysql版本_Python通过MySQLdb访问操作MySQL数据库

    前言 Python支持通过多种方式访问MySQL数据库.可能有些刚入门的朋友们对Python访问MySQL数据库还不是很熟悉,故计划对Python访问MySQL数据库的这几种方式分别作一介绍. 系列第 ...

  6. PHP访问mysql的常用函数,PHP操作MySQL数据库常用函数

    PHP操作MySQL数据库常用函数 php操作mysql数据库,俗称天龙八步: 第一步:连接数据库 第二步:判断连接错误 第三步:选择数据库 第四步:设置字符集 第五步:准备SQL语句 第六步:执行并 ...

  7. mac php 连接mysql数据库_Mac环境下php操作mysql数据库的方法分享

    Mac环境下php操作mysql数据库的方法分享 今天在mac上搭建好了php的环境,我们就把php操作mysql数据库的方法分享给大家,有需要的小伙伴参考下. Mac本地环境搭建 在Mac系统,我们 ...

  8. JAVA通过JDBC连接并操作MySQL数据库

    JAVA通过JDBC连接并操作MySQL数据库 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提 ...

  9. perl mysql 数据推拉_Perl操作Mysql数据库

    1. CGI变量简介 如果你在以前使用过传统的CGI,你应该对"CGI变量"的概念很熟悉. 由这些变量可以取得一些和请求(Request)有关的信息.其中一些来自于 HTTP 请求 ...

最新文章

  1. 卷积神经网络模型可解释性
  2. 什么是m叉树_重型货架是什么?重型仓储货架介绍
  3. Redhat9安装firefox详解
  4. 火狐浏览器下点击a标签时出现虚线的解决方案
  5. css overflow和border-radius一起用 解决圆角和滚动条一起用的问题
  6. 为什么要叫python-为什么要学 Python?
  7. 51Nod 1294 修改数组 —— LIS
  8. 关于__int128高精度运算
  9. oracle solaris 内核 源码,直接安装内核区域
  10. Scrapy添加随机ip
  11. ccs是轮_CCS-船型标准.pdf
  12. STM32学习第三课:STM32 c语言学习基础3(内存操作、指针、结构指针)
  13. 可以声明一个抽象类类型变量_TypeScript系列(二)变量声明和数据类型
  14. 充电和库仑计,charge(bq24161) and coulomb(bq27425)
  15. 端口tagged和untagged详解
  16. Alien Skin Exposure X7调色滤镜插件,RAW后期处理工具
  17. excel双击打不开,但是点击文件里的打开就行
  18. 给大家分享一篇 用Python抓取漫画并制作mobi格式电子书
  19. Java面向对象的主要特征
  20. c语言程序24转换12时间,C语言将24小时制转换为12小时制的方法

热门文章

  1. 洛谷——P1296 奶牛的耳语
  2. 实验3-4 统计字符 (15 分)
  3. Use // eslint-disable-next-line to ignore the next line.解决办法
  4. pycharm OpenCV代码补全失效解决方法
  5. iOS:重识Transform和frame
  6. Unity ToLua 中Update的调用流程
  7. Shell脚本学习-阶段二十七-命令解释一
  8. Shell脚本学习-阶段十六-备份和恢复系统权限
  9. 如何判断飞机的年限_身边没有懂车朋友如何购买二手车?
  10. 《ActionScript 3.0基础教程》——2.2 显示队列概述