MysqlHelper

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using MySql.Data.MySqlClient;
using MySql;
using System.Configuration;
using System.Data.SqlClient;
using PwmeasModel;

namespace ClsPublicHelper
{
    public partial class MysqlHelper
    {
        private static string connStr = ConfigurationManager.ConnectionStrings["connstr"].ToString();
        //执行命令方法:insert ,update,delete
        /// <summary>
        /// 执行命令的方法insert ,update,delete
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="ps"></param>
        /// <returns></returns>
        public static int ExecuteNonQury(string sql, params MySqlParameter[] ps)
        {
            using (MySqlConnection conn = new MySqlConnection(connStr))
            {//创建连接对象
                MySqlCommand cmd = new MySqlCommand(sql, conn);//创建conmmand对象
                cmd.Parameters.AddRange(ps);//添加参数
                conn.Open();//打开连接                
                return cmd.ExecuteNonQuery();//执行命令,返回受影响的行数
            }

        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="lastid">最后插入的id值</param>
        /// <param name="ps"></param>
        /// <returns></returns>
        public static int ExecuteNonQury( string sql, out long lastid ,params MySqlParameter[] ps )
        {
            using (MySqlConnection conn = new MySqlConnection(connStr))
            {//创建连接对象
                MySqlCommand cmd = new MySqlCommand(sql, conn);//创建conmmand对象
                cmd.Parameters.AddRange(ps);//添加参数
                conn.Open();//打开连接   
                var Updatenum= cmd.ExecuteNonQuery();
                lastid = cmd.LastInsertedId;
                return Updatenum;//执行命令,返回受影响的行数
            }

        }
        /// <summary>
        /// 获取首行首列值的方法
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="ps"></param>
        /// <returns></returns>

        public static object ExcecuteScalar(string sql, params MySqlParameter[] ps)
        {
            using (MySqlConnection conn = new MySqlConnection(connStr))
            {
                MySqlCommand cmd = new MySqlCommand(sql, conn);
                cmd.Parameters.AddRange(ps);
                conn.Open();
                
                return cmd.ExecuteScalar();
            }
        }
        /// <summary>
        /// //获取结果集
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="ps"></param>
        /// <returns></returns>

        public static DataTable GetDataTaable(string sql, params MySqlParameter[] ps)
        {
            using (MySqlConnection conn = new MySqlConnection(connStr))
            {
                //构造适配器对象
                MySqlDataAdapter adapter = new MySqlDataAdapter(sql, conn);
                DataTable dt = new DataTable();//构造数据表,用于接受查询结果
                adapter.SelectCommand.Parameters.AddRange(ps);//添加参数
                ConnectionState C = conn.State;
                adapter.Fill(dt);//执行结果
                return dt;//返回结果集
               
            }
        }
        public static bool ExcuteTransactionSql( List<string> listSql )
        {
            using (MySqlConnection conn = new MySqlConnection(connStr))
            {
                conn.Open();
                MySqlTransaction transtion = conn.BeginTransaction();
                MySqlCommand cmd = new MySqlCommand();
                cmd.Connection = conn;
                cmd.Transaction = transtion;
                try
                {
                    for (int i = 0; i < listSql.Count; i++)
                    {
                        string sql = listSql[i];
                        if (sql.Trim().Length > 1)
                        {
                            cmd.CommandText = sql;
                            cmd.ExecuteNonQuery();
                        }
                    }
                    transtion.Commit();
                    conn.Close();
                    return true;
                }
                catch (Exception)
                {

                    transtion.Rollback();
                    conn.Close();
                    return false;
                }
            }
        }
        public static  bool ExcuteTransactionSql(List<TransactionModel> sqls )
        {
            List< Dictionary<string, List<MySqlParameter>> >dt = new List<Dictionary<string, List<MySqlParameter>>>();
            using (MySqlConnection conn=new MySqlConnection(connStr))
            {
                conn.Open();
                MySqlTransaction transtion = conn.BeginTransaction();
                MySqlCommand cmd = new MySqlCommand();
                cmd.Connection = conn;
                cmd.Transaction = transtion;
                try
                {
                    for (int i = 0; i < sqls.Count; i++)
                    {
                        var sql = sqls[i].sql;
                        var param = sqls[i].sparam.ToArray();
                        if (sql.Trim().Length > 1)
                        {
                            cmd.CommandText = sql;
                            cmd.Parameters.AddRange(param);
                            cmd.ExecuteNonQuery();
                            cmd.Parameters.Clear();
                        }
                    }
                    transtion.Commit();
                    conn.Close();
                    return true;
                }
                catch (Exception )
                {

                    transtion.Rollback();
                    conn.Close();
                    return false;
                }
            }
        }
        /// <summary>
        /// 大批量数据插入
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="table">数据表</param>
        public static void BulkInsert(  DataTable table )
        {
            if (string.IsNullOrEmpty(table.TableName)) throw new Exception("DataTable.TableName属性不能为空");
            using (SqlBulkCopy bulk = new SqlBulkCopy(connStr))
            {
                bulk.BatchSize = 1000 ;
                bulk.BulkCopyTimeout = 0;
                bulk.DestinationTableName = table.TableName;
                foreach (DataColumn col in table.Columns)
                {
                    bulk.ColumnMappings.Add(col.ColumnName, col.ColumnName);
                }
                bulk.WriteToServer(table);
                bulk.Close();
            }
        }
        public static bool IsConnection(out string ErrStr)
        {
            try
            {
                using (MySqlConnection conn=new MySqlConnection(connStr))
                {
                    conn.Open();
                    ErrStr = null;
                    return true;
                }
            }
            catch (Exception ex)
            {

                ErrStr = ex.ToString();
                return false;
            }
        }
    }
}

public class TransactionModel
    {
        public string sql { get; set; }
        public List<MySqlParameter> sparam
        { get; set; }
    }
posted on 2025-02-26 13:50  每天一点点进步  阅读(9)  评论(0)    收藏  举报