.net 操作数据库实现

来源:互联网 发布:乐乎青年公寓官网 编辑:程序博客网 时间:2024/06/05 17:00


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Data.Common;
using IBM.Data.DB2;
using System.Data;

namespace ConsoleApplication1
{
    /// <summary>
    /// DB链接基类
    /// </summary>
    public abstract class DbConnectionBase
    {
        public DbConnectionBase() { }
        /// <summary>
        /// 数据库链接字符串
        /// </summary>
        protected string m_dbConnStr;
        /// <summary>
        /// 错误代码
        /// </summary>
        protected string m_errMsg;

        public void SetConnectionString(string connStr)
        {
            this.m_dbConnStr = connStr;
        }

        public string GetErrMsg()
        {
            return m_errMsg;
        }

        /// <summary>
        /// 打开数据库链接
        /// </summary>
        public abstract void Open();
        /// <summary>
        ///关闭数据库链接
        /// </summary>
        public abstract void Close();
    }

    /// <summary>
    /// DB2链接适配器,各类数据库链接依照DB2数据库扩展即可
    /// </summary>
    public class Db2Connection:DbConnectionBase
    {
        /// <summary>
        /// 真正起作用的即为该DB2链接
        /// </summary>
        private DB2Connection m_db2Conn;

        public Db2Connection()
        {
            m_db2Conn = new DB2Connection();
        }

        public override void Open()
        {
            try
            {
                //if(string.IsNullOrEmpty(m_dbConnectionString) || string.IsNullOrEmpty(m_dbConnectionString.Trim()))
                //{
                //    m_errMsg = "链接字符串为空";
                //    return;
                //}

                m_db2Conn.ConnectionString = m_dbConnStr;
                m_db2Conn.Open();
            }
            catch(Exception ex)
            {
                m_errMsg = ex.Message;
                m_errMsg += "\n";
                m_errMsg += ex.StackTrace;
            }
        }

        public override void Close()
        {
            m_db2Conn.Close();
        }

        public DB2Connection GetRawConn()
        {
            return m_db2Conn;
        }
    }

    /// <summary>
    /// 数据库链接池基类
    /// </summary>
    /// <typeparam name="TDbConn"></typeparam>
    public abstract class DbConnPool<TDbConn> where TDbConn : DbConnectionBase
    {
        /// <summary>
        /// 数据库链接字符串
        /// </summary>
        protected string m_dbConnStr = string.Empty;
        /// <summary>
        /// 数据库链接池容器
        /// </summary>
        private Stack<TDbConn> m_lstConn = new Stack<TDbConn>();
        /// <summary>
        /// 信号量
        /// </summary>
        private Semaphore m_sem;
        /// <summary>
        /// 链接保活的数量,默认为1个
        /// </summary>
        private int m_keepAliveNum = 1;
        /// <summary>
        /// 连接池支持最大的连接数量
        /// </summary>
        private int m_maxConnNum = 10;
        /// <summary>
        /// 错误信息
        /// </summary>
        protected string m_errMsg;
        /// <summary>
        /// 是否已经初始化标记
        /// </summary>
        private bool m_bInit = false;

        //private static object m_mutex = new object();
        /// <summary>
        /// 初始化锁类
        /// </summary>
        private static object m_iniMutex = new object();

        public string GetErrMsg()
        {
            return m_errMsg;
        }
       
        public void SetDbConnStr(string connStr)
        {
            if (string.IsNullOrEmpty(m_dbConnStr))
            {
                this.m_dbConnStr = connStr;
            }
        }

        public void SetAliveConnNum(int keepAliveNum)
        {
            this.m_keepAliveNum = keepAliveNum;
        }

        public void SetMaxConnNum(int maxNum)
        {
            this.m_maxConnNum = maxNum;
        }

        /// <summary>
        /// 创建打开链接,需要子类实现
        /// </summary>
        /// <returns></returns>
        public abstract TDbConn CreateOpenConn();

