自用MySql数据库工具类

需要先在nuget上搜索并安装 MySql.Data 包
复制代码
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;


public class DBUtil
{
    private static string connectstring = "data source=IP地址;database=数据库名;user id=用户名;password=密码;SslMode=None;pooling=true;charset=utf8;";

    public static DataSet GetData(string sql)
    {
        DataSet ds = new DataSet();
        MySqlConnection conn = new MySqlConnection(connectstring);
        try
        {
            conn.Open();
            MySqlDataAdapter da = new MySqlDataAdapter(sql, conn);
            da.Fill(ds);
        }
        catch (Exception ex)
        {

        }
        finally
        {
            conn.Close();
        }
        return ds;
    }

    /// <summary>
    /// 带参数查询
    /// </summary>
    /// <param name="sql"></param>
    /// <param name="dic_args">sql语句中参数前面带@符号</param>
    /// <returns></returns>
    public static DataSet GetData(string sql, Dictionary<string, object> dic_args)
    {
        DataSet ds = new DataSet();
        MySqlConnection conn = new MySqlConnection(connectstring);
        try
        {
            conn.Open();
            MySqlCommand cmd = new MySqlCommand(sql, conn);

            if (dic_args != null && dic_args.Count != 0)
            {
                Dictionary<string, object>.Enumerator it = dic_args.GetEnumerator();
                while (it.MoveNext())
                {
                    cmd.Parameters.AddWithValue(it.Current.Key, it.Current.Value);
                }
            }
            MySqlDataAdapter da = new MySqlDataAdapter(cmd);
            da.Fill(ds);
        }
        catch (Exception ex)
        {

        }
        finally
        {
            conn.Close();
        }

        return ds;
    }

    public class SqlCommandInfo
    {
        public string Sql { get; set; }
        public Dictionary<string, object> Parameters { get; set; } = new Dictionary<string, object>();
    }

    /// <summary>
    /// 执行多条sql语句(带事务)
    /// </summary>
    /// <param name="sql_args"></param>
    public static bool SetData(List<SqlCommandInfo> sql_args)
    {
        MySqlConnection conn = new MySqlConnection(connectstring);
        conn.Open();
        MySqlTransaction tran = conn.BeginTransaction();
        try
        {
            if (sql_args == null || sql_args.Count == 0)
            {
                return false;
            }

            foreach (SqlCommandInfo sql_cmd in sql_args)
            {
                MySqlCommand cmd = new MySqlCommand(sql_cmd.Sql, conn);

                if (sql_cmd.Parameters != null && sql_cmd.Parameters.Count != 0)
                {
                    Dictionary<string, object>.Enumerator it2 = sql_cmd.Parameters.GetEnumerator();
                    while (it2.MoveNext())
                    {
                        cmd.Parameters.AddWithValue(it2.Current.Key, it2.Current.Value);
                    }
                }
                cmd.ExecuteNonQuery();
            }
        }
        catch (Exception ex)
        {
            tran.Rollback();
            conn.Close();
            return false;
        }
        finally
        {
            if (conn.State != ConnectionState.Closed)
            {
                tran.Commit();
                conn.Close();
            }
        }
        return true;
    }
}
复制代码

 

 

posted on   炼金师  阅读(2)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示