服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C#连接MySQL数据库的方法步骤

C#连接MySQL数据库的方法步骤

2023-02-28 14:02熊思宇 C#

最近两天在解决C#连接MySql数据库的问题,通过不同的从网上学习,最终找到了解决的办法,下面这篇文章主要给大家介绍了关于C#连接MySQL数据库的方法步骤,需要的朋友可以参考下

一、需求

C# 使用 MySQL 数据库的情况还是比较少的,大部分使用 Windows 平台一般使用 SQL Server,在两年前我买过100元一年的学生服务器,当时也是买着玩的,装 MySQL 数据库使用起来就非常卡,也不知道为什么,但 SQL Server 操作起来不但不卡,还非常的流畅,但是 SQL Server 安装起来比较麻烦,卸载也容易出问题,尤其是盗版系统,我在工作中,也出现了几次 SQL Server 卸载不了的事,我自己电脑用的正版Win10系统,从没出现这种事。MySQL 和 SQL Server 各有自己的优点,如果非要使用 MySQL,也是可以的,下面就会介绍 C# 如何去调用 MySQL。

 

二、新建 C# 项目

新建一个控制台项目,取名CSharpConnectMySQL

C#连接MySQL数据库的方法步骤

这里我使用的不使用顶级语句

C#连接MySQL数据库的方法步骤

项目创建完成后,如下

namespace CSharpConnectMySQL
{
  internal class Program
  {
      static void Main(string[] args)
      {
          Console.WriteLine("Hello, World!");
      }
  }
}

 

三、MySQL数据库

MySQL 的安装,可以在百度搜一下,这里就不演示了

下面不搞复杂的流程,随便弄点数据,就以 shop 数据库 中的 goods_type 来演示好了。

C#连接MySQL数据库的方法步骤

各位可以自己动手操作一下,数据库和表不一定和我的一样,在后面的 sql 语句中,自己改下就好了。

 

四、MySqlHelper

在使用之前,先安装MySql.Data插件

C#连接MySQL数据库的方法步骤

接着安装System.Data.SqlClient

C#连接MySQL数据库的方法步骤

这样就安装完成了,接下来就是代码了

MySqlHelper.cs

