C# 如何使用MySQL.Data工具库连接到MySQL数据库

MySql
57
MySQL
数据库
MySQL.Data

C# 如何使用MySQL.Data工具库连接到MySQL数据库

这里以Visual Studio 2017为例? NuGet程序包(N) 中查找 MySql.Data 然后在结果页进行安装 如图

C# 如何使用MySQL.Data工具库连接到MySQL数据库

使用方法 和微软的SqlHelper帮助类 基本一致 比如连接数据库 可以像下面这样

stringconnetStr = "server=127.0.0.1;user=root;password=123; database=test;";
MySqlConnection conn = new MySqlConnection(connetStr);
conn.Open();//打开通道,建立连接

和sql 的用法基本一致 也可以直接使用 MySQL操作帮助类 提供一个 MySQL操作帮助类方法 使用很方便

public abstract class MySqlHelper
    {
        //数据库连接字符串
        public static string Conn = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString.ToString();
        /// 
        /// 给定连接的数据库用假设参数执行一个sql命令(不返回数据集)
        /// 
        /// 一个有效的连接字符串
        /// 命令类型(存储过程, 文本, 等等)
        /// 存储过程名称或者sql命令语句
        /// 执行命令所用参数的集合
        /// 执行命令所影响的行数
        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;
            }
        }
        /// 
        /// 用现有的数据库连接执行一个sql命令(不返回数据集)
        /// 
        /// 一个现有的数据库连接
        /// 命令类型(存储过程, 文本, 等等)
        /// 存储过程名称或者sql命令语句
        /// 执行命令所用参数的集合
        /// 执行命令所影响的行数
        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;
        }
        /// 
        ///使用现有的SQL事务执行一个sql命令(不返回数据集)
        /// 
        /// 
        ///举例:
        /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", 
		new MySqlParameter("@prodid", 24));
        /// 
        /// 一个现有的事务
        /// 命令类型(存储过程, 文本, 等等)
        /// 存储过程名称或者sql命令语句
        /// 执行命令所用参数的集合
        /// 执行命令所影响的行数
        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;
        }
        /// 
        /// 用执行的数据库连接执行一个返回数据集的sql命令
        /// 
        /// 
        /// 举例:
        /// MySqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, 
		"PublishOrders", new MySqlParameter("@prodid", 24));
        /// 
        /// 一个有效的连接字符串
        /// 命令类型(存储过程, 文本, 等等)
        /// 存储过程名称或者sql命令语句
        /// 执行命令所用参数的集合
        /// 包含结果的读取器
        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;
            }
        }
        /// 
        /// 返回DataSet
        /// 
        /// 一个有效的连接字符串
        /// 命令类型(存储过程, 文本, 等等)
        /// 存储过程名称或者sql命令语句
        /// 执行命令所用参数的集合
        /// 
        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;
            }
        }
        /// 
        /// 用指定的数据库连接字符串执行一个命令并返回一个数据集的第一列
        /// 
        /// 
        /// 
        ///一个有效的连接字符串
        /// 命令类型(存储过程, 文本, 等等)
        /// 存储过程名称或者sql命令语句
        /// 执行命令所用参数的集合
        /// 用 Convert.To{Type}把类型转换为想要的 
        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;
            }
        }
        /// 
        /// 用指定的数据库连接执行一个命令并返回一个数据集的第一列
        /// 
        /// 
        /// 例如:
        /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", 
		new MySqlParameter("@prodid", 24));
        /// 
        /// 一个存在的数据库连接
        /// 命令类型(存储过程, 文本, 等等)
        /// 存储过程名称或者sql命令语句
        /// 执行命令所用参数的集合
        /// 用 Convert.To{Type}把类型转换为想要的 
        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;
        }
        /// 
        /// 准备执行一个命令
        /// 
        /// sql命令
        /// OleDb连接
        /// OleDb事务
        /// 命令类型例如 存储过程或者文本
        /// 命令文本,例如:Select * from Products
        /// 执行命令的参数
        public 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);
            }
        }
    }
SqlServer数据库服务手动操作重启后长时间显示(正在恢复)
 C# 实现连接Orcle数据库 无需安装客户端
【MySQL】SQLSTATE[HY000] [2002] Connection refused 数据库链接失败的解决办法
暂无相关内容...
暂无相关内容...
免责声明 部分转载分享内容若侵犯您的权益,还请 邮件联系 侵删