        /// <summary>
        /// 初始化
        /// </summary>
        /// <returns></returns>
        public bool Init()
        {
            if (!m_bInit)
            {
                lock (m_iniMutex)
                {
                    if (!m_bInit)
                    {
                        for (int i = 0; i < m_keepAliveNum; i++)
                        {
                            TDbConn dbConn = CreateOpenConn();
                            if (null == dbConn)
                            {
                                m_errMsg = "初始化生成数据库链接失败";
                                return false;
                            }

                            m_lstConn.Push(dbConn);
                        }

                        m_bInit = true;
                        m_sem = new Semaphore(m_maxConnNum, m_maxConnNum);
                        if (null == m_sem)
                        {
                            m_errMsg = "初始化生成数据库链接信号量失败";
                            return false;
                        }
                    }
                }
            }

            return true;
        }

        public TDbConn GetConn()
        {
            try
            {
                if (!Init())
                {
                    return null;
                }
            }
            catch(Exception ex)
            {
                m_errMsg = ex.Message;
                m_errMsg += "\n";
                m_errMsg += ex.StackTrace;
            }

            m_sem.WaitOne();

            if (m_lstConn.Count > 0)
            {
                return m_lstConn.Pop();
            }

            return CreateOpenConn();
        }

        public void PutConn(TDbConn dbConn)
        {
            if (m_lstConn.Count > m_keepAliveNum)
            {
                dbConn.Close();
            }
            else
            {
                m_lstConn.Push(dbConn);
            }
            m_sem.Release();
        }

        public void Dispose()
        {
            while (true)
            {
                TDbConn dbConn = m_lstConn.Pop();
                if (dbConn != null)
                {
                    //Console.WriteLine("关闭释放链接...");
                    dbConn.Close();
                }
                else
                {
                    break;
                }
            }
        }
    }

    /// <summary>
    /// DB2数据库连接池,可以扩展其他数据库连接池
    /// </summary>
    public class Db2ConnPool : DbConnPool<Db2Connection>
    {
        /// <summary>
        /// DB2链接池单例模式
        /// </summary>
        private static Db2ConnPool instance;
        private static object m_mutex = new object();

        private Db2ConnPool(){}

        public static Db2ConnPool GetInstance()
        {
            if (instance == null)
            {
                lock (m_mutex)
                {
                    if (instance == null)
                    {
                        instance = new Db2ConnPool();
                    }
                }
            }

            return instance;
        }

        public override Db2Connection CreateOpenConn()
        {
            Db2Connection dbConn;
            try
            {
                dbConn = new Db2Connection();
                dbConn.SetConnectionString(m_dbConnStr);
                //Console.WriteLine("生成一个新链接了。。。");
                dbConn.Open();
                //Console.WriteLine("链接打开了");
            }
            catch (Exception ex)
            {
                m_errMsg = ex.Message;
                m_errMsg += "\n";
                m_errMsg += ex.StackTrace;
                return null;
            }

            return dbConn;
        }
    }

    #region 注释掉代码
    //public interface IDbConnectionBase
    //{
       
    //}

    //public interface IDbConnPool<TDBConn>
    //{
    //    //bool Init();
    //    //TDBConn CreateOpenConn();
    //    TDBConn GetConn();
    //    void PutConn(TDBConn dbConn);
    //}

    //public interface IDbConn
    //{

    //}

    //public class Db2Connection : DbConnectionBase
    //{
       
    //    public override void Open()
    //    {
    //        throw new NotImplementedException();
    //    }

    //    public override void Close()
    //    {
    //        throw new NotImplementedException();
    //    }
    //}

    //public class Db2ConnPool:IDisposable
    //{
    //    private static Db2ConnPool instance;
    //    private static object m_mutex = new object();
    //    private static object m_iniMutex = new object();
    //    //private List<DB2Connection> m_lstConn;
    //    private Stack<DB2Connection> m_lstConn;
    //    private string m_dbConneStr;
    //    private Semaphore m_sem;
    //    private int m_keepAliveNum;
    //    private int m_maxConnNum;
    //    private bool m_bInit;
    //    private string m_errMsg;

    //    public string GetErrMsg()
    //    {
    //        return m_errMsg;
    //    }

    //    private Db2ConnPool()
    //    {
    //        m_lstConn = new Stack<DB2Connection>();
    //        m_keepAliveNum = 1;
    //        m_maxConnNum = 10;
    //        m_bInit = false;
    //        //m_sem = new Semaphore(m_minConnNum, m_MaxConnNum);
    //    }

