首页 > 数据库 >Mysql C# MySqlHelper

Mysql C# MySqlHelper

时间:2023-06-11 22:11:19浏览次数:42  
标签:return string using C# sql connection Mysql new MySqlHelper

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


namespace WordWorld
{
    public class MySQLHelper
    {
        private string connectionString;

        public MySQLHelper(string connectionString)
        {
            this.connectionString = connectionString;
        }

        // 执行不返回结果集的SQL语句
        public int ExecuteNonQuery(string sql, params MySqlParameter[] parameters)
        {
            using (MySqlConnection connection = new MySqlConnection(connectionString))
            {
                using (MySqlCommand command = new MySqlCommand(sql, connection))
                {
                    // 添加参数
                    command.Parameters.AddRange(parameters);
                    try
                    {
                        // 打开连接
                        connection.Open();
                        // 执行SQL语句并返回影响行数
                        return command.ExecuteNonQuery();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("发现异常:"+e.Message);
                        return 0;
                    }
                    finally
                    {
                        connection.Close();
                        connection.Dispose();
                    }
                    
                    
                }
            }
        }

        // 执行一个查询,并返回结果集中第一行的第一列
        public object ExecuteScalar(string sql, params MySqlParameter[] parameters)
        {
            using (MySqlConnection connection = new MySqlConnection(connectionString))
            {
                using (MySqlCommand command = new MySqlCommand(sql, connection))
                {
                    // 添加参数
                    command.Parameters.AddRange(parameters);
                    try
                    {
                        // 打开连接
                        connection.Open();
                        // 执行SQL查询并返回第一行第一列的值
                        return command.ExecuteScalar();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("发现异常:" + e.Message);
                        return 0;
                    }
                    finally
                    {
                        connection.Close();
                        connection.Dispose();
                    }
                }
            }
        }  

调用:

// 执行一个查询,并返回结果集
        public DataTable ExecuteQuery(string sql, params MySqlParameter[] parameters)
        {
            using (MySqlConnection connection = new MySqlConnection(connectionString))
            {
                using (MySqlCommand command = new MySqlCommand(sql, connection))
                {
                    // 添加参数
                    command.Parameters.AddRange(parameters);
                    try
                    {
                        // 打开连接
                        connection.Open();
                        // 创建DataAdapter和DataTable对象,并填充数据
                        using (MySqlDataAdapter adapter = new MySqlDataAdapter(command))
                        {
                            DataTable dataTable = new DataTable();
                            adapter.Fill(dataTable);
                            return dataTable;
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("发现异常:" + e.Message);
                        return null;
                    }
                    finally
                    {
                        connection.Close();
                        connection.Dispose();
                    }
                }
            }
        }

        // 执行一个查询,并将结果集映射到一个对象列表
        public List<T> ExecuteQuery<T>(string sql, Func<IDataRecord, T> selector, params MySqlParameter[] parameters)
        {
            using (MySqlConnection connection = new MySqlConnection(connectionString))
            {
                using (MySqlCommand command = new MySqlCommand(sql, connection))
                {
                    // 添加参数
                    command.Parameters.AddRange(parameters);
                    try
                    {
                        // 打开连接
                        connection.Open();
                    // 创建DataReader对象并读取数据,将每行数据映射到对象并添加到列表中
                    using (MySqlDataReader reader = command.ExecuteReader())
                    {
                        List<T> list = new List<T>();
                        while (reader.Read())
                        {
                            list.Add(selector(reader));
                        }
                        return list;
                    }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("发现异常:" + e.Message);
                        return null;
                    }
                    finally
                    {
                        connection.Close();
                        connection.Dispose();
                    }
                }
            }
        }

        // 向数据库中插入数据
        public int Insert(string tableName, Dictionary<string, object> data)
        {
            string[] columns = new string[data.Count];
            object[] values = new object[data.Count];

            int i = 0;
            foreach (KeyValuePair<string, object> item in data)
            {
                // 获取列名和值
                columns[i] = item.Key;
                values[i] = item.Value;
                i++;
            }

            string sql = string.Format("INSERT INTO {0} ({1}) VALUES ({2})", tableName, string.Join(",", columns), "@" + string.Join(",@", columns));

            // 将Dictionary转换为MySqlParameter数组,并执行SQL语句
            return ExecuteNonQuery(sql, ToMySqlParameters(data));
        }

        // 更新数据库中的数据
        public int Update(string tableName, Dictionary<string, object> data, string whereClause = "")
        {
            string[] setValues = new string[data.Count];
            int i = 0;
            foreach (KeyValuePair<string, object> item in data)
            {
                // 获取列名和值
                setValues[i] = string.Format("{0}=@{0}", item.Key);
                i++;
            }

            string sql = string.Format("UPDATE {0} SET {1}", tableName, string.Join(",", setValues));

            if (!string.IsNullOrEmpty(whereClause))
            {
                sql += " WHERE " + whereClause;
            }

            // 将Dictionary转换为MySqlParameter数组,并执行SQL语句
            return ExecuteNonQuery(sql, ToMySqlParameters(data));
        }

        // 删除数据库中的数据
        public int Delete(string tableName, string whereClause = "")
        {
            string sql = string.Format("DELETE FROM {0}", tableName);

            if (!string.IsNullOrEmpty(whereClause))
            {
                sql += " WHERE " + whereClause;
            }

            // 执行SQL语句并返回影响

            return ExecuteNonQuery(sql);
        }
        // 将Dictionary转换为MySqlParameter数组
        private MySqlParameter[] ToMySqlParameters(Dictionary<string, object> data)
        {
            List<MySqlParameter> parameters = new List<MySqlParameter>();

            foreach (KeyValuePair<string, object> item in data)
            {
                parameters.Add(new MySqlParameter("@" + item.Key, item.Value));
            }

            return parameters.ToArray();
        }
    }
}
 

 

标签:return,string,using,C#,sql,connection,Mysql,new,MySqlHelper
From: https://www.cnblogs.com/catyxiao/p/17473728.html

相关文章

