分层开发:数据连接助手类

c# 胡碧玉

      开发项目时,应用程序需要与数据库相连接,对数据库中的数据进行操作处理,而其中的操作的方法有3种:command.ExecuteScalar()、command.ExecuteReader()、command.ExecuteNonQueryr(),根据是否有参数3种方法又分别有两个重载;详细如下:分组开发,该类的代码可直接复制粘贴使用,又由于方法都是静态方法,再用类名.方法名()调用即可

   /// <summary>

    /// 数据连接助手类

    /// </summary>

    public class DBHelper

    {

        //连接字符串(只读)

        private static readonly string  st = "Data Source=.;Initial Catalog=shinichikudo;Persist Security Info=True;User ID=sa;Password=zc";

//连接字符串,可在:数据连接-属性-连接字符串处复制,再修改password(密码),即可连接数据库

        //数据库连接对象(只读)

        private static  SqlConnection cons

        {

            get

            {

                SqlConnection cons = new SqlConnection(st);//实例化连接对象

                cons.Open();//连接对象打开数据库

                return cons;//返回连接对象

            }

        }

        /// <summary>

        /// 执行查询操作,返回第一行第一列的数据

        /// </summary>

        /// <param name="sql">select count(*)语句</param>

        /// <param name="para">参数</param>

        /// <returns>返回第一行第一列的数据</returns>

        public static object getScalar(string sql, SqlParameter[] para)//command.ExecuteScalar()方法,有用户输入参数,获取的是第一行第一列的数据

        {

            SqlConnection con = null;

            SqlCommand com = null;

            try

            {

                con = cons;//接收连接对象

                com = new SqlCommand(sql, con);//实例化操作对象

                if (para != null)//如果参数不为null,将参数传入sql语句

                {

                    com.Parameters.AddRange(para);//将参数传入sql语句

                }

                return com.ExecuteScalar();//返回command.ExecuteScalar()方法的对象,注意返回的对象类型为object类型

            }

            catch (Exception e)//异常处理

            {

                Console.WriteLine(e.Message);//输出异常信息

                return null;//异常时将command.ExecuteScalar()方法返回值设为null

            }

            finally

            {

                if (com!=null)//关闭操作对象

                {

                    if (com.Connection.State == ConnectionState.Open || com.Connection.State == ConnectionState.Broken)

                    {

                        com.Connection.Close();

                    }

                }

                if (con != null)//关闭连接对象

                {

                    con.Close();

                }

            }

        }

        /// <summary>

        /// 统计班级人数

        /// </summary>

        /// <returns>返回第一行第一列的数据:总人数</returns>

        public static object getScalar(string sql)//重载command.ExecuteScalar()方法,没有有用户输入参数,获取的是第一行第一列的数据

        {

            return getScalar(sql,null);//执行上面的command.ExecuteScalar(string sql, SqlParameter[] para)方法,自行将参数设置为null,注意返回的对象类型为object类型

        }

        /// <summary>

        /// 执行增、删、改操作,返回受影响行数

        /// </summary>

        /// <param name="sql">insert delete update</param>

        /// <param name="pa"></param>

        /// <returns>返回受影响行数:int</returns>

        public static int getExecuteNonQuery(string sql,SqlParameter[]pa)//command.ExecuteNonQuery()方法,有用户输入参数,获取的是受影响的行数:适用与增、删、改操作

        {

            SqlConnection con = null;

            SqlCommand com = null;

            try

            {

                con = cons;//接收连接对象

                com = new SqlCommand(sql, con);//实例化操作对象

                if (pa != null)//如果参数不为null,将参数传入sql语句

                {

                    com.Parameters.AddRange(pa);//将参数传入sql语句

                }

                return com.ExecuteNonQuery();//返回command.ExecuteNonQuery()方法的对象,注意返回的对象类型为int类型,获取的是受影响的行数:适用与增、删、改操作

            }

            catch (Exception e)//异常处理

            {

                Console.WriteLine(e.Message);//输出异常信息

                return -1;//异常时将command.ExecuteNonQuery()方法返回值设为-1

            }

            finally

            {

                if (com != null)//关闭操作对象

                {

                    if (com.Connection.State == ConnectionState.Open || com.Connection.State == ConnectionState.Broken)

                    {

                        com.Connection.Close();

                    }

                }

                if (con != null)//关闭连接对象

                {

                    con.Close();

                }

            }

        }

        /// <summary>

        /// 执行增、删、改操作,返回受影响行数

        /// </summary>

        /// <param name="sql">insert delete update</param>

        /// <param name="pa"></param>

        /// <returns>返回受影响行数:int</returns>

        public static int getExecuteNonQuery(string sql)//重载command.ExecuteNonQuery()方法,没有有用户输入参数,获取的是受影响的行数

        {

            return getExecuteNonQuery(sql,null);//执行上面的command.ExecuteNonQuery(string sql,SqlParameter[]pa)方法,自行将参数设置为null,注意返回的对象类型为int类型

        }

        /// <summary>

        /// 查询所有信息,返回多行信息SqlDataReader类型

        /// </summary>

        /// <param name="sql">select</param>

        /// <param name="pa"></param>

        /// <returns>返回多行信息:SqlDataReader对象</returns>

        public static SqlDataReader getExecuteReader(string sql, SqlParameter[] pa)//command.tExecuteReader()方法,有用户输入参数,获取的是多行信息(SqlDataReader类型)

        {

            SqlConnection con = null;

            SqlCommand com = null;

            try

            {

                con = cons;//接收连接对象

                com = new SqlCommand(sql, con);//实例化操作对象

                if (pa != null)//如果参数不为null,将参数传入sql语句

                {

                    com.Parameters.AddRange(pa);//将参数传入sql语句

                }

                return com.ExecuteReader(CommandBehavior.CloseConnection);

                //返回command.ExecuteReader()方法的对象,注意返回的对象类型为SqlDataReader类型,获取的是多行信息

                //注意command.ExecuteReader()方法的关闭是用枚举CommandBehavior.CloseConnection属性,程序会自行判断,当command.ExecuteReader()方法阅读完所有信息时将所有对象关闭(包括读取对象,连接对象,操作对象)

            }

            catch (Exception e)//异常处理

            {

                Console.WriteLine(e.Message);//输出异常信息

                return null;//异常时将command.ExecuteReader()方法方法返回值设为null

            }

            

        }

        /// <summary>

        /// 查询所有信息,返回多行信息SqlDataReader类型

        /// </summary>

        /// <param name="sql">select</param>

        /// <param name="pa"></param>

        /// <returns>返回多行信息:SqlDataReader对象</returns>

        public static SqlDataReader getExecuteReader(string sql)//重载command.ExecuteReader()方法,没有有用户输入参数,获取的是多行信息

        {

            return getExecuteReader(sql,null);//执行上面的command.ExecuteReader(string sql,SqlParameter[]pa)方法,自行将参数设置为null,注意返回的对象类型为SqlDataReader类型

        }

    }

还能输出{{restrictNumber}}个字符  
  • {{reply.author}}

    {{CommonUtil.formateDate(reply.ac_CommentDate).shortTime}}
  • 回复了{{Comments.author}} :