    //    public static Db2ConnPool GetInstance()
    //    {
    //        if (instance == null)
    //        {
    //            lock (m_mutex)
    //            {
    //                if (instance == null)
    //                {
    //                    instance = new Db2ConnPool();
    //                }
    //            }
    //        }

    //        return instance;
    //    }

    //    public DB2Connection GetConn()
    //    {
    //        try
    //        {
    //            if (!Init())
    //            {
    //                return null;
    //            }
    //        }
    //        catch
    //        {
    //            return null;
    //        }

    //        m_sem.WaitOne();

    //        if (m_lstConn.Count > 0)
    //        {
    //            return m_lstConn.Pop();
    //        }

    //        return CreateOpenConn();
    //    }

    //    public void PutConn(DB2Connection dbConn)
    //    {
    //        if (m_lstConn.Count > m_keepAliveNum)
    //        {
    //            dbConn.Close();
    //        }
    //        else
    //        {
    //            m_lstConn.Push(dbConn);
    //        }
    //        m_sem.Release();
    //    }

    //    public DB2Connection CreateOpenConn()
    //    {
    //        DB2Connection dbConn;
    //        try
    //        {
    //            dbConn = new DB2Connection();
    //            dbConn.ConnectionString = m_dbConneStr;
    //            //Console.WriteLine("生成一个新链接了。。。");
    //            dbConn.Open();
    //            //Console.WriteLine("链接打开了");
    //        }
    //        catch (Exception ex)
    //        {
    //            m_errMsg = ex.Message;
    //            m_errMsg += "\n";
    //            m_errMsg += ex.StackTrace;
    //            return null;
    //        }

    //        return dbConn;
    //    }

    //    public bool Init()
    //    {
    //        if (!m_bInit)
    //        {
    //            lock (m_iniMutex)
    //            {
    //                if (!m_bInit)
    //                {
    //                    for (int i = 0; i < m_keepAliveNum; i++)
    //                    {
    //                        DB2Connection dbConn = CreateOpenConn();
    //                        if (null == dbConn)
    //                        {
    //                            m_errMsg = "初始化生成数据库链接失败";
    //                            return false;
    //                        }

    //                        m_lstConn.Push(dbConn);
    //                    }

    //                    m_bInit = true;
    //                    m_sem = new Semaphore(m_maxConnNum, m_maxConnNum);
    //                    if (null == m_sem)
    //                    {
    //                        m_errMsg = "初始化生成数据库链接信号量失败";
    //                    }
    //                }
    //            }
    //        }

    //        return true;
    //    }

    //    public void Dispose()
    //    {
    //        while (true)
    //        {
    //            DB2Connection dbConn = m_lstConn.Pop();
    //            if (dbConn != null)
    //            {
    //                //Console.WriteLine("关闭释放链接...");
    //                dbConn.Close();
    //            }
    //            else
    //            {
    //                break;
    //            }
    //        }
    //    }

    //    public void SetDbConnStr(string connStr)
    //    {
    //        this.m_dbConneStr = connStr;
    //    }

    //    public void SetMinConnNum(int keepAliveNum)
    //    {
    //        this.m_keepAliveNum = keepAliveNum;
    //    }

    //    public void SetMaxConnNum(int maxNum)
    //    {
    //        this.m_maxConnNum = maxNum;
    //    }
    //}

    //public abstract class DbManager
    //{
    //    //public abstract DataSet QueryData(string qrySql, Dictionary<string, string> dicInParams);
    //}

    //public interface IDbExcutor<TModel>
    //{
       
    //}

    //public interface IMapper<TModel>
    //{
    //    public List<TModel> Mapper(DB2DataReader reader);
    //}

    //public abstract class DbManager<TModel>
    //{
    //    private IMapper<TModel> m_mapper;
    //    public void SetMapper(IMapper<TModel> mapper)
    //    {
    //        this.m_mapper = mapper;
    //    }

    //    public abstract List<TModel> ExecuteQuery();
    //    public abstract bool ExecuteNonQuery();
    //}

    #endregion

    public class CDb2Parameter
    {
        /// <summary>
        /// 参数名称
        /// </summary>
        public string ParamName { get; set; }
        /// <summary>
        /// 参数大小
        /// </summary>
        public int ParamSzie { get; set; }
        /// <summary>
        /// 参数类型
        /// </summary>
        public DB2Type ParamType { get; set; }
        /// <summary>
        /// 参数值
        /// </summary>
        public object ParamValue { get; set; }