using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpConnectMySQL
{
  public class MySqlHelper
  {
      private static string connstr = "server=127.0.0.1;database=shop;username=root;password=123456;";


      #region 执行查询语句,返回MySqlDataReader

      /// <summary>
      /// 执行查询语句,返回MySqlDataReader
      /// </summary>
      /// <param name="sqlString"></param>
      /// <returns></returns>
      public static MySqlDataReader ExecuteReader(string sqlString)
      {
          MySqlConnection connection = new MySqlConnection(connstr);
          MySqlCommand cmd = new MySqlCommand(sqlString, connection);
          MySqlDataReader myReader = null;
          try
          {
              connection.Open();
              myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
              return myReader;
          }
          catch (System.Data.SqlClient.SqlException e)
          {
              connection.Close();
              throw new Exception(e.Message);
          }
          finally
          {
              if (myReader == null)
              {
                  cmd.Dispose();
                  connection.Close();
              }
          }
      }
      #endregion

      #region 执行带参数的查询语句,返回 MySqlDataReader

      /// <summary>
      /// 执行带参数的查询语句,返回MySqlDataReader
      /// </summary>
      /// <param name="sqlString"></param>
      /// <param name="cmdParms"></param>
      /// <returns></returns>
      public static MySqlDataReader ExecuteReader(string sqlString, params MySqlParameter[] cmdParms)
      {
          MySqlConnection connection = new MySqlConnection(connstr);
          MySqlCommand cmd = new MySqlCommand();
          MySqlDataReader myReader = null;
          try
          {
              PrepareCommand(cmd, connection, null, sqlString, cmdParms);
              myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
              cmd.Parameters.Clear();
              return myReader;
          }
          catch (System.Data.SqlClient.SqlException e)
          {
              connection.Close();
              throw new Exception(e.Message);
          }
          finally
          {
              if (myReader == null)
              {
                  cmd.Dispose();
                  connection.Close();
              }
          }
      }
      #endregion

      #region 执行sql语句,返回执行行数

      /// <summary>
      /// 执行sql语句,返回执行行数
      /// </summary>
      /// <param name="sql"></param>
      /// <returns></returns>
      public static int ExecuteSql(string sql)
      {
          using (MySqlConnection conn = new MySqlConnection(connstr))
          {
              using (MySqlCommand cmd = new MySqlCommand(sql, conn))
              {
                  try
                  {
                      conn.Open();
                      int rows = cmd.ExecuteNonQuery();
                      return rows;
                  }
                  catch (MySql.Data.MySqlClient.MySqlException e)
                  {
                      conn.Close();
                      //throw e;
                      Console.WriteLine(e.Message);
                  }
                  finally
                  {
                      cmd.Dispose();
                      conn.Close();
                  }
              }
          }

          return -1;
      }
      #endregion

      #region 执行带参数的sql语句,并返回执行行数

      /// <summary>
      /// 执行带参数的sql语句,并返回执行行数
      /// </summary>
      /// <param name="sqlString"></param>
      /// <param name="cmdParms"></param>
      /// <returns></returns>
      public static int ExecuteSql(string sqlString, params MySqlParameter[] cmdParms)
      {
          using (MySqlConnection connection = new MySqlConnection(connstr))
          {
              using (MySqlCommand cmd = new MySqlCommand())
              {
                  try
                  {
                      PrepareCommand(cmd, connection, null, sqlString, cmdParms);
                      int rows = cmd.ExecuteNonQuery();
                      cmd.Parameters.Clear();
                      return rows;
                  }
                  catch (System.Data.SqlClient.SqlException E)
                  {
                      throw new Exception(E.Message);
                  }
                  finally
                  {
                      cmd.Dispose();
                      connection.Close();
                  }
              }
          }
      }
      #endregion

      #region 执行查询语句,返回DataSet

      /// <summary>
      /// 执行查询语句,返回DataSet
      /// </summary>
      /// <param name="sql"></param>
      /// <returns></returns>
      public static DataSet GetDataSet(string sql)
      {
          using (MySqlConnection conn = new MySqlConnection(connstr))
          {
              DataSet ds = new DataSet();
              try
              {
                  conn.Open();
                  MySqlDataAdapter DataAdapter = new MySqlDataAdapter(sql, conn);
                  DataAdapter.Fill(ds);
              }
              catch (Exception ex)
              {
                  //throw ex;
                  Console.WriteLine(ex.Message);
              }
              finally
              {
                  conn.Close();
              }
              return ds;
          }
      }
      #endregion

      #region 执行带参数的查询语句,返回DataSet

      /// <summary>
      /// 执行带参数的查询语句,返回DataSet
      /// </summary>
      /// <param name="sqlString"></param>
      /// <param name="cmdParms"></param>
      /// <returns></returns>
      public static DataSet GetDataSet(string sqlString, params MySqlParameter[] cmdParms)
      {
          using (MySqlConnection connection = new MySqlConnection(connstr))
          {
              MySqlCommand cmd = new MySqlCommand();
              PrepareCommand(cmd, connection, null, sqlString, cmdParms);
              using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
              {
                  DataSet ds = new DataSet();
                  try
                  {
                      da.Fill(ds, "ds");
                      cmd.Parameters.Clear();
                  }
                  catch (System.Data.SqlClient.SqlException ex)
                  {
                      throw new Exception(ex.Message);
                  }
                  finally
                  {
                      cmd.Dispose();
                      connection.Close();
                  }
                  return ds;
              }
          }
      }
      #endregion

      #region 执行带参数的sql语句,并返回 object

      /// <summary>
      /// 执行带参数的sql语句,并返回object
      /// </summary>
      /// <param name="sqlString"></param>
      /// <param name="cmdParms"></param>
      /// <returns></returns>
      public static object GetSingle(string sqlString, params MySqlParameter[] cmdParms)
      {
          using (MySqlConnection connection = new MySqlConnection(connstr))
          {
              using (MySqlCommand cmd = new MySqlCommand())
              {
                  try
                  {
                      PrepareCommand(cmd, connection, null, sqlString, cmdParms);
                      object obj = cmd.ExecuteScalar();
                      cmd.Parameters.Clear();
                      if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                      {
                          return null;
                      }
                      else
                      {
                          return obj;
                      }
                  }
                  catch (System.Data.SqlClient.SqlException e)
                  {
                      throw new Exception(e.Message);
                  }
                  finally
                  {
                      cmd.Dispose();
                      connection.Close();
                  }
              }
          }
      }

      #endregion

      /// <summary>
      /// 执行存储过程,返回数据集
      /// </summary>
      /// <param name="storedProcName">存储过程名</param>
      /// <param name="parameters">存储过程参数</param>
      /// <returns>DataSet</returns>
      public static DataSet RunProcedureForDataSet(string storedProcName, IDataParameter[] parameters)
      {
          using (MySqlConnection connection = new MySqlConnection(connstr))
          {
              DataSet dataSet = new DataSet();
              connection.Open();
              MySqlDataAdapter sqlDA = new MySqlDataAdapter();
              sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
              sqlDA.Fill(dataSet);
              connection.Close();
              return dataSet;
          }
      }

      /// <summary>
      /// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)
      /// </summary>
      /// <param name="connection">数据库连接</param>
      /// <param name="storedProcName">存储过程名</param>
      /// <param name="parameters">存储过程参数</param>
      /// <returns>SqlCommand</returns>
      private static MySqlCommand BuildQueryCommand(MySqlConnection connection, string storedProcName,
          IDataParameter[] parameters)
      {
          MySqlCommand command = new MySqlCommand(storedProcName, connection);
          command.CommandType = CommandType.StoredProcedure;
          foreach (MySqlParameter parameter in parameters)
          {
              command.Parameters.Add(parameter);
          }
          return command;
      }

      #region 装载MySqlCommand对象

      /// <summary>
      /// 装载MySqlCommand对象
      /// </summary>
      private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, 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 = CommandType.Text; //cmdType;
          if (cmdParms != null)
          {
              foreach (MySqlParameter parm in cmdParms)
              {
                  cmd.Parameters.Add(parm);
              }
          }
      }
      #endregion

  }
}