  • 【计算机组成原理期末总预习-自顶向下方法】第4-6章 指令系统,CPU,流水线
    第4-6章指令系统,CPU,流水线一、指令系统设计指令结构与设计思想操作码:指定操作类型(操作码长度:固定/可变)源操作数或其地址:一个或多个源操作数所在的地址(操作数来源:主(虚)存/寄存器/I/O端口/指令本身)结果的地址:产生的结果存放何处(目的操作数)(结果地址:主(虚)存/寄......
  • [leetcode第349场周赛]心得
    已经连续4次周赛三题了,再这么下去肯定不行,感觉需要进行自救了。6470. 既不是最小值也不是最大值提示简单1相关企业给你一个整数数组 nums ,数组由 不同正整数 组成,请你找出并返回数组中 任一 既不是 最小值 也不是 最大值 的数字,如果不存在这样的数字,返回 -1 。返回所......
  • Centos7python升级3.6升级到3.11.4
    1.下载安装包并上传到服务器https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tgz2.解压tar-zxfPython-3.11.4.tgz 3.升级升级依赖进入源码目录并编译安装3.1 安装依赖yumgroupinstall"Developmenttools"-yyuminstallzlib-develbzip2-developen......
  • windows 安装docker desktop 报错
    安装docker时报错:JSON字符串无效。(异常来自HRESULT:0x83750007)在Windows.Data.Json.JsonValue.Parse(Stringinput)在CommunityInstaller.InstallWorkflow.SetupBackendModeAndFeatures-----------------------------------------------------------------------......
  • MySql必知必会教程--数据过滤
    selectprod_id,prod_name,prod_pricefromproductswherevend_id=1003andprod_price<=10;输出结果:+---------+----------------+------------+|prod_id|prod_name|prod_price|+---------+----------------+------------+|FB|Birdseed......
  • Centos7安装python
    1.熟悉官网及安装pythonhttps://www.python.org/  安装python1. yum-builddeppython3-y安装依赖:yumgroupinstall"Developmenttools"-yyuminstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-devellibffi-devel-y......
  • Scanner
    Student5_Test/*Scanner类作用就是从键盘接受数据使用方法1.导包(java.util.Scanner)2.创建键盘录入的工具(对象)3.通过这个对象从键盘录入数据Scanner常用构造方法Scanner(InputStreamsource)构造一个新的Scanner,产生从指定输入流扫描的值。构造方法的形参列表......
  • phptrace 是一个用于跟踪 PHP 应用程序性能的工具,可以帮助开发者快速发现性能瓶颈和调
    phptrace是一个用于跟踪PHP应用程序性能的工具,可以帮助开发者快速发现性能瓶颈和调试PHP应用程序。以下是一个使用phptrace的简单案例:1.安装phptrace可以通过以下命令安装phptrace:sudoapt-getinstallphp7.0-devgitclonehttps://github.com/Qihoo360/phptrace.......
  • AtCoder Beginner Contest 305 题解
    https://atcoder.jp/contests/abc305/tasks_printE-ArtGalleryonGraph冷知识:md这题赛时没做出来/cy刚看到题:这是什么题啊,\(K,h\)都\(1e5\)能做吗/fn确实能做。考虑类似SPFA的操作。设\(a_x\)表示\(x\)还可以对距离最多为\(a_x\)的点产生贡献,然后就直接......
  • 黑马mysql问题
    MySQL面试题-文稿面试官:MySQL中,如何定位慢查询?候选人:嗯~,我们当时做压测的时候有的接口非常的慢,接口的响应时间超过了2秒以上,因为我们当时的系统部署了运维的监控系统Skywalking,在展示的报表中可以看到是哪一个接口比较慢,并且可以分析这个接口哪部分比较慢,这里可以看到SQL的......