        public CDb2Parameter(string name,int size,DB2Type type,object val)
        {
            this.ParamName = name;
            this.ParamSzie = size;
            this.ParamType = type;
            this.ParamValue = val;
        }
    }

    /// <summary>
    /// DB2输入参数
    /// </summary>
    public class CDB2ExecutorInParam
    {
        /// <summary>
        /// SQL语句
        /// </summary>
        public string CommandText { get; set; }
        /// <summary>
        /// 命令类型
        /// </summary>
        public CommandType CommandType { get; set; }
        ///// <summary>
        ///// 是否返回reader
        ///// </summary>
        //public bool IsRetReader { get; set; }
        ///// <summary>
        ///// 查询数据库Reader
        ///// </summary>
        //public DB2DataReader reader { get; set; }
        /// <summary>
        /// 参数
        /// </summary>
        public List<CDb2Parameter> Params;

        public void AddParameter(string name, DB2Type type, int size,object val)
        {
            if(Params == null)
            {
                Params = new List<CDb2Parameter>();
            }

            Params.Add(new CDb2Parameter(name, size, type, val));
        }
    }

    /// <summary>
    /// DB2输出参数
    /// </summary>
    public class CDB2ExecutorOutParam
    {
        /// <summary>
        /// 错误代码
        /// </summary>
        public int ErrorCode { get; set; }
        /// <summary>
        /// 错误信息
        /// </summary>
        public string ErrorMsg { get; set; }
        /// <summary>
        /// 是否返回reader
        /// </summary>
        public bool IsRetReader { get; set; }
        /// <summary>
        /// 查询数据库Reader
        /// </summary>
        public DB2DataReader Reader { get; set; }
        /// <summary>
        /// DB2操作命令
        /// </summary>
        public DB2Command Command { get; set; }
        /// <summary>
        /// DB2链接
        /// </summary>
        public Db2Connection Db2Conn { get; set; }
        /// <summary>
        /// 更新数据时影响到的行数
        /// </summary>
        public int ChangeRows { get; set; }

        public CDB2ExecutorOutParam()
        {
            Command = new DB2Command();
            ErrorCode = 0;
        }
    }

    public abstract class DBExcutorBase
    {
        /// <summary>
        /// 错误信息
        /// </summary>
        protected string m_errMsg;
        /// <summary>
        /// 链接信息
        /// </summary>
        protected string m_connStr;

        /// <summary>
        /// 获取错误信息
        /// </summary>
        /// <returns></returns>
        public string GetErrMsg()
        {
            return m_errMsg;
        }

        /// <summary>
        /// 设置链接字符串
        /// </summary>
        /// <param name="connStr"></param>
        public void SetConnStr(string connStr)
        {
            this.m_connStr = connStr;
        }

        public abstract CDB2ExecutorOutParam ExecuteQuery(CDB2ExecutorInParam inParam);
        public abstract CDB2ExecutorOutParam ExecuteNonQuery(CDB2ExecutorInParam inParam);
    }

    public class Db2Excutor:DBExcutorBase
    {
        private Db2Excutor() { }
        private static Db2Excutor instance = null;
        private static object m_mutext = new object();

        public static Db2Excutor GetInstance()
        {
            if(instance == null)
            {
                lock(m_mutext)
                {
                    if(instance == null)
                    {
                        instance = new Db2Excutor();
                    }
                }
            }

            return instance;
        }

        public void ReleaseDB2Executor(CDB2ExecutorOutParam outParam)
        {
            if(outParam.IsRetReader)
            {
                outParam.Reader.Close();
                outParam.Reader = null;
            }

            outParam.Command.Parameters.Clear();
            Db2ConnPool.GetInstance().PutConn(outParam.Db2Conn);
            outParam.Db2Conn = null;
        }

