zoukankan      html  css  js  c++  java
  • 公布下我的数据库操作层

    本着代码公开的一些精神,今天把我自己封装的ADO数据库操作层公共出来给大家看看

    此类是Sqlserver的操作类,同时数据错误处理要主要是前台的样式。

    public class Connection
        {
           /// <summary>
           /// 获取连接对象
           /// </summary>
           /// <param name="ConnectionString">连接字符串</param>
           /// <returns>连接对象</returns>
           public static SqlConnection getConnection(string ConnectionString) 
           {
               SqlConnection conn = new SqlConnection(ConnectionString);
               return conn;
           }
    
           /// <summary>
           /// 开启数据库链接
           /// </summary>
           /// <param name="conn">链接对象</param>
           public static void openConnection(SqlConnection conn)
           {
               if (conn.State != System.Data.ConnectionState.Connecting)
               {
                   closeConnection(conn);//如果是打开的 就关闭他
               }
               conn.Open();
           }
    
           /// <summary>
           /// 关闭数据库链接
           /// </summary>
           /// <param name="conn">连接对象</param>
           public static void closeConnection(SqlConnection conn)
           {
    
               if (conn.State != System.Data.ConnectionState.Connecting)
               {
                   conn.Close();
               }
    
           }
        }

    Command类,用于构造command对象 
    public class Command
        {
            /// <summary>
            /// 构建Command 
            /// </summary>
            /// <param name="cmdType">执行的类型 执行存储过程或者SQL语句</param>
            /// <param name="CommandText">执行的SQL或者存储过程的名称</param>
            /// <param name="CommandTimeout">等待时间</param>
            /// <param name="conn">数据库链接对象</param>
            /// <param name="parameters">参数 </param>
            /// <returns>SqlCommand</returns>
            public static SqlCommand getCommand(CommandType cmdType, string CommandText,int CommandTimeout, SqlConnection conn, params SqlParameter[] parameters)
            {
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = conn;
                cmd.CommandType = cmdType;
                cmd.CommandText = CommandText;
                if (CommandTimeout > 0)
                {
                    cmd.CommandTimeout = CommandTimeout;
                }
    
                if (parameters != null)//如果参数不为空
                {
                    foreach (SqlParameter para in parameters)//循环参数
                    {
                        cmd.Parameters.Add(para);//添加参数
                    }
                }
                return cmd;
    
           }
    
            /// <summary>
            /// 构建Command 
            /// </summary>
            /// <param name="cmdType">执行的类型 执行存储过程或者SQL语句</param>
            /// <param name="CommandText">执行的SQL或者存储过程的名称</param>
            /// <param name="conn">数据库链接对象</param>
            /// <param name="parameters">参数 </param>
            /// <returns>SqlCommand</returns>
            public static SqlCommand getCommand(CommandType cmdType, string CommandText, SqlConnection conn, params SqlParameter[] parameters) 
            {
               return getCommand(cmdType, CommandText, 5000, conn, parameters);
            }
    
    
            /// <summary>
            /// 构建Command(执行Sql语句的)
            /// </summary>
            /// <param name="CommandText">执行的SQL或者存储过程的名称</param>
            /// <param name="conn">数据库链接对象</param>
            /// <param name="parameters">参数 </param>
            /// <returns>SqlCommand</returns>
            public static SqlCommand getCommand( string CommandText, SqlConnection conn, params SqlParameter[] parameters)
            {
                return getCommand(CommandType.Text, CommandText, 5000, conn, parameters);
            }
    
        }


     DbHelperSQL类,用于执行方法

    public class DbHelperSQL
        {
            private static readonly string constr = ConfigurationSettings.AppSettings["connstring"];//得到数据库联接(判断是什么联接)       
            /// <summary>
            /// 执行查询类型的SQL或者存储过程
            /// </summary>
            /// <param name="ProcedureName">SQL语句或者存储过程名称</param>
            /// <param name="CmdType">执行的类型SQL或者存储过程</param>
            /// <param name="parameters">SQL参数或者存储过程参数</param>
            /// <returns>DataSet数据集合</returns>
            private static DataSet SqlServerQuery(string ProcedureName, CommandType CmdType,params SqlParameter[] parameters) 
            {
                SqlConnection conn=null;
                SqlCommand cmd=null;
                DataSet ds = null;
                SqlDataAdapter ada=null;
                try
                {
                    conn= Connection.getConnection(constr);//得到连接对象
                    cmd = Command.getCommand(CmdType, ProcedureName, 0, conn, parameters);//得到Command对象
                    Connection.openConnection(conn);//打开连接
                    ada = new SqlDataAdapter();
                    ada.SelectCommand = cmd; //设置参数
                    ds = new DataSet();
                    ada.Fill(ds); //填充数据
                    Connection.closeConnection(conn);//关闭连接
                    return ds; 
                }catch(Exception ex)
                {
                    System.Web.HttpContext.Current.Response.Write(DataException.getDataException(ProcedureName,constr,ex.Message,parameters));//抛到前台显示出来
                    //后期可以添加写入 日志的功能
                    System.Web.HttpContext.Current.Response.End();
                }
                return ds;
    
            }
    
            /// <summary>
            /// 执行操作类型的SQL或者存储过程
            /// </summary>
            /// <param name="ProcedureName">SQL语句或者存储过程名称</param>
            /// <param name="CmdType">执行的类型SQL或者存储过程</param>
            /// <param name="parameters">SQL参数或者存储过程参数</param>
            /// <returns>受影响的行数</returns>
            private static int SqlServerExecute(string ProcedureName, CommandType CmdType, params SqlParameter[] parameters) 
            {
                SqlConnection conn = null;
                SqlCommand cmd = null;
                int falge = -1;
    
                try
                {
                    conn = Connection.getConnection(constr);//得到连接对象
                    cmd = Command.getCommand(CmdType, ProcedureName, 0, conn, parameters);//得到Command对象
                    Connection.openConnection(conn);//打开连接
                    falge = cmd.ExecuteNonQuery();
                    Connection.closeConnection(conn);//关闭连接
                    return falge;
                  
                }
                catch (SqlException ex)
                {
                    System.Web.HttpContext.Current.Response.Write(DataException.getDataException(ProcedureName, constr, ex.Message, parameters));//抛到前台显示出来
                    //后期可以添加写入 日志的功能
                    System.Web.HttpContext.Current.Response.End();
                }
                return falge;
            }
    
    
    
            /// <summary>
            /// 执行的SQL或者存储过程返回第一行第一列的值
            /// </summary>
            /// <param name="ProcedureName">SQL语句或者存储过程名称</param>
            /// <param name="CmdType">执行的类型SQL或者存储过程</param>
            /// <param name="parameters">SQL参数或者存储过程参数</param>
            /// <returns>返回Object类型第一行第一列的值</returns>
            private static object SqlserverExecuteScalar(string ProcedureName, CommandType CmdType, params SqlParameter[] parameters) 
            {
                SqlConnection conn = null;
                SqlCommand cmd = null;
                object returnValue = -1;
    
                try
                {
                    conn = Connection.getConnection(constr);//得到连接对象
                    cmd = Command.getCommand(CmdType, ProcedureName, 0, conn, parameters);//得到Command对象
                    Connection.openConnection(conn);//打开连接
                    returnValue = cmd.ExecuteScalar();
                    Connection.closeConnection(conn);//关闭连接
                    return returnValue;
    
                }
                catch (Exception ex)
                {
                    System.Web.HttpContext.Current.Response.Write(DataException.getDataException(ProcedureName, constr, ex.Message, parameters));//抛到前台显示出来
                    System.Web.HttpContext.Current.Response.End();
                    //后期可以添加写入 日志的功能
                }
                return returnValue;
    
            }
    
            /// <summary>
            ///执行查询存储过程 
            /// </summary>
            /// <param name="strProcName">存储过程名称</param>
            /// <param name="parameters">存储过程的参数</param>
            /// <param name="TableName">无用的(存储的表的名称)</param>
            /// <returns>DataSet数据集合</returns>
            public static DataSet RunProcedure(string strProcName, SqlParameter[] parameters,string TableName) 
            {
               return SqlServerQuery(strProcName, CommandType.StoredProcedure, parameters);
            }
    
    
    
            /// <summary>
            /// 执行SQL 返回第一列第一行数据
            /// </summary>
            /// <param name="strProcName">SQL语句</param>
            /// <param name="parameters">SQL参数</param>
            /// <returns>Object对象</returns>
            public static object RunSqlScalar(string strProcName, SqlParameter[] parameters) 
            {
                return SqlserverExecuteScalar(strProcName, CommandType.Text, parameters);
            }
    
            /// <summary>
            /// 执行操作类的存储过程
            /// </summary>
            /// <param name="strProcName">存储过程名称</param>
            /// <param name="parameters">存储过程参数</param>
            /// <returns>操作所影响的行数</returns>
            public static int RunProcedure(string strProcName, SqlParameter[] parameters) 
            {
                return SqlServerExecute(strProcName, CommandType.StoredProcedure, parameters);
            }
    
            public static int RunSqlExecute(string strProcName, SqlParameter[] parameters) 
            {
                return SqlServerExecute(strProcName, CommandType.Text, parameters);
            }
            /// <summary>
            /// 返回第一行 第一列
            /// </summary>
            /// <param name="strProcName">存储过程名称</param>
            /// <param name="parameters">存储过程参数</param>
            /// <returns>第一行第一列的值</returns>
            /// 
            public static object RunProcedureScalar(string strProcName, SqlParameter[] parameters) 
            {
               return  SqlserverExecuteScalar(strProcName, CommandType.StoredProcedure, parameters);
            }
            /// <summary>
            /// 执行查询类SQL语句
            /// </summary>
            /// <param name="strSql">SQL语句</param>
            /// <returns>DataSet 数据集合</returns>
            public static DataSet Query(string strSql) 
            {
                return SqlServerQuery(strSql, CommandType.Text, null);
            }
    
        }


     还有一个错误处理的类DataException

    public class DataException
        {
    
            /// <summary>
            /// 添加错误信息
            /// </summary>
            /// <param name="strProcName">执行的SQL或者存储过程名称</param>
            /// <param name="strConnstring">连接语句</param>
            /// <param name="ExceptionText">错误信息</param>
            /// <param name="parameters">SQL或者存储过程参数</param>
            /// <returns>组合好的错误信息</returns>
            public static string getDataException(string strProcName,string strConnstring,string ExceptionText, params SqlParameter[] parameters) 
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("<div style=\"font-size:12px\">");
                sb.Append("数据操作错误:<br/>");
                sb.AppendFormat("<span style='color:red'> 提示错误信息:{0}<span>", ExceptionText);
                sb.AppendFormat("连接字符串为:{0}<br/>",strConnstring);
                sb.AppendFormat("执行的SQL/存储过程名称为:{0}<br/>",strProcName);
                sb.Append("<table style=\"font-size:12px\">");
                if(parameters!=null)
                {
                    foreach (SqlParameter para in parameters)//循环参数
                    {
                        sb.AppendFormat("<tr><td<参数名:</td><td>{0}</td><td> 参数类型:</td><td>{1}</td><td>  参数值:</td><td>{2}</td></tr>", para.ParameterName, para.SqlDbType, para.Value);
                    }
                }
                sb.Append("</table>");
                sb.Append("</div>");
                return sb.ToString();
    
            }
        }


     

  • 相关阅读:
    第2讲——处理数据
    第1讲——用C++写一个程序
    数论18——反演定理(莫比乌斯反演)
    数论17——反演定理(二项式反演)
    数论16——母函数
    数论15——抽屉原理
    数论14——容斥原理
    数论13——康托展开
    com.opensymphony.xwork2.config.ConfigurationManager.addConfigurationProvider
    Tomcat的杂七杂八
  • 原文地址:https://www.cnblogs.com/dingdingmao/p/3146522.html
Copyright © 2011-2022 走看看