文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>数据库操作基本方法实现

数据库操作基本方法实现

时间:2010-09-05  来源:linzheng

一、获取数据库连接和基本的信息

1定义接口

namespace Com.Mycompany.Data
{

     public interface IDbSetting
       {
        string ConnectionString
        {
                get;
        }
        DbServerType DbServerType
        {
                get;
        }

        string COID
        {
            get;
        }
        string UserNO
        {
            get;
        }…………

    }
}

2继承接口
namespace Com.Mycompany.Web.WebUI
{

    public class MyDBSetting : IDbSetting
    {

        public MyDBSetting(string language, UserInformation user)
        {

        }

        /// <summary>
        /// 数据连接串
        /// </summary>
        public string ConnectionString
        {
            get
            {
                if (HttpContext.Current.Application["ConnectionString"] == null)
                {
                    if (ConfigurationManager.ConnectionStrings["Conncetion"] == null)
                    {
                        throw new Exception(KDCommon.DataConnectionInfo);
                    }
                    else
                    {
                        HttpContext.Current.Application["ConnectionString"] = ConfigurationManager.ConnectionStrings["Conncetion"].ToString();
                    }
                }
                return HttpContext.Current.Application["ConnectionString"].ToString();
            }
        }

        /// <summary>
        /// 数据库类型
        /// </summary>
        public DbServerType DbServerType
        {
            get
            {
                return DbServerType.SqlServer;
            }
        }

        public string Language
        {
            get
            {
                if (HttpContext.Current.Session["language"] == null)
                {
                    HttpContext.Current.Session["language"] = "zh-chs";
                }
                return HttpContext.Current.Session["language"].ToString(); 
            }
        }

        /// <summary>
        /// 当前公司coid
        /// </summary>
        public string COID
        {
            get
            {
                SessionTimeOut("coid");
                return HttpContext.Current.Session["coid"].ToString(); 
            }
        }
        public string UserNO
        {
            get
            {
                SessionTimeOut("loginuserno");
                return HttpContext.Current.Session["loginuserno"].ToString(); 
            }
        }
…………
    }
}
 3封装接口
namespace Com.Mycompany.Common
{

        public class BaseInfo
        {
                private static IDbSetting s_dbSetting = null;
                public static IDbSetting DbSetting
                {
                        get
                        {
                                return s_dbSetting;
                        }
                                     set
                                    {
                                                 BaseInfo.s_dbSetting = value;
                                     }
                }

                public BaseInfo()
                {

                }
               }
…………
}
  二、数据库基本操作    /// <summary>
 /// 访问数据库对象(辅助工具)
 /// </summary>
 /// <remarks></remarks>
 public sealed class DbUtils
  1、创建连接  
/// <summary>
/// 数据连接串
/// </summary>
        public static string ConnectionString
        {
                get
                {
                        if( _connectionString == null || _connectionString.Length == 0)
                        {
                                return BaseInfo.DbSetting.ConnectionString;
                        }
                        else
                        {
                                return _connectionString;
                        }
                }

                set
                {
                        _connectionString =value;
                }
        }

        /// <summary>
        /// 数据服务器类型
        /// </summary>
        public static DbServerType DbServerType
        {
                get
                {
                        return BaseInfo.DbSetting.DbServerType;
                }
        }

        /// <summary>
        /// 产品id号
        /// </summary>
        public static string COID
        {
            get
            {
                return BaseInfo.DbSetting.COID;
            }
        }

        /// <summary>
        /// IsOverTime
        /// </summary>
        public static bool IsOverTime
        {
            get
            {
                return BaseInfo.DbSetting.IsOverTime;
            }
        }


        /// <summary>
        /// 用户编号
        /// </summary>
        public static string UserNO
        {
            get
            {
                return BaseInfo.DbSetting.UserNO;
            }
        }
…………

 3、执行select查询语句