        public override CDB2ExecutorOutParam ExecuteQuery(CDB2ExecutorInParam inParam)
        {
            CDB2ExecutorOutParam outParam = new CDB2ExecutorOutParam();
            DB2Command command = outParam.Command;
            Db2ConnPool dbPool = Db2ConnPool.GetInstance();
            dbPool.SetDbConnStr(m_connStr);
            Db2Connection db2Conn = dbPool.GetConn();
            if (db2Conn == null)
            {
                outParam.ErrorCode = -1;
                outParam.ErrorMsg = dbPool.GetErrMsg();
                return outParam;
            }

            outParam.Db2Conn = db2Conn;
            command.Connection = db2Conn.GetRawConn();
            command.CommandType = inParam.CommandType;
            command.CommandText = inParam.CommandText;

            int nLen = inParam.Params.Count;
            for (int i = 0; i < nLen; i++)
            {
                DB2Parameter item = new DB2Parameter(inParam.Params[i].ParamName, inParam.Params[i].ParamType, inParam.Params[i].ParamSzie);
                item.Value = inParam.Params[i].ParamValue;
                command.Parameters.Add(item);
            }

            outParam.IsRetReader = true;
            try
            {
                outParam.Reader = command.ExecuteReader();
            }
            catch (Exception ex)
            {
                m_errMsg = ex.Message;
                m_errMsg += "\n";
                m_errMsg += ex.StackTrace;

                outParam.ErrorCode = -1;
                outParam.ErrorMsg = m_errMsg;
            }

            return outParam;
        }

        public override CDB2ExecutorOutParam ExecuteNonQuery(CDB2ExecutorInParam inParam)
        {
            CDB2ExecutorOutParam outParam = new CDB2ExecutorOutParam();
            DB2Command command = outParam.Command;
            Db2ConnPool dbPool = Db2ConnPool.GetInstance();
            dbPool.SetDbConnStr(m_connStr);
            Db2Connection db2Conn = dbPool.GetConn();
            if (db2Conn == null)
            {
                outParam.ErrorCode = -1;
                outParam.ErrorMsg = dbPool.GetErrMsg();
                return outParam;
            }

            outParam.Db2Conn = db2Conn;
            command.Connection = db2Conn.GetRawConn();
            command.CommandType = inParam.CommandType;
            command.CommandText = inParam.CommandText;

            int nLen = inParam.Params.Count;
            for (int i = 0; i < nLen; i++)
            {
                DB2Parameter item = new DB2Parameter(inParam.Params[i].ParamName, inParam.Params[i].ParamType, inParam.Params[i].ParamSzie);
                item.Value = inParam.Params[i].ParamValue;
                command.Parameters.Add(item);
            }

            int nRes = 0;
            try
            {
                nRes = command.ExecuteNonQuery();
            }
            catch(Exception ex)
            {
                m_errMsg = ex.Message;
                m_errMsg += "\n";
                m_errMsg += ex.StackTrace;

                outParam.ErrorCode = -1;
                outParam.ErrorMsg = m_errMsg;
            }

            outParam.ChangeRows = nRes;
            return outParam;
        }


        //业务层操作
    }


