zoukankan      html  css  js  c++  java
  • C# ORM框架

    SQLSUGAR

    http://www.codeisbug.com/Doc/8/1159

    附带mysql工具类,最优使用上面sqlsugar

    using System;
    using System.Collections;
    using System.Collections.Specialized;
    using System.Data;
    using MySql.Data.MySqlClient;
    using System.Configuration;
    using System.Data.Common;
    using System.Collections.Generic;
    using System.Data.SqlClient;
    using System.Text;
    
    namespace  PluginManager.PluginManagerCore
    {
        /// <summary>  
        /// 数据访问抽象基础类  
        /// </summary>  
        public abstract class DbHelperMySQL
        {
            //数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.       
            public static string connectionString = "Server=172.18.131.52;Database=zabbix; User=root;Password=123456;Use Procedure Bodies=false;Charset=utf8;Allow Zero Datetime=True; Pooling=True; Max Pool Size=50;";
            public DbHelperMySQL()
            {
            }
            public enum EffentNextType
            {
                /// <summary>
                        /// 对其他语句无任何影响 
                        /// </summary>
                None,
                /// <summary>
                        /// 当前语句必须为"select count(1) from .."格式,如果存在则继续执行,不存在回滚事务
                        /// </summary>
                WhenHaveContine,
                /// <summary>
                        /// 当前语句必须为"select count(1) from .."格式,如果不存在则继续执行,存在回滚事务
                        /// </summary>
                WhenNoHaveContine,
                /// <summary>
                        /// 当前语句影响到的行数必须大于0,否则回滚事务
                        /// </summary>
                ExcuteEffectRows,
                /// <summary>
                        /// 引发事件-当前语句必须为"select count(1) from .."格式,如果不存在则继续执行,存在回滚事务
                        /// </summary>
                SolicitationEvent
            }
            public class CommandInfo
            {
                public object ShareObject = null;
                public object OriginalData = null;
                event EventHandler _solicitationEvent;
                public event EventHandler SolicitationEvent
                {
                    add
                    {
                        _solicitationEvent += value;
                    }
                    remove
                    {
                        _solicitationEvent -= value;
                    }
                }
                public void OnSolicitationEvent()
                {
                    if (_solicitationEvent != null)
                    {
                        _solicitationEvent(this, new EventArgs());
                    }
                }
                public string CommandText;
                public System.Data.Common.DbParameter[] Parameters;
                public EffentNextType EffentNextType = EffentNextType.None;
                public CommandInfo()
                {
    
                }
                public CommandInfo(string sqlText, SqlParameter[] para)
                {
                    this.CommandText = sqlText;
                    this.Parameters = para;
                }
                public CommandInfo(string sqlText, SqlParameter[] para, EffentNextType type)
                {
                    this.CommandText = sqlText;
                    this.Parameters = para;
                    this.EffentNextType = type;
                }
            }
    
            /// <summary>  
            /// 得到最大值  
            /// </summary>  
            /// <param name="FieldName"></param>  
            /// <param name="TableName"></param>  
            /// <returns></returns>  
            public static int GetMaxID(string FieldName, string TableName)
            {
                string strsql = "select max(" + FieldName + ")+1 from " + TableName;
                object obj = GetSingle(strsql);
                if (obj == null)
                {
                    return 1;
                }
                else
                {
                    return int.Parse(obj.ToString());
                }
            }
            /// <summary>  
            /// 是否存在  
            /// </summary>  
            /// <param name="strSql"></param>  
            /// <returns></returns>  
            public static bool Exists(string strSql)
            {
                object obj = GetSingle(strSql);
                int cmdresult;
                if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                {
                    cmdresult = 0;
                }
                else
                {
                    cmdresult = int.Parse(obj.ToString());
                }
                if (cmdresult == 0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            /// <summary>  
            /// 是否存在(基于MySqlParameter)  
            /// </summary>  
            /// <param name="strSql"></param>  
            /// <param name="cmdParms"></param>  
            /// <returns></returns>  
            public static bool Exists(string strSql, params MySqlParameter[] cmdParms)
            {
                object obj = GetSingle(strSql, cmdParms);
                int cmdresult;
                if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                {
                    cmdresult = 0;
                }
                else
                {
                    cmdresult = int.Parse(obj.ToString());
                }
                if (cmdresult == 0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
    
    
            /// <summary>  
            /// 执行SQL语句,返回影响的记录数  
            /// </summary>  
            /// <param name="SQLString">SQL语句</param>  
            /// <returns>影响的记录数</returns>  
            public static int ExecuteSql(string SQLString)
            {
                using (MySqlConnection connection = new MySqlConnection(connectionString))
                {
                    using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
                    {
                        try
                        {
                            connection.Open();
                            int rows = cmd.ExecuteNonQuery();
                            return rows;
                        }
                        catch (MySql.Data.MySqlClient.MySqlException e)
                        {
                            connection.Close();
                            throw e;
                        }
                    }
                }
            }
    
            public static int ExecuteSqlByTime(string SQLString, int Times)
            {
                using (MySqlConnection connection = new MySqlConnection(connectionString))
                {
                    using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
                    {
                        try
                        {
                            connection.Open();
                            cmd.CommandTimeout = Times;
                            int rows = cmd.ExecuteNonQuery();
                            return rows;
                        }
                        catch (MySql.Data.MySqlClient.MySqlException e)
                        {
                            connection.Close();
                            throw e;
                        }
                    }
                }
            }
    
            /// <summary>  
            /// 执行MySql和Oracle滴混合事务  
            /// </summary>  
            /// <param name="list">SQL命令行列表</param>  
            /// <param name="oracleCmdSqlList">Oracle命令行列表</param>  
            /// <returns>执行结果 0-由于SQL造成事务失败 -1 由于Oracle造成事务失败 1-整体事务执行成功</returns>  
            //public static int ExecuteSqlTran(List<CommandInfo> list, List<CommandInfo> oracleCmdSqlList)
            //{
            //    using (MySqlConnection conn = new MySqlConnection(connectionString))
            //    {
            //        conn.Open();
            //        MySqlCommand cmd = new MySqlCommand();
            //        cmd.Connection = conn;
            //        MySqlTransaction tx = conn.BeginTransaction();
            //        cmd.Transaction = tx;
            //        try
            //        {
            //            foreach (CommandInfo myDE in list)
            //            {
            //                string cmdText = myDE.CommandText;
            //                MySqlParameter[] cmdParms = (MySqlParameter[])myDE.Parameters;
            //                PrepareCommand(cmd, conn, tx, cmdText, cmdParms);
            //                if (myDE.EffentNextType == EffentNextType.SolicitationEvent)
            //                {
            //                    if (myDE.CommandText.ToLower().IndexOf("count(") == -1)
            //                    {
            //                        tx.Rollback();
            //                        throw new Exception("违背要求" + myDE.CommandText + "必须符合select count(..的格式");
            //                        //return 0;  
            //                    }
    
            //                    object obj = cmd.ExecuteScalar();
            //                    bool isHave = false;
            //                    if (obj == null && obj == DBNull.Value)
            //                    {
            //                        isHave = false;
            //                    }
            //                    isHave = Convert.ToInt32(obj) > 0;
            //                    if (isHave)
            //                    {
            //                        //引发事件  
            //                        myDE.OnSolicitationEvent();
            //                    }
            //                }
            //                if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine)
            //                {
            //                    if (myDE.CommandText.ToLower().IndexOf("count(") == -1)
            //                    {
            //                        tx.Rollback();
            //                        throw new Exception("SQL:违背要求" + myDE.CommandText + "必须符合select count(..的格式");
            //                        //return 0;  
            //                    }
    
            //                    object obj = cmd.ExecuteScalar();
            //                    bool isHave = false;
            //                    if (obj == null && obj == DBNull.Value)
            //                    {
            //                        isHave = false;
            //                    }
            //                    isHave = Convert.ToInt32(obj) > 0;
    
            //                    if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)
            //                    {
            //                        tx.Rollback();
            //                        throw new Exception("SQL:违背要求" + myDE.CommandText + "返回值必须大于0");
            //                        //return 0;  
            //                    }
            //                    if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)
            //                    {
            //                        tx.Rollback();
            //                        throw new Exception("SQL:违背要求" + myDE.CommandText + "返回值必须等于0");
            //                        //return 0;  
            //                    }
            //                    continue;
            //                }
            //                int val = cmd.ExecuteNonQuery();
            //                if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == 0)
            //                {
            //                    tx.Rollback();
            //                    throw new Exception("SQL:违背要求" + myDE.CommandText + "必须有影响行");
            //                    //return 0;  
            //                }
            //                cmd.Parameters.Clear();
            //            }
            //            string oraConnectionString = PubConstant.GetConnectionString("ConnectionStringPPC");
            //            bool res = OracleHelper.ExecuteSqlTran(oraConnectionString, oracleCmdSqlList);
            //            if (!res)
            //            {
            //                tx.Rollback();
            //                throw new Exception("执行失败");
            //                // return -1;  
            //            }
            //            tx.Commit();
            //            return 1;
            //        }
            //        catch (MySql.Data.MySqlClient.MySqlException e)
            //        {
            //            tx.Rollback();
            //            throw e;
            //        }
            //        catch (Exception e)
            //        {
            //            tx.Rollback();
            //            throw e;
            //        }
            //    }
            //}
            /// <summary>  
            /// 执行多条SQL语句,实现数据库事务。  
            /// </summary>  
            /// <param name="SQLStringList">多条SQL语句</param>       
            public static int ExecuteSqlTran(List<String> SQLStringList)
            {
                using (MySqlConnection conn = new MySqlConnection(connectionString))
                {
                    conn.Open();
                    MySqlCommand cmd = new MySqlCommand();
                    cmd.Connection = conn;
                    MySqlTransaction tx = conn.BeginTransaction();
                    cmd.Transaction = tx;
                    try
                    {
                        int count = 0;
                        for (int n = 0; n < SQLStringList.Count; n++)
                        {
                            string strsql = SQLStringList[n];
                            if (strsql.Trim().Length > 1)
                            {
                                cmd.CommandText = strsql;
                                count += cmd.ExecuteNonQuery();
                            }
                        }
                        tx.Commit();
                        return count;
                    }
                    catch
                    {
                        tx.Rollback();
                        return 0;
                    }
                }
            }
            /// <summary>  
            /// 执行带一个存储过程参数的的SQL语句。  
            /// </summary>  
            /// <param name="SQLString">SQL语句</param>  
            /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>  
            /// <returns>影响的记录数</returns>  
            public static int ExecuteSql(string SQLString, string content)
            {
                using (MySqlConnection connection = new MySqlConnection(connectionString))
                {
                    MySqlCommand cmd = new MySqlCommand(SQLString, connection);
                    MySql.Data.MySqlClient.MySqlParameter myParameter = new MySql.Data.MySqlClient.MySqlParameter("@content", SqlDbType.NText);
                    myParameter.Value = content;
                    cmd.Parameters.Add(myParameter);
                    try
                    {
                        connection.Open();
                        int rows = cmd.ExecuteNonQuery();
                        return rows;
                    }
                    catch (MySql.Data.MySqlClient.MySqlException e)
                    {
                        throw e;
                    }
                    finally
                    {
                        cmd.Dispose();
                        connection.Close();
                    }
                }
            }
            /// <summary>  
            /// 执行带一个存储过程参数的的SQL语句。  
            /// </summary>  
            /// <param name="SQLString">SQL语句</param>  
            /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>  
            /// <returns>影响的记录数</returns>  
            public static object ExecuteSqlGet(string SQLString, string content)
            {
                using (MySqlConnection connection = new MySqlConnection(connectionString))
                {
                    MySqlCommand cmd = new MySqlCommand(SQLString, connection);
                    MySql.Data.MySqlClient.MySqlParameter myParameter = new MySql.Data.MySqlClient.MySqlParameter("@content", SqlDbType.NText);
                    myParameter.Value = content;
                    cmd.Parameters.Add(myParameter);
                    try
                    {
                        connection.Open();
                        object obj = cmd.ExecuteScalar();
                        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                        {
                            return null;
                        }
                        else
                        {
                            return obj;
                        }
                    }
                    catch (MySql.Data.MySqlClient.MySqlException e)
                    {
                        throw e;
                    }
                    finally
                    {
                        cmd.Dispose();
                        connection.Close();
                    }
                }
            }
            /// <summary>  
            /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)  
            /// </summary>  
            /// <param name="strSQL">SQL语句</param>  
            /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>  
            /// <returns>影响的记录数</returns>  
            public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)
            {
                using (MySqlConnection connection = new MySqlConnection(connectionString))
                {
                    MySqlCommand cmd = new MySqlCommand(strSQL, connection);
                    MySql.Data.MySqlClient.MySqlParameter myParameter = new MySql.Data.MySqlClient.MySqlParameter("@fs", SqlDbType.Image);
                    myParameter.Value = fs;
                    cmd.Parameters.Add(myParameter);
                    try
                    {
                        connection.Open();
                        int rows = cmd.ExecuteNonQuery();
                        return rows;
                    }
                    catch (MySql.Data.MySqlClient.MySqlException e)
                    {
                        throw e;
                    }
                    finally
                    {
                        cmd.Dispose();
                        connection.Close();
                    }
                }
            }
    
            /// <summary>  
            /// 执行一条计算查询结果语句,返回查询结果(object)。  
            /// </summary>  
            /// <param name="SQLString">计算查询结果语句</param>  
            /// <returns>查询结果(object)</returns>  
            public static object GetSingle(string SQLString)
            {
                using (MySqlConnection connection = new MySqlConnection(connectionString))
                {
                    using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
                    {
                        try
                        {
                            connection.Open();
                            object obj = cmd.ExecuteScalar();
                            if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                            {
                                return null;
                            }
                            else
                            {
                                return obj;
                            }
                        }
                        catch (MySql.Data.MySqlClient.MySqlException e)
                        {
                            connection.Close();
                            throw e;
                        }
                    }
                }
            }
            public static object GetSingle(string SQLString, int Times)
            {
                using (MySqlConnection connection = new MySqlConnection(connectionString))
                {
                    using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
                    {
                        try
                        {
                            connection.Open();
                            cmd.CommandTimeout = Times;
                            object obj = cmd.ExecuteScalar();
                            if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                            {
                                return null;
                            }
                            else
                            {
                                return obj;
                            }
                        }
                        catch (MySql.Data.MySqlClient.MySqlException e)
                        {
                            connection.Close();
                            throw e;
                        }
                    }
                }
            }
            /// <summary>  
            /// 执行查询语句,返回MySqlDataReader ( 注意:调用该方法后,一定要对MySqlDataReader进行Close )  
            /// </summary>  
            /// <param name="strSQL">查询语句</param>  
            /// <returns>MySqlDataReader</returns>  
            public static MySqlDataReader ExecuteReader(string strSQL)
            {
                MySqlConnection connection = new MySqlConnection(connectionString);
                MySqlCommand cmd = new MySqlCommand(strSQL, connection);
                try
                {
                    connection.Open();
                    MySqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                    return myReader;
                }
                catch (MySql.Data.MySqlClient.MySqlException e)
                {
                    throw e;
                }
    
            }
            /// <summary>  
            /// 执行查询语句,返回DataSet  
            /// </summary>  
            /// <param name="SQLString">查询语句</param>  
            /// <returns>DataSet</returns>  
            public static DataSet Query(string SQLString)
            {
                using (MySqlConnection connection = new MySqlConnection(connectionString))
                {
                    DataSet ds = new DataSet();
                    try
                    {
                        connection.Open();
                        MySqlDataAdapter command = new MySqlDataAdapter(SQLString, connection);
                        command.Fill(ds, "dataset");
                    }
                    catch (MySql.Data.MySqlClient.MySqlException ex)
                    {
                        throw new Exception(ex.Message);
                    }
                    return ds;
                }
            }
            public static DataSet Query(string SQLString, int Times)
            {
                using (MySqlConnection connection = new MySqlConnection(connectionString))
                {
                    DataSet ds = new DataSet();
                    try
                    {
                        connection.Open();
                        MySqlDataAdapter command = new MySqlDataAdapter(SQLString, connection);
                        command.SelectCommand.CommandTimeout = Times;
                        command.Fill(ds, "ds");
                    }
                    catch (MySql.Data.MySqlClient.MySqlException ex)
                    {
                        throw new Exception(ex.Message);
                    }
                    return ds;
                }
            }
    
    
    
    
            /// <summary>  
            /// 执行SQL语句,返回影响的记录数  
            /// </summary>  
            /// <param name="SQLString">SQL语句</param>  
            /// <returns>影响的记录数</returns>  
            public static int ExecuteSql(string SQLString, params MySqlParameter[] cmdParms)
            {
                using (MySqlConnection connection = new MySqlConnection(connectionString))
                {
                    using (MySqlCommand cmd = new MySqlCommand())
                    {
                        try
                        {
                            PrepareCommand(cmd, connection, null, SQLString, cmdParms);
                            int rows = cmd.ExecuteNonQuery();
                            cmd.Parameters.Clear();
                            return rows;
                        }
                        catch (MySql.Data.MySqlClient.MySqlException e)
                        {
                            throw e;
                        }
                    }
                }
            }
    
    
            /// <summary>  
            /// 执行多条SQL语句,实现数据库事务。  
            /// </summary>  
            /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter[])</param>  
            public static void ExecuteSqlTran(Hashtable SQLStringList)
            {
                using (MySqlConnection conn = new MySqlConnection(connectionString))
                {
                    conn.Open();
                    using (MySqlTransaction trans = conn.BeginTransaction())
                    {
                        MySqlCommand cmd = new MySqlCommand();
                        try
                        {
                            //循环  
                            foreach (DictionaryEntry myDE in SQLStringList)
                            {
                                string cmdText = myDE.Key.ToString();
                                MySqlParameter[] cmdParms = (MySqlParameter[])myDE.Value;
                                PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
                                int val = cmd.ExecuteNonQuery();
                                cmd.Parameters.Clear();
                            }
                            trans.Commit();
                        }
                        catch
                        {
                            trans.Rollback();
                            throw;
                        }
                    }
                }
            }
            /// <summary>  
            /// 执行多条SQL语句,实现数据库事务。  
            /// </summary>  
            /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter[])</param>  
            public static int ExecuteSqlTran(System.Collections.Generic.List<CommandInfo> cmdList)
            {
                using (MySqlConnection conn = new MySqlConnection(connectionString))
                {
                    conn.Open();
                    using (MySqlTransaction trans = conn.BeginTransaction())
                    {
                        MySqlCommand cmd = new MySqlCommand();
                        try
                        {
                            int count = 0;
                            //循环  
                            foreach (CommandInfo myDE in cmdList)
                            {
                                string cmdText = myDE.CommandText;
                                MySqlParameter[] cmdParms = (MySqlParameter[])myDE.Parameters;
                                PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
    
                                if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine)
                                {
                                    if (myDE.CommandText.ToLower().IndexOf("count(") == -1)
                                    {
                                        trans.Rollback();
                                        return 0;
                                    }
    
                                    object obj = cmd.ExecuteScalar();
                                    bool isHave = false;
                                    if (obj == null && obj == DBNull.Value)
                                    {
                                        isHave = false;
                                    }
                                    isHave = Convert.ToInt32(obj) > 0;
    
                                    if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)
                                    {
                                        trans.Rollback();
                                        return 0;
                                    }
                                    if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)
                                    {
                                        trans.Rollback();
                                        return 0;
                                    }
                                    continue;
                                }
                                int val = cmd.ExecuteNonQuery();
                                count += val;
                                if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == 0)
                                {
                                    trans.Rollback();
                                    return 0;
                                }
                                cmd.Parameters.Clear();
                            }
                            trans.Commit();
                            return count;
                        }
                        catch
                        {
                            trans.Rollback();
                            throw;
                        }
                    }
                }
            }
            /// <summary>  
            /// 执行多条SQL语句,实现数据库事务。  
            /// </summary>  
            /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter[])</param>  
            public static void ExecuteSqlTranWithIndentity(System.Collections.Generic.List<CommandInfo> SQLStringList)
            {
                using (MySqlConnection conn = new MySqlConnection(connectionString))
                {
                    conn.Open();
                    using (MySqlTransaction trans = conn.BeginTransaction())
                    {
                        MySqlCommand cmd = new MySqlCommand();
                        try
                        {
                            int indentity = 0;
                            //循环  
                            foreach (CommandInfo myDE in SQLStringList)
                            {
                                string cmdText = myDE.CommandText;
                                MySqlParameter[] cmdParms = (MySqlParameter[])myDE.Parameters;
                                foreach (MySqlParameter q in cmdParms)
                                {
                                    if (q.Direction == ParameterDirection.InputOutput)
                                    {
                                        q.Value = indentity;
                                    }
                                }
                                PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
                                int val = cmd.ExecuteNonQuery();
                                foreach (MySqlParameter q in cmdParms)
                                {
                                    if (q.Direction == ParameterDirection.Output)
                                    {
                                        indentity = Convert.ToInt32(q.Value);
                                    }
                                }
                                cmd.Parameters.Clear();
                            }
                            trans.Commit();
                        }
                        catch
                        {
                            trans.Rollback();
                            throw;
                        }
                    }
                }
            }
            /// <summary>  
            /// 执行多条SQL语句,实现数据库事务。  
            /// </summary>  
            /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter[])</param>  
            public static void ExecuteSqlTranWithIndentity(Hashtable SQLStringList)
            {
                using (MySqlConnection conn = new MySqlConnection(connectionString))
                {
                    conn.Open();
                    using (MySqlTransaction trans = conn.BeginTransaction())
                    {
                        MySqlCommand cmd = new MySqlCommand();
                        try
                        {
                            int indentity = 0;
                            //循环  
                            foreach (DictionaryEntry myDE in SQLStringList)
                            {
                                string cmdText = myDE.Key.ToString();
                                MySqlParameter[] cmdParms = (MySqlParameter[])myDE.Value;
                                foreach (MySqlParameter q in cmdParms)
                                {
                                    if (q.Direction == ParameterDirection.InputOutput)
                                    {
                                        q.Value = indentity;
                                    }
                                }
                                PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
                                int val = cmd.ExecuteNonQuery();
                                foreach (MySqlParameter q in cmdParms)
                                {
                                    if (q.Direction == ParameterDirection.Output)
                                    {
                                        indentity = Convert.ToInt32(q.Value);
                                    }
                                }
                                cmd.Parameters.Clear();
                            }
                            trans.Commit();
                        }
                        catch
                        {
                            trans.Rollback();
                            throw;
                        }
                    }
                }
            }
            /// <summary>  
            /// 执行一条计算查询结果语句,返回查询结果(object)。  
            /// </summary>  
            /// <param name="SQLString">计算查询结果语句</param>  
            /// <returns>查询结果(object)</returns>  
            public static object GetSingle(string SQLString, params MySqlParameter[] cmdParms)
            {
                using (MySqlConnection connection = new MySqlConnection(connectionString))
                {
                    using (MySqlCommand cmd = new MySqlCommand())
                    {
                        try
                        {
                            PrepareCommand(cmd, connection, null, SQLString, cmdParms);
                            object obj = cmd.ExecuteScalar();
                            cmd.Parameters.Clear();
                            if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                            {
                                return null;
                            }
                            else
                            {
                                return obj;
                            }
                        }
                        catch (MySql.Data.MySqlClient.MySqlException e)
                        {
                            throw e;
                        }
                    }
                }
            }
    
            /// <summary>  
            /// 执行查询语句,返回MySqlDataReader ( 注意:调用该方法后,一定要对MySqlDataReader进行Close )  
            /// </summary>  
            /// <param name="strSQL">查询语句</param>  
            /// <returns>MySqlDataReader</returns>  
            public static MySqlDataReader ExecuteReader(string SQLString, params MySqlParameter[] cmdParms)
            {
                MySqlConnection connection = new MySqlConnection(connectionString);
                MySqlCommand cmd = new MySqlCommand();
                try
                {
                    PrepareCommand(cmd, connection, null, SQLString, cmdParms);
                    MySqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                    cmd.Parameters.Clear();
                    return myReader;
                }
                catch (MySql.Data.MySqlClient.MySqlException e)
                {
                    throw e;
                }
                //          finally  
                //          {  
                //              cmd.Dispose();  
                //              connection.Close();  
                //          }     
    
            }
    
            /// <summary>  
            /// 执行查询语句,返回DataSet  
            /// </summary>  
            /// <param name="SQLString">查询语句</param>  
            /// <returns>DataSet</returns>  
            public static DataSet Query(string SQLString, params MySqlParameter[] cmdParms)
            {
                using (MySqlConnection connection = new MySqlConnection(connectionString))
                {
                    MySqlCommand cmd = new MySqlCommand();
                    PrepareCommand(cmd, connection, null, SQLString, cmdParms);
                    using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
                    {
                        DataSet ds = new DataSet();
                        try
                        {
                            da.Fill(ds, "ds");
                            cmd.Parameters.Clear();
                        }
                        catch (MySql.Data.MySqlClient.MySqlException ex)
                        {
                            throw new Exception(ex.Message);
                        }
                        return ds;
                    }
                }
            }
    
    
            private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, 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 = CommandType.Text;//cmdType;  
                if (cmdParms != null)
                {
    
    
                    foreach (MySqlParameter parameter in cmdParms)
                    {
                        if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
                            (parameter.Value == null))
                        {
                            parameter.Value = DBNull.Value;
                        }
                        cmd.Parameters.Add(parameter);
                    }
                }
            }
    
            /// <summary>
            /// table转json
            /// </summary>
            /// <param name="dt"></param>
            /// <returns></returns>
            public static string DataTableToJson(DataTable dt)
            {
                StringBuilder jsonBuilder = new StringBuilder();
                jsonBuilder.Append("{"Name":"" + dt.TableName + "","Rows");
                jsonBuilder.Append("":[");
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    jsonBuilder.Append("{");
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        jsonBuilder.Append(""");
                        jsonBuilder.Append(dt.Columns[j].ColumnName);
                        jsonBuilder.Append("":"");
                        jsonBuilder.Append(dt.Rows[i][j].ToString().Replace(""", "\""));
                        jsonBuilder.Append("",");
                    }
                    jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                    jsonBuilder.Append("},");
                }
                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                jsonBuilder.Append("]");
                jsonBuilder.Append("}");
                return jsonBuilder.ToString();
            }
            /// <summary>
            /// dataset转Json
            /// </summary>
            /// <param name="ds"></param>
            /// <returns></returns>
            public static string DatasetToJson(DataSet ds)
            {
                StringBuilder json = new StringBuilder();
                json.Append("{"Tables":");
                json.Append("[");
                foreach (DataTable dt in ds.Tables)
                {
                    json.Append(DataTableToJson(dt));
                    json.Append(",");
                }
                json.Remove(json.Length - 1, 1);
                json.Append("]");
                json.Append("}");
                return json.ToString();
            }
    
    
        }
    
    }
  • 相关阅读:
    select、poll和epoll
    Linux 常用命令之文件和目录
    SmartPlant Review 帮助文档机翻做培训手册
    SmartPlant Foundation 基础教程 3.4 菜单栏
    SmartPlant Foundation 基础教程 3.3 标题栏
    SmartPlant Foundation 基础教程 3.2 界面布局
    SmartPlant Foundation 基础教程 3.1 DTC登陆界面
    SmartPlant Foundation 基础教程 1.4 SPF架构
    SmartPlant Foundation 基础教程 1.3 SPF其他功能
    SmartPlant Foundation 基础教程 1.2 SPF集成设计功能
  • 原文地址:https://www.cnblogs.com/zipon/p/11077289.html
Copyright © 2011-2022 走看看