/// <summary>
        /// 执行查询命令
        /// </summary>
        /// <param name="commandString">Sql命令</param>
        /// <param name="datareader">输出DataReader</param>
        public static void RunSelectCommand(
            string commandString,
            out IDataReader datareader
            )
        {
            RunSelectCommand(null, commandString, out datareader);

        }

                /// <summary>
                /// 执行查询命令
                /// </summary>
                /// <param name="commandString">Sql命令</param>
                /// <param name="datareader">输出DataReader</param>
                public static void RunSelectCommand(
                        string connectionString,
                        string commandString,
                        out IDataReader datareader
                        ) 
                {
                        IDbCommand __command;
                        OleDbConnection conn = GetConnection(connectionString);         
                        __command = new OleDbCommand(commandString, conn);
                        __command.CommandTimeout = 0; //设置等待命令执行的时间为无限期


                        if(__command.Connection.State != ConnectionState.Open)
                        {
                                __command.Connection.Open();
                        }
                        datareader = __command.ExecuteReader(System.Data.CommandBehavior.CloseConnection);

                        __command.Dispose();//释放__command
                        
                }


                /// <summary>
                /// 执行查询命令
                /// </summary>
                /// <param name="commandString">Sql命令</param>
                /// <param name="prams">查询命令参数列表</param>
                /// <param name="datareader">输出数据表</param>
                public static void RunSelectCommand(
                        string commandString,
                        out IDataReader datareader,
                        params IDbDataParameter[] prams
                        ) 
                {
                         RunSelectCommand(null,commandString,out datareader,prams);
                }

        /// <summary>
        /// 处理转义字符
        /// </summary>
        /// <param name="sqlparam">SQL条件的条件</param>
        /// <returns></returns>
        public static string ReplaceSQLEscape(string sqlparam)
        {
            if (sqlparam == null || sqlparam == string.Empty)
                return string.Empty;
           
                sqlparam = sqlparam.Replace("[", "[[]").Replace("_", "[_]").Replace("%", "[%]").Replace("?", "[?]");
            
            return sqlparam;
        }
     
        /// <summary>
        /// 传递连接对象,用于建立临时表的操作,不能每次新建连接对象(否则临时表每次SQL执行完后会自动删除)
        /// </summary>
        /// <param name="commandString">Sql命令</param>
        /// <param name="dataTable">输出数据表</param>
        /// <param name="prams">查询命令参数列表</param>
        public static void RunSelectCommand(
            OleDbConnection conn,
            string commandString,
            out DataTable dataTable,
            params IDbDataParameter[] prams
            )
        {
            IDbDataAdapter __dataadapter;

            DataSet __dataSet;

            __dataadapter = new OleDbDataAdapter(commandString, conn);
            __dataadapter.SelectCommand.CommandTimeout = 0;//设置等待命令执行的时间为无限期

            if (prams != null)
            {
                foreach (IDbDataParameter pram in prams)
                {
                    //if (pram.DbType == DbType.String)
                    //{
                    //    pram.Value = ReplaceSQLEscape(pram.Value);
                    //}
                    __dataadapter.SelectCommand.Parameters.Add(pram);
                }
            }

            __dataSet = new DataSet();
            try
            {
                __dataadapter.Fill(__dataSet);

                dataTable = __dataSet.Tables[0];
            }
            catch (Exception e)
            {
                throw new Exception(commandString, e);
            }

        }

                /// <summary>
                /// 执行查询命令
                /// </summary>
                /// <param name="commandString">Sql命令</param>
                /// <param name="prams">查询命令参数列表</param>
                /// <param name="datareader">输出数据表</param>
                public static void RunSelectCommand(
                        string connectionString,
                        string commandString,
                        out IDataReader datareader,
                        params IDbDataParameter[] prams
                        ) 
                {
                        IDbCommand __command;
                        OleDbConnection conn = GetConnection(connectionString);
                        
                        __command = new OleDbCommand(commandString, conn);
                        __command.CommandTimeout = 0; //设置等待命令执行的时间为无限期

                        if(prams != null)
                        {
                                foreach(IDbDataParameter pram in prams)
                                {
                                        __command.Parameters.Add(pram);
                                }
                        }

                        if(__command.Connection.State != ConnectionState.Open)
                        {
                                __command.Connection.Open();
                        }
                        datareader = __command.ExecuteReader(System.Data.CommandBehavior.CloseConnection);

                        __command.Dispose();
                        
                }
 
 

 4、执行存储过程

           #region RunStoredProcedure without out datatable
                public static void RunStoredProcedure(string procName)
                {
                        RunStoredProcedure(null,procName);
                }       

                public static void RunStoredProcedure(
                        string connString,
                        string procName
                        )
                {
                        using(OleDbConnection conn = GetConnection(connString))
                        {
                                try
                                {
                                        IDbCommand command = conn.CreateCommand();
                                        command.CommandText = procName;
                                        command.CommandType = CommandType.StoredProcedure;
                                        command.CommandTimeout = 0;//设置等待命令执行的时间为无限期

                                        command.ExecuteNonQuery();
                                        command.Dispose();
                                }
                                catch(Exception ex)
                                {
                                        throw new Exception(procName + ":" + ex.Message);
                                }
                                finally
                                {
                                        conn.Dispose();
                                }
                        }
                }

                public static void RunStoredProcedure(
                        string procName,
                        params IDbDataParameter[] paramsArray)
                {
                        RunStoredProcedure(null,procName,paramsArray);
                }

                public static void RunStoredProcedure(
                        string connString,
                        string procName,                        
                        params IDbDataParameter[] paramsArray)
                {
                        using(OleDbConnection conn = GetConnection(connString))
                        {
                                try
                                {
                                        IDbCommand command = conn.CreateCommand();
                                        command.CommandText = procName;
                                        command.CommandType = CommandType.StoredProcedure;
                                        command.CommandTimeout = 0;//设置等待命令执行的时间为无限期

                                        foreach(IDbDataParameter param in paramsArray)
                                        {
                                                command.Parameters.Add(param);
                                        }

                                        command.ExecuteNonQuery();
                                        command.Dispose();
                                }
                                catch(Exception ex)
                                {
                                        throw new Exception(procName + ":" + ex.Message);
                                }
                                finally
                                {
                                        conn.Dispose();
                                }
                        }
                }
                #endregion

                #region RunStoredProcedure with out datatable
                public static void RunStoredProcedure(
                        string procName,
                        out DataTable dataTable)
                {
                        RunStoredProcedure(null,procName,out dataTable);
                }

                public static void RunStoredProcedure(
                        string connString,
                        string procName,                        
                        out DataTable dataTable)
                {
                        OleDbDataAdapter adapter;
                        DataSet dataSet;

                        using(OleDbConnection conn = GetConnection(connString))
                        {
                                try
                                {
                                        dataSet = new DataSet();
                                        IDbCommand command = conn.CreateCommand();
                                        command.CommandText = procName;
                                        command.CommandType = CommandType.StoredProcedure;
                                        command.CommandTimeout = 0;//设置等待命令执行的时间为无限期

                                        adapter = new OleDbDataAdapter((OleDbCommand)command);
                                        adapter.Fill(dataSet);
                                        adapter.Dispose();
                                        command.Dispose();

                                        dataTable = dataSet.Tables[0];
                                }
                                catch(Exception ex)
                                {
                                        throw new Exception(procName + ":" + ex.Message);
                                }
                                finally
                                {
                                        conn.Dispose();
                                }
                        }
                }

                public static void RunStoredProcedure(
                        string procName,
                        out DataTable dataTable,
                        params IDbDataParameter[] paramsArray)
                {
                        RunStoredProcedure(null,procName,out dataTable,paramsArray);
                }

                public static void RunStoredProcedure(
                        string connString,
                        string procName,                        
                        out DataTable dataTable,
                        params IDbDataParameter[] paramsArray)
                {
                        OleDbDataAdapter adapter;
                        DataSet dataSet;
            dataTable = null;
                        using(OleDbConnection conn = GetConnection(connString))
                        {
                                try
                                {
                                        dataSet = new DataSet();
                                        IDbCommand command = conn.CreateCommand();
                                        command.CommandText = procName;
                                        command.CommandType = CommandType.StoredProcedure;
                                        command.CommandTimeout = 0;//设置等待命令执行的时间为无限期

                                        foreach(IDbDataParameter param in paramsArray)
                                        {
                                                command.Parameters.Add(param);
                                        }

                                        adapter = new OleDbDataAdapter((OleDbCommand)command);
                                        adapter.Fill(dataSet);
                                        adapter.Dispose();
                                        command.Dispose();

                    if (dataSet != null && dataSet.Tables.Count > 0)
                    {
                        dataTable = dataSet.Tables[0];
                    }
                                }
                                catch(Exception ex)
                                {
                                        throw new Exception(procName + ":" + ex.Message);
                                }
                                finally
                                {
                                        conn.Dispose();
                                }
                        }
                }
                #endregion

 5、执行sql语句,返回影响数据行

           public static int RunCommand(
                        string commandString,
                        params IDbDataParameter[] prams
                        ) 
                {
                        return RunCommand("",commandString,prams);
                }

        //返回值表示操作影响的记录数
                public static int RunCommand(
                        string connectionString,
                        string commandString,                   
                        params IDbDataParameter[] prams
                        ) 
                {
                        IDbCommand __command;
            int __rtnRowCount = -1;
                        using(OleDbConnection conn = GetConnection(connectionString))
                        {
                                __command = new OleDbCommand(commandString,conn);
                                __command.CommandTimeout = 0; //设置等待命令执行的时间为无限期

                                if(prams != null)
                                {
                                        foreach(IDbDataParameter pram in prams)
                                        {
                                                __command.Parameters.Add(pram);
                                        }
                                }
                                
                                if(__command.Connection.State != ConnectionState.Open)
                                {
                                        __command.Connection.Open();
                                }
                __rtnRowCount = __command.ExecuteNonQuery();

                                __command.Dispose();
                        }

            return __rtnRowCount;

                }


        /// <summary>
        /// 传递连接对象,用于建立临时表的操作,不能每次新建连接对象(否则临时表每次SQL执行完后会自动删除)
        /// </summary>
        /// <param name="conn"></param>
        /// <param name="commandString"></param>
        /// <param name="prams"></param>
        public static int RunCommand(
            OleDbConnection conn,
            string commandString,
            params IDbDataParameter[] prams
            )
        {
            IDbCommand __command;
            int __rtnRowCount = -1;
            __command = new OleDbCommand(commandString, conn);
            __command.CommandTimeout = 0; //设置等待命令执行的时间为无限期

            if (prams != null)
            {
                foreach (IDbDataParameter pram in prams)
                {
                    __command.Parameters.Add(pram);
                }
            }

            if (__command.Connection.State != ConnectionState.Open)
            {
                __command.Connection.Open();
            }
            __rtnRowCount=__command.ExecuteNonQuery();

            __command.Parameters.Clear();

            return __rtnRowCount;

        }

 

 

 

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载