    public class Db2Manager
    {
        public string ExecuteQuery()
        {
            Db2ConnPool dbPool = Db2ConnPool.GetInstance();
            dbPool.SetDbConnStr("Database=calldb;User ID=calldev;Server=99.13.44.70:50020;Password=Cmb@2015;persist security info=true");
            Db2Connection db2Conn = dbPool.GetConn();
            DB2Command command = new DB2Command();
            command.Connection = db2Conn.GetRawConn();
            command.CommandType = CommandType.Text;
            command.CommandText = "select * from msg3.tmpl_struct where ID = @TmplID";
            DB2Parameter[] paras = new DB2Parameter[]
            {
                    new DB2Parameter("@TmplID",DB2Type.Char,32)
            };
            //paras[0] = new DB2Parameter("@TmplID", DB2Type.Char, 32);
            paras[0].Value = "APPZH001";
            command.Parameters.Add(paras[0]);
            DB2DataReader reader = null;
            try
            {
                reader = command.ExecuteReader();
                while (reader.Read())
                {
                    string ID = reader["ID"].ToString();
                    Console.WriteLine("ID:" + ID);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            return "";
        }
    }

    #region 注释掉代码2
    //public class DbConnManager : IDisposable
    //{
    //    private static DbConnManager instance;
    //    private static object m_mutex = new object();
    //    private static object m_iniMutex = new object();
    //    //private List<DB2Connection> m_lstConn;
    //    private Stack<DB2Connection> m_lstConn;
    //    private string m_dbConneStr;
    //    private Semaphore m_sem;
    //    private int m_keepAliveNum;
    //    private int m_maxConnNum;
    //    private bool m_bInit;
    //    private string m_errMsg;

    //    public string GetErrMsg()
    //    {
    //        return m_errMsg;
    //    }

    //    private DbConnManager()
    //    {
    //        m_lstConn = new Stack<DB2Connection>();
    //        m_keepAliveNum = 1;
    //        m_maxConnNum = 10;
    //        m_bInit = false;
    //        //m_sem = new Semaphore(m_minConnNum, m_MaxConnNum);
    //    }

    //    public static DbConnManager GetInstance()
    //    {
    //        if(instance == null)
    //        {
    //            lock(m_mutex)
    //            {
    //                if(instance == null)
    //                {
    //                    instance = new DbConnManager();
    //                }
    //            }
    //        }

    //        return instance;
    //    }

    //    public DB2Connection GetConn()
    //    {
    //        try
    //        {
    //            if (!Init())
    //            {
    //                return null;
    //            }
    //        }
    //        catch
    //        {
    //            return null;
    //        }

    //        m_sem.WaitOne();

    //        if(m_lstConn.Count > 0)
    //        {
    //           return m_lstConn.Pop();
    //        }

    //        return CreateOpenConn();
    //    }

    //    private DB2Connection CreateOpenConn()
    //    {
    //        DB2Connection dbConn;
    //        try
    //        {
    //            dbConn = new DB2Connection(m_dbConneStr);
    //            //Console.WriteLine("生成一个新链接了。。。");
    //            dbConn.Open();
    //            //Console.WriteLine("链接打开了");
    //        }
    //        catch(Exception ex)
    //        {
    //            m_errMsg = ex.Message;
    //            m_errMsg += "\n";
    //            m_errMsg += ex.StackTrace;
    //            return null;
    //        }

    //        return dbConn;
    //    }

    //    public void PutConn(DB2Connection dbConn)
    //    {
    //        if (m_lstConn.Count > m_keepAliveNum)
    //        {
    //            dbConn.Close();
    //        }
    //        else
    //        {
    //            m_lstConn.Push(dbConn);
    //        }
    //        m_sem.Release();
    //    }

    //    private bool Init()
    //    {
    //        if(!m_bInit)
    //        {
    //            lock (m_iniMutex)
    //            {
    //                if(!m_bInit)
    //                {
    //                    for (int i = 0; i < m_keepAliveNum; i++)
    //                    {
    //                        DB2Connection dbConn = CreateOpenConn();
    //                        if(null == dbConn)
    //                        {
    //                            m_errMsg = "初始化生成数据库链接失败";
    //                            return false;
    //                        }

    //                        m_lstConn.Push(dbConn);
    //                    }

    //                    m_bInit = true;
    //                    m_sem = new Semaphore(m_maxConnNum, m_maxConnNum);
    //                    if(null == m_sem)
    //                    {
    //                        m_errMsg = "初始化生成数据库链接信号量失败";
    //                    }
    //                }
    //            }
    //        }

    //        return true;
    //    }

    //    public void SetDbConnStr(string connStr)
    //    {
    //        this.m_dbConneStr = connStr;
    //    }

    //    public void SetMinConnNum(int keepAliveNum)
    //    {
    //        this.m_keepAliveNum = keepAliveNum;
    //    }

    //    public void SetMaxConnNum(int maxNum)
    //    {
    //        this.m_maxConnNum = maxNum;
    //    }

    //    public void Dispose()
    //    {
    //        while (true)
    //        {
    //            DB2Connection dbConn = m_lstConn.Pop();
    //            if (dbConn != null)
    //            {
    //                //Console.WriteLine("关闭释放链接...");
    //                dbConn.Close();
    //            }
    //            else
    //            {
    //                break;
    //            }
    //        }
    //    }
    //}
    #endregion

    class Program
    {
         //Semaphore与AutoResetEvent
        static void Main(string[] args)
        {
            //*********************查询测试*********************
            //string connStr = "Database=calldb;User ID=calldev;Server=99.13.44.70:50020;Password=Cmb@2015;persist security info=true";

            //Db2Excutor db2Excuter = Db2Excutor.GetInstance();
            //db2Excuter.SetConnStr(connStr);

            //CDB2ExecutorInParam inParam = new CDB2ExecutorInParam();
            //inParam.CommandText = "select * from msg3.tmpl_struct where ID = @TmplID";
            //inParam.CommandType = CommandType.Text;
            //inParam.AddParameter("@TmplID", DB2Type.Char, 32, "APPZH001");

            //CDB2ExecutorOutParam db2OutParam = db2Excuter.ExecuteQuery(inParam);
            //if(db2OutParam.ErrorCode < 0)
            //{
            //    Console.WriteLine(db2OutParam.ErrorMsg);
            //    return;
            //}

            //try
            //{
            //    DB2DataReader reader = db2OutParam.Reader;
            //    while (reader.Read())
            //    {
            //        string ID = reader["ID"].ToString();
            //        Console.WriteLine("ID:" + ID);
            //    }
            //}catch(Exception ex)
            //{
            //    Console.WriteLine(ex.Message);
            //    Console.WriteLine("\n");
            //    Console.WriteLine(ex.StackTrace);
            //}

            //db2Excuter.ReleaseDB2Executor(db2OutParam);

            //Console.ReadKey();
            //*************************************************************

            //*********************************更新测试*********************************
            string connStr = "Database=calldb;User ID=calldev;Server=99.13.44.70:50020;Password=Cmb@2015;persist security info=true";

            Db2Excutor db2Excuter = Db2Excutor.GetInstance();
            db2Excuter.SetConnStr(connStr);

            CDB2ExecutorInParam inParam = new CDB2ExecutorInParam();
            inParam.CommandText = "update msg3.tmpl_struct set state=1 where ID = @TmplID";
            inParam.CommandType = CommandType.Text;
            inParam.AddParameter("@TmplID", DB2Type.Char, 32, "APPZH001");

            CDB2ExecutorOutParam db2OutParam = db2Excuter.ExecuteNonQuery(inParam);
            if (db2OutParam.ErrorCode < 0)
            {
                Console.WriteLine(db2OutParam.ErrorMsg);
                return;
            }

            //try
            //{
            //    DB2DataReader reader = db2OutParam.Reader;
            //    while (reader.Read())
            //    {
            //        string ID = reader["ID"].ToString();
            //        Console.WriteLine("ID:" + ID);
            //    }
            //}
            //catch (Exception ex)
            //{
            //    Console.WriteLine(ex.Message);
            //    Console.WriteLine("\n");
            //    Console.WriteLine(ex.StackTrace);
            //}

            db2Excuter.ReleaseDB2Executor(db2OutParam);

            Console.ReadKey();
            //*************************************************************************

            //Db2ConnPool dbManager = Db2ConnPool.GetInstance();
            //dbManager.SetDbConnStr("Database=calldb;User ID=calldev;Server=99.13.44.70:50020;Password=Cmb@2015;persist security info=true");
            //for(int i= 0 ; i < 11 ;i++)
            //{
            //    Console.WriteLine(i.ToString());
            //    DB2Connection db2Conn = dbManager.GetConn();

            //    if (i == 9)
            //    {
            //        dbManager.PutConn(db2Conn);
            //    }

            //    Console.WriteLine(i.ToString()+"end...");
            //}
            //Console.ReadKey();

            //Db2Manager dbManager = new Db2Manager();
            //string ID = dbManager.ExecuteQuery();
            //Console.Write("ID:"+ID);
            Console.ReadKey();
            //try
            //{
            //    DB2Connection conn = new DB2Connection("Database=calldb;User ID=calldev;Server=99.13.44.70:50020;Password=Cmb@2015;persist security info=true");
            //    conn.Open();
            //    Console.WriteLine("连接已经打开...");
            //    conn.Close();
            //    Console.WriteLine("连接已关闭");
            //}
            //catch(Exception ex)
            //{
            //    Console.WriteLine(ex.Message);
            //    Console.WriteLine(ex.StackTrace);
            //}


            //Console.WriteLine("连接上了。。。");
            //Console.ReadLine();
        }
    }
}

原创粉丝点击