zoukankan      html  css  js  c++  java
  • 一个自定义的C#数据库操作基础类 SqlHelper

    SqlHelper其实是我们自己编写的一个类,使用这个类目的就是让使用者更方便、更安全的对数据库的操作,既
    是除了在SqlHelper类以外的所有类将不用引用对数据库操作的任何类与语句,无须担心数据库的连接与关闭的问题。
    转自:http://blog.csdn.net/dandanzmc/article/details/9345937

    {  
        public class SQLHelper  
        {  
            private string strConn = null;  
            private SqlConnection Conn = null;  
            private SqlCommand Cmd = null;  
            private SqlDataReader Sqlsdr = null;  
            public SQLHelper()  
            {  
                //利用反射连接数据库  
                strConn = ConfigurationManager.ConnectionStrings["strConn"].ConnectionString;  
                //strConn = "data source=192.168.24.83;initial catalog=NewsSystem;user id=sa;password=123456";  
                Conn = new SqlConnection(strConn);  
            }  
      
            /// <summary>  
            /// 状态  
            /// </summary>  
            /// <returns>SqlConnection</returns>  
            private SqlConnection GetConn()  
            {  
                if (Conn.State == ConnectionState.Closed)  
                {  
                    Conn.Open();  
                }  
                return Conn;  
            }  
      
            /// <summary>  
            /// 执行不带参数的增删改操作  
            /// </summary>  
            /// <param name="CmdText">执行的SQL语句或存储过程</param>  
            /// <param name="CmdType">类型</param>  
            /// <returns>增删改的操作数</returns>  
      
            public int ExecuteNonQuery(string CmdText, CommandType CmdType)  
            {  
                //数据库连接语句  
                int res;  
                try  
                {  
                    Cmd = new SqlCommand(CmdText, GetConn());  
                    Cmd.CommandType = CmdType;  
                    res = Cmd.ExecuteNonQuery();  
      
                }  
                catch (Exception ex)  
                {  
      
                    throw ex;  
                }  
                finally  
                {  
                    if (Conn.State == ConnectionState.Open)  
                    {  
                        Conn.Close();  
                    }  
                }  
                return res;  
            }  
      
            /// <summary>  
            /// 执行带参数的增删改操作  
            /// </summary>  
            /// <param name="CmdText">执行的SQL语句或存储过程</param>  
            /// <param name="Parameters">参数</param>  
            /// <param name="CmdType">类型(SQL语句或存储过程)</param>  
            /// <returns>增删改的操作数</returns>  
            public int ExecuteNonQuery(string CmdText, SqlParameter[] Parameters, CommandType CmdType)  
            {  
                int res;  
                try  
                {  
                    Cmd.Parameters.AddRange(Parameters);  
                    Cmd = new SqlCommand(CmdText, GetConn());  
                    Cmd.CommandType = CmdType;  
                    res = Cmd.ExecuteNonQuery();  
                }  
                catch (Exception ex)  
                {  
      
                    throw ex;  
                }  
                finally  
                {  
                    if (Conn.State == ConnectionState.Open)  
                    {  
                        Conn.Close();  
                    }  
                }  
                return res;  
            }  
      
      
            /// <summary>  
            /// 不带参数的查询  
            /// </summary>  
            /// <param name="CmdText">执行的SQL语句或存储过程</param>  
            /// <param name="CmdType">类型</param>  
            /// <returns>查询的数据</returns>  
            public DataTable ExecuteQuery(string CmdText, CommandType CmdType)  
            {  
                DataTable dt = new DataTable();  
      
                using (Sqlsdr = Cmd.ExecuteReader(CommandBehavior.CloseConnection))  
                {  
                    Cmd = new SqlCommand(CmdText, GetConn());  
                    Cmd.CommandType = CmdType;  
                    dt.Load(Sqlsdr);  
                }  
                return dt;  
            }  
      
            /// <summary>  
            /// 带参数的查询  
            /// </summary>  
            /// <param name="CmdText">SQL语句或存储过程</param>  
            /// <param name="Parameters">参数</param>  
            /// <param name="CmdType">类型</param>  
            /// <returns>查询的数据</returns>  
            public DataTable ExecuteQuery(string CmdText, SqlParameter[] Parameters, CommandType CmdType)  
            {  
                DataTable dt = new DataTable();  
      
                using (Sqlsdr = Cmd.ExecuteReader(CommandBehavior.CloseConnection))  
                {  
                    Cmd = new SqlCommand(CmdText, GetConn());  
                    Cmd.CommandType = CmdType;  
                    Cmd.Parameters.AddRange(Parameters);  
                    dt.Load(Sqlsdr);  
                }  
                return dt;  
            }  
        }  
    }
    //该代码片段来自于: http://www.sharejs.com/codes/csharp/8134

    主要运用ExecuteQuery和ExecuteNonQuery方法实现四中不同的访问数据库方式。

    使用Using和Try-----Catch-----Finally

    Using:

           作用一:作为指令,用于为命名空间创建别名或导入其他命名空中定义的类型。

           作用二:作为语句,用于定义一个范围,在借宿后将隐式调用disposable方法释放资源,如同上例。

    Try-----Catch-----Finally:

           在Try中获取并使用资源,Catch中处理异常情况,Finally中释放资源。

  • 相关阅读:
    JS小技巧总汇
    [转贴]聪明人如何拯救你的职业困
    Button按钮多行显示的实现方法
    事件和委托
    支持~
    关于递归
    Android 资源的国际化
    Android 文件的浏览(类似于FileDialog的功能)
    Android 开发TCP、UdP客户端
    Android 为什么现在google不让结束整个程序,只让结束单个Activity(转)
  • 原文地址:https://www.cnblogs.com/wordgao/p/4510961.html
Copyright © 2011-2022 走看看