connstr 中的配置,根据个人的设置来,也可以写配置文件中。

MySqlHelper 代码基本功能都有,代码不是我写的,我也是复制别人的

 

五、测试

代码

using System.Data;

namespace CSharpConnectMySQL
{
  internal class Program
  {
      static void Main(string[] args)
      {
          string sql = "SELECT * FROM goods_type";
          DataSet dataSet = MySqlHelper.GetDataSet(sql);
          DataTable dt = dataSet.Tables[0];
          if(dt.Rows.Count > 0)
          {
              //打印所有列名
              string columnName = string.Empty;
              for (int i = 0; i < dt.Columns.Count; i++)
              {
                  columnName += dt.Columns[i].ColumnName + " | ";
              }
              Console.WriteLine(columnName);
              Console.WriteLine("-------------------------");

              //打印每一行的数据
              foreach (DataRow row in dt.Rows)
              {
                  string columnStr = string.Empty;
                  foreach (DataColumn column in dt.Columns)
                  {
                      columnStr += row[column] + " | ";
                  }
                  Console.WriteLine(columnStr);
              }
          }

          Console.ReadKey();
      }
  }
}

运行:

C#连接MySQL数据库的方法步骤

这样就 O拉个K

 

总结

到此这篇关于C#连接MySQL数据库的文章就介绍到这了,更多相关C#连接MySQL数据库内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_38693757/article/details/127318838

延伸 · 阅读

精彩推荐
  • C#C# Lambda表达式及Lambda表达式树的创建过程

    C# Lambda表达式及Lambda表达式树的创建过程

    这篇文章主要介绍了C# Lambda表达式及Lambda表达式树的创建过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以...

    zls3669632022-11-02
  • C#c# delegate和event的使用说明

    c# delegate和event的使用说明

    这篇文章主要介绍了c# delegate和event的使用说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    林新发11962022-11-10
  • C#C# 实现简单打印的实例代码

    C# 实现简单打印的实例代码

    C# 实现简单打印的实例代码,需要的朋友可以参考一下...

    C#教程网3642020-12-18
  • C#c# 如何实现代码生成器

    c# 如何实现代码生成器

    这篇文章主要介绍了c# 如何实现代码生成器,帮助大家更好的理解和使用c# 编程语言,感兴趣的朋友可以了解下...

    程序员ken8482022-10-24
  • C#C#3.0使用EventLog类写Windows事件日志的方法

    C#3.0使用EventLog类写Windows事件日志的方法

    这篇文章主要介绍了C#3.0使用EventLog类写Windows事件日志的方法,以简单实例形式分析了C#写windows事件日志的技巧,具有一定参考借鉴价值,需要的朋友可以参考...

    我心依旧5812021-10-22
  • C#C#中的那些常用加密算法

    C#中的那些常用加密算法

    本文主要讲解一下C#常用的那些加密算法,包括MD5加密、SHA1加密、Base64加密、Des加密、RSA加密等,需要的朋友可以参考下...

    kiba5185762022-10-18
  • C#C#实现弹窗提示输入密码

    C#实现弹窗提示输入密码

    这篇文章主要为大家详细介绍了C#实现弹窗提示输入密码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    马儿不吃草10522022-12-26
  • C#C#实现Access通用访问类OleDbHelper完整实例

    C#实现Access通用访问类OleDbHelper完整实例

    这篇文章主要介绍了C#实现Access通用访问类OleDbHelper,结合完整实例形式分析了C#针对access数据库的连接、查询、遍历、分页显示等相关操作技巧,需要的朋友...

    蓝之风7992021-12-27