161 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			161 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			C#
		
	
	
	
using MySqlConnector;
 | 
						|
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Configuration;
 | 
						|
using System.Data;
 | 
						|
using System.Linq;
 | 
						|
using System.Text;
 | 
						|
using System.Threading.Tasks;
 | 
						|
 | 
						|
namespace CreateAccountBookConsole
 | 
						|
{
 | 
						|
    public class SqlHelper
 | 
						|
    {
 | 
						|
        public static DataSet ExecuteQuery(string sql, params MySqlParameter[] param)
 | 
						|
        {
 | 
						|
            DataSet ds = new DataSet();
 | 
						|
            using (MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["dbConnect"].ConnectionString))
 | 
						|
            {
 | 
						|
                try
 | 
						|
                {
 | 
						|
                    conn.Open();
 | 
						|
 | 
						|
                    using (MySqlCommand cmd = new MySqlCommand(sql, conn))
 | 
						|
                    {
 | 
						|
                        if (param != null)
 | 
						|
                            cmd.Parameters.AddRange(param);
 | 
						|
                        MySqlDataAdapter da = new MySqlDataAdapter(cmd);
 | 
						|
                        da.Fill(ds);
 | 
						|
                        if (param != null)
 | 
						|
                            cmd.Parameters.Clear();
 | 
						|
                        return ds;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                catch (Exception ex)
 | 
						|
                {
 | 
						|
                    throw ex;
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        public static int ExecuteScalar(string sql, params MySqlParameter[] param)
 | 
						|
        {
 | 
						|
            using (MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["dbConnect"].ConnectionString))
 | 
						|
            {
 | 
						|
                try
 | 
						|
                {
 | 
						|
                    conn.Open();
 | 
						|
                    MySqlCommand cmd = new MySqlCommand(sql, conn);
 | 
						|
                    if (param != null)
 | 
						|
                        cmd.Parameters.AddRange(param);
 | 
						|
                    int affectCount = int.Parse(cmd.ExecuteScalar().ToString());
 | 
						|
 | 
						|
                    if (param != null)
 | 
						|
                        cmd.Parameters.Clear();//添加这一句即可解决此问题
 | 
						|
                    return affectCount;
 | 
						|
                }
 | 
						|
                catch (Exception ex)
 | 
						|
                {
 | 
						|
                    throw ex;
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 执行增、删、改的方法
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="sql">预计执行的非SELECT查询语句</param>
 | 
						|
        /// <param name="param">SQL语句中的可变参数</param>
 | 
						|
        /// <returns>返回受影响的行数</returns>
 | 
						|
        public static int ExecuteNonQuery(string sql, params MySqlParameter[] param)
 | 
						|
        {
 | 
						|
            using (MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["dbConnect"].ConnectionString))
 | 
						|
            {
 | 
						|
                try
 | 
						|
                {
 | 
						|
                    conn.Open();
 | 
						|
                    MySqlCommand cmd = new MySqlCommand(sql, conn);
 | 
						|
                    if (param != null)
 | 
						|
                        cmd.Parameters.AddRange(param);
 | 
						|
                    int affectCount = cmd.ExecuteNonQuery();
 | 
						|
                    if (param != null)
 | 
						|
                        cmd.Parameters.Clear();//添加这一句即可解决此问题
 | 
						|
                    return affectCount;
 | 
						|
                }
 | 
						|
                catch (Exception ex)
 | 
						|
                {
 | 
						|
                    throw ex;
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        public static long ExecuteNonQueryAndGetLastInsertedId(string sql, params MySqlParameter[] param)
 | 
						|
        {
 | 
						|
            using (MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["dbConnect"].ConnectionString))
 | 
						|
            {
 | 
						|
                try
 | 
						|
                {
 | 
						|
                    conn.Open();
 | 
						|
                    MySqlCommand cmd = new MySqlCommand(sql, conn);
 | 
						|
                    if (param != null)
 | 
						|
                        cmd.Parameters.AddRange(param);
 | 
						|
                    int affectCount = cmd.ExecuteNonQuery();
 | 
						|
                    if (param != null)
 | 
						|
                        cmd.Parameters.Clear();
 | 
						|
                    return cmd.LastInsertedId;
 | 
						|
                }
 | 
						|
                catch (Exception ex)
 | 
						|
                {
 | 
						|
                    throw ex;
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
        public static bool ExecuteNonQueryList(List<string> sqlList, List<MySqlParameter[]> paramList)
 | 
						|
        {
 | 
						|
            using (MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["dbConnect"].ConnectionString))
 | 
						|
            {
 | 
						|
                try
 | 
						|
                {
 | 
						|
                    conn.Open();
 | 
						|
                    MySqlTransaction transaction = conn.BeginTransaction();
 | 
						|
                    MySqlCommand cmd = conn.CreateCommand();
 | 
						|
                    cmd.Transaction = transaction;
 | 
						|
 | 
						|
                    try
 | 
						|
                    {
 | 
						|
                        for (int i = 0; i < sqlList.Count; i++)
 | 
						|
                        {
 | 
						|
                            cmd.CommandText = sqlList[i];
 | 
						|
                            cmd.Parameters.AddRange(paramList[i]);
 | 
						|
                            cmd.ExecuteNonQuery();
 | 
						|
                            cmd.Parameters.Clear();//添加这一句即可解决此问题
 | 
						|
                        }
 | 
						|
                        transaction.Commit();
 | 
						|
                        return true;
 | 
						|
                    }
 | 
						|
                    catch (Exception ex)
 | 
						|
                    {
 | 
						|
                        //logs.Log.WriteLine("错误原因:" + ex.Message);
 | 
						|
                        try
 | 
						|
                        {
 | 
						|
                            //logs.Log.WriteLine("事物回滚");
 | 
						|
                            transaction.Rollback();//出现错误就回滚...
 | 
						|
                        }
 | 
						|
                        catch (Exception ex1)
 | 
						|
                        {
 | 
						|
                            throw ex1;
 | 
						|
                        }
 | 
						|
                        throw ex;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                catch (Exception ex)
 | 
						|
                {
 | 
						|
                    throw ex;
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |