本帖最后由 wuhenyueyue 于 2010-07-25 08:29:05 编辑

解决方案 »

  1.   

     /// <summary>
        /// 数据库助手类,执行数据库的增删查改操作
        /// </summary>
        public class SqlHelper
        {        SqlConnection SqlCon = null;
            /// <summary>
            /// SqlHelper类的构造函数,建立数据库的一个连接
            /// </summary>
            /// <param name="connectionString">数据库连接字符串</param>
            public SqlHelper(string connectionString)
            {
                this.SqlCon = new SqlConnection(connectionString);
            }        /// <summary>
            /// 如果数据库连接是关闭的,则打开数据库连接
            /// </summary>
            private void OpenSqlConnection()
            {
                if (ConnectionState.Closed == SqlCon.State)
                {
                    this.SqlCon.Open();
                }
            }        /// <summary>
            /// 如果数据库连接是打开的,则关闭数据库连接
            /// </summary>
            private void CloseSqlConnection()
            {
                if (ConnectionState.Open == SqlCon.State)
                {
                    SqlCon.Close();
                }
            }        /// <summary>
            /// 构造带参数的SqlCommand
            /// </summary>
            /// <param name="queryString">Sql语句或存储过程名称</param>
            /// <param name="pare">需要的参数</param>
            /// <param name="cmdType">执行方式</param>
            /// <returns>SqlCommand</returns>
            private SqlCommand CreateCmdWithPara(string queryString, SqlParameter[] pare, CommandType cmdType)
            {
                SqlCommand cmd = null;
                try
                {
                    OpenSqlConnection();
                    cmd = new SqlCommand(queryString, SqlCon);
                    cmd.CommandType = cmdType;
                    cmd.Parameters.AddRange(pare);
                }
                catch (Exception)
                {
                }
                finally
                {
                    SqlCon.Close();
                }
                return cmd;        }        /// <summary>
            /// 构造不带参数的SqlCommand
            /// </summary>
            /// <param name="queryString">Sql语句或存储过程名称</param>
            /// <param name="cmdType">执行方式</param>
            /// <returns></returns>
            private SqlCommand CreateCmdNoPara(string queryString, CommandType cmdType)
            {
                SqlCommand cmd = null;
                try
                {
                    OpenSqlConnection();
                    cmd = new SqlCommand(queryString, SqlCon);
                    cmd.CommandType = cmdType;
                }
                catch (Exception)
                {                throw;
                }
                finally
                {
                    SqlCon.Close();
                }
                return cmd;        }        #region 执行存储过程        /// <summary>
            /// 执行不带参数的查询数据的存储过程
            /// </summary>
            /// <param name="StoreName">存储过程名</param>
            /// <returns>查询结果DataTable</returns>
            public DataTable ExecuteStoreNoPara(string StoreName)
            {
                DataTable dt = new DataTable();
                try
                {
                    using (SqlCommand cmd = CreateCmdNoPara(StoreName, CommandType.StoredProcedure))
                    {
                        OpenSqlConnection();
                        dt.Load(cmd.ExecuteReader());
                    }
                }
                catch (Exception)
                {                throw;
                }
                finally
                {
                    this.SqlCon.Close();
                }
                
                return dt;
            }        /// <summary>
            /// 执行带参数的查询数据的存储过程
            /// </summary>
            /// <param name="storeName">存储过程名</param>
            /// <param name="para">参数</param>
            /// <returns>查询结果DataTable</returns>
            public DataTable ExecuteStoreWithPara(string storeName, SqlParameter[] para)
            {
                DataTable dt = new DataTable();
                try
                {
                    using (SqlCommand cmd = CreateCmdWithPara(storeName, para, CommandType.StoredProcedure))
                    {
                        OpenSqlConnection();
                        dt.Load(cmd.ExecuteReader());
                    }
                }
                catch (Exception)
                {                throw;
                }
                finally
                {
                    this.SqlCon.Close();
                }
                
                return dt;
            }        /// <summary>
            /// 执行不带参数的增、删、改存储过程
            /// </summary>
            /// <param name="StoreName">存储过程名</param>
            /// <returns>受影响的行数</returns>
            public int ExecuteNonStoreNoPara(string StoreName)
            {
                int number;
                try
                {
                    using (SqlCommand cmd = CreateCmdNoPara(StoreName, CommandType.StoredProcedure))
                    {
                        OpenSqlConnection();
                        number = cmd.ExecuteNonQuery();
                    }
                }
                catch (Exception)
                {                throw;
                }
                finally
                {
                    this.SqlCon.Close();
                }
               
                return number;
            }        /// <summary>
            /// 执行带参数的增、删、改存储过程
            /// </summary>
            /// <param name="storeName">存储过程名</param>
            /// <param name="para">参数</param>
            /// <returns>受影响行数</returns>
            public int ExecuteNonStoreWithPara(string storeName, SqlParameter[] para)
            {
                int number;
                try
                {
                    using (SqlCommand cmd = CreateCmdWithPara(storeName, para, CommandType.StoredProcedure))
                    {
                        OpenSqlConnection();
                        number = cmd.ExecuteNonQuery();
                    }
                }
                catch (Exception)
                {                throw;
                }
                finally
                {
                    this.SqlCon.Close();
                }
               
                return number;
            }
            #endregion以上是sqlhelper类。
     BLL_Devices DevicesOpe = new BLL_Devices();
            BLL_CategoryManage CategoryManage = new BLL_CategoryManage();
            BLL_Department Department = new BLL_Department();        protected void Page_Load(object sender, EventArgs e)
            {            if (!IsPostBack)
                {
                    if (null == Session["UserID"])
                    {
                        Page.RegisterStartupScript("a", "<script lanaguage=\"javascript\">alert(\"请您先登陆!\");window.location.href='index.aspx';</script>");
                    }
                    else
                    {
                        //显示装备所属总类下拉框
                        CategoryBind(CategoryManage.GetBaseCategory());                    //选择当前技术状况
                        //生成部门树形结构
                        CreateDepChildNode(this.tree_Departmnet.Nodes, 0);
                    }
                }        }
            #region 提交按钮事件
            
            //提交按钮事件
            protected void Btn_tijiao_Click(object sender, EventArgs e)
            {
                DevicesModel model = new DevicesModel();            model.AllotNumber = this.tex_AllotNumber.Text.Trim();
                model.DeviceNO = this.tex_DeviceNumber.Text.Trim();
                // model.DeviceName = this.tex_DeveiceName.Text.Trim();
                model.CatetoryID = Convert.ToInt32(this.ddl_CategoryID.SelectedValue);
                model.IssueDate = this.tex_IssueDate.Text.Trim();
                model.Storage = this.tex_Storage.Text.Trim();
                model.ReceiveMan = this.tex_ReceiveMan.Text.Trim();
                model.Location = this.tex_Location.Text.Trim();
                if ("" == this.hid_Value.Value)
                {
                    model.DepartmentID = 0;
                }
                else
                { 
                    model.DepartmentID = Convert.ToInt32(this.hid_Value.Value);//将隐藏字段的值(即所选择的部门的ID)
                }
               
                model.ProductDate = this.tex_ProductDate.Text.Trim();
                model.Manufacture = this.tex_Manufacture.Text.Trim();
                model.ManufacturePhone = this.tex_ManufacturePhone.Text.Trim();            //将当前技术状况的Text赋给model。
                model.Status = this.ddl_NowStatus.SelectedItem.Text;            model.CombatOut = this.FCK_Combatout.Value;
                model.Demo = this.FCK_Demo.Value;
                model.Performance = this.FCK_Performance.Value;            if (0 == model.CatetoryID)
                {
                    Page.RegisterStartupScript("a", "<script lanaguage=\"javascript\">alert(\"请选择类别!\");</script>");
                }
                else
                {
                    if ("0"==this.ddl_NowStatus.SelectedValue)
                {
                Page.RegisterStartupScript("a", "<script lanaguage=\"javascript\">alert(\"请选择当前技术状况!\");</script>");
                }
                    else
                    {
                        try
                        {
                            //如果添加成功
                            if (DevicesOpe.InsertDevice(model))
                            {
                                Page.RegisterStartupScript("a", "<script lanaguage=\"javascript\">alert('提交成功!'); window.location.href='StoreArms.aspx';</script>");                        }//end if
                            else
                            {
                                Page.RegisterStartupScript("a", "<script lanaguage=\"javascript\">alert(\"提交失败!请检查并重新输入。\");</script>");
                            }
                        }
                        catch (Exception)
                        {                        Page.RegisterStartupScript("a", "<script lanaguage=\"javascript\">alert(\"抱歉,出错了!请与维护人员联系!\");</script>");
                        }
                    }
                }
            }
            #endregion
    这是提交事件,请各位帮忙看看有什么不对的地方。
      

  2.   

    using (SqlCommand cmd = CreateCmdWithPara(storeName, para, CommandType.StoredProcedure))好像不用放到trycatch里吧
      

  3.   

    谢谢您的回复,加一个try catch是为了保证释放sqlConnection
      

  4.   

    那应该是调用private void CloseSqlConnection()函数吧
      

  5.   

    this.SqlCon.Close();该为CloseSqlConnection();试试行吗?
      

  6.   

    他们有什么区别吗?都是用的SqlCon.Close()
      

  7.   

    晕,那个函数不是多了一个ConnectionState.Open == SqlCon.State判断嘛
      

  8.   

    你是不是设置该控件的  maxlength属性了 
      

  9.   

    我猜测,去掉这句话,应该就没问题了。
    Page.RegisterStartupScript("a", "<script lanaguage=\"javascript\">alert('提交成功!'); window.location.href='StoreArms.aspx';</script>");