none
自己学习写的sqlhelp类,请高手找找问题和低效的地方 RRS feed

  • 问题

  • public class SqlHelp
        {
            private SqlConnection connection = null;
            public static readonly string connectionString = ConfigurationManager.ConnectionStrings["GoodsManager"].ToString();

            /// <summary>
            /// 打开连接
            /// </summary>
            /// <returns>sqlconnection</returns>
            private void OpenConnection()
            {
                if (connection.State != ConnectionState.Open)
                    connection.Open();
            }

            /// <summary>
            /// 关闭连接
            /// </summary>
            private void CloseConnection()
            {
                if (connection == null)
                    return;
                if (connection.State == ConnectionState.Open)
                    connection.Close();
            }


            /// <summary>
            /// 执行数据读取
            /// </summary>
            /// <param name="cmdType">CommandType属性</param>
            /// <param name="cmdText">CommandText属性</param>
            /// <param name="commandParameters">参数</param>
            /// <returns>SqlDataReader</returns>
            public SqlDataReader ExecuteReader(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
            {
                connection = new SqlConnection(connectionString);
                SqlCommand comm = new SqlCommand();
                OpenConnection();
                try
                {
                    PrepareCommand(connection, comm, cmdType, cmdText, commandParameters);//对sqlcommand属性进行填充
                    SqlDataReader sdr = comm.ExecuteReader(CommandBehavior.CloseConnection);
                    comm.Parameters.Clear();//清除参数
                    return sdr;
                }
                catch
                {
                    CloseConnection();
                    throw;
                }
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="cmdType">CommandType属性</param>
            /// <param name="cmdText">CommandText属性</param>
            /// <param name="commandParameters">参数</param>
            /// <returns>object</returns>
            public object ExecuteScalar(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
            {
                using (connection = new SqlConnection(connectionString))
                {
                    SqlCommand comm = new SqlCommand();
                    PrepareCommand(connection, comm, cmdType, cmdText, commandParameters);//对sqlcommand属性进行填充
                    OpenConnection();
                    object obj = comm.ExecuteScalar();
                    comm.Parameters.Clear();
                    return obj;
                }

            }
            /// <summary>
            /// 执行对数据库的删改操作
            /// </summary>
            /// <param name="cmdType">CommandType属性</param>
            /// <param name="cmdText">CommandText属性</param>
            /// <param name="commandParameters">参数</param>
            /// <returns>执行情况回执,int</returns>
            public int ExecuteNonQuery(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
            {
                using (connection = new SqlConnection(connectionString))
                {
                    SqlCommand comm = new SqlCommand();
                    PrepareCommand(connection, comm, cmdType, cmdText, commandParameters);//对sqlcommand属性进行填充
                    OpenConnection();
                    int flag = comm.ExecuteNonQuery();
                    comm.Parameters.Clear();//清除参数
                    return flag;
                }

            }

            /// <summary>
            /// 对command属性填充PrepareCommand
            /// </summary>
            /// <param name="cmd">command</param>
            /// <param name="cmdType">CommandType属性</param>
            /// <param name="cmdText">CommandText属性</param>
            /// <param name="commandParameters">参数</param>
            public void PrepareCommand(SqlConnection connection, SqlCommand cmd, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
            {
                //给sqlcommand属性赋值
                cmd.Connection = connection;
                cmd.CommandText = cmdText;
                cmd.CommandType = cmdType;
                if (commandParameters != null)//判别是否传入参数
                {
                    foreach (SqlParameter commandParameter in commandParameters)
                    {
                        cmd.Parameters.Add(commandParameter);
                    }
                }
            }

        }

    每次都新建连接有问题么?还有其中有必要每个方法都是用try catch么?
    • 已编辑 Tonny Gu 2011年3月2日 8:44 补充
    2011年3月2日 8:42

答案

全部回复