.net StoreBorwMgr.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using org.atnc.module;namespace org.atnc.module.Store
{
    public class StoreBorwMgr
    {
        //设备信息添加、修改、删除
        public int Opera_storeborw(store_borw model, string para)
        {
            org.atnc.module.SQLHelper.SQLHelper sqlHelper = new org.atnc.module.SQLHelper.SQLHelper();
            SqlParameter[] parameters = {
new SqlParameter("@id", SqlDbType.Int,4),
new SqlParameter("@user_name", SqlDbType.NVarChar,50),
                    new SqlParameter("@user_dept", SqlDbType.NVarChar,50),
                    new SqlParameter("@user_deptid", SqlDbType.NVarChar,50),
                    new SqlParameter("@title", SqlDbType.NVarChar,500),
                    new SqlParameter("@purpose", SqlDbType.NVarChar,500),
                    new SqlParameter("@reason", SqlDbType.NVarChar,500),
                    new SqlParameter("@pro_name", SqlDbType.NVarChar,500),
                    new SqlParameter("@brw_time", SqlDbType.DateTime),
                    new SqlParameter("@pre_time", SqlDbType.DateTime),
                    new SqlParameter("@bck_time", SqlDbType.DateTime),
                    new SqlParameter("@realuser", SqlDbType.NVarChar,50),
                    new SqlParameter("@memo", SqlDbType.NVarChar,4000),
                    new SqlParameter("@main_id", SqlDbType.Int,4),
                    new SqlParameter("@main_name", SqlDbType.NVarChar,500),
                    new SqlParameter("@main_memo", SqlDbType.NVarChar,4000),
                    new SqlParameter("@ren_time", SqlDbType.DateTime),
                    new SqlParameter("@ren_reason", SqlDbType.NVarChar,500),
                    new SqlParameter("@ren_memo", SqlDbType.NVarChar,4000),
                    new SqlParameter("@back_reason", SqlDbType.NVarChar,500),
                    new SqlParameter("@chk_flag", SqlDbType.Int,4),
new SqlParameter("@ctime", SqlDbType.DateTime),
                    new SqlParameter("@wtime", SqlDbType.DateTime),
                    new SqlParameter("@wname", SqlDbType.NVarChar,50),
                    new SqlParameter("@delflag", SqlDbType.Int,4),
                    new SqlParameter("@para", SqlDbType.NVarChar,50)};            parameters[0].Value = model.id;
            parameters[1].Value = model.user_name;
            parameters[2].Value = model.user_dept;
            parameters[3].Value = model.user_deptid;
            parameters[4].Value = model.title;
            parameters[5].Value = model.purpose;
            parameters[6].Value = model.reason;
            parameters[7].Value = model.pro_name;
            parameters[8].Value = model.brw_time;
            parameters[9].Value = model.pre_time;
            parameters[10].Value = model.bck_time;
            parameters[11].Value = model.realuser;
            parameters[12].Value = model.memo;
            parameters[13].Value = model.main_id;
            parameters[14].Value = model.main_name;
            parameters[15].Value = model.main_memo;
            parameters[16].Value = model.ren_time;
            parameters[17].Value = model.ren_reason;
            parameters[18].Value = model.ren_memo;
            parameters[19].Value = model.back_reason;
            parameters[20].Value = model.chk_flag;
            parameters[21].Value = model.ctime;
            parameters[22].Value = model.wtime;
            parameters[23].Value = model.wname;
            parameters[24].Value = model.delflag;
            parameters[25].Value = para;
            try
            {
               return (sqlHelper.RunProc("atnc_storeborwMgr", parameters));
            }
            catch (Exception ex)
            {
                //SystemError.CreateErrorLog(ex.Message);
                throw new Exception(ex.Message, ex);
            }
        }
     
    }
}
后台
Store_borw_apply.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using log4net;
using org.atnc.module;namespace atnc.com.cn.Store
{
    public partial class Store_borw_apply : org.atnc.ui.UIPage
    {
        org.atnc.module.Store.StoreBorwMgr Mgr = new org.atnc.module.Store.StoreBorwMgr();
        org.atnc.module.Store.store_borw cR_borw = new org.atnc.module.Store.store_borw();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.VerifyPage();
                ViewState["EmplName"] = this.CurrentEmployee.EmplName.ToString();
                ViewState["DeptName"]=this.CurrentEmployee.DeptName.ToString();
                ViewState["DeptID"] = this.CurrentEmployee.DeptID.ToString();
                LabelWelcome.Text = "欢迎 " + ViewState["EmplName"].ToString() + " 光临!";
                this.Txt_name.Text = ViewState["EmplName"].ToString();
               
            }
        }        protected void bt_Add_Click(object sender, EventArgs e)
        {
            cR_borw.user_name = this.Txt_name.Text.Trim();//借用人
            Mgr.Opera_storeborw(cR_borw, "add");
        }        protected void bt_Back_Click(object sender, EventArgs e)
        {        }       
    }
}存储过程
USE [atnc_real_10_30]
GO
/****** Object:  StoredProcedure [dbo].[atnc_storeborwMgr]    Script Date: 07/12/2013 11:12:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[atnc_storeborwMgr]
@id int,
@user_name nvarchar(50),
@user_dept nvarchar(50),
@user_deptid nvarchar(50),
@title nvarchar(500),
@purpose nvarchar(500),
@reason nvarchar(500),
@pro_name nvarchar(500),
@brw_time datetime,
@pre_time datetime,
@bck_time datetime,
@realuser nvarchar(50),
@memo nvarchar(4000),
@main_id int,
@main_name nvarchar(500),
@main_memo nvarchar(4000),
@ren_time datetime,
@ren_reason nvarchar(500),
@ren_memo nvarchar(4000),
@back_reason nvarchar(500),
@chk_flag int,
@ctime datetime,
@wtime datetime,
@wname nvarchar(50),
@delflag int,
@para nvarchar(50)
ASif(@para='add') --添加设备借用信息
  begin
insert into store_borw(user_name,user_dept,user_deptid,title,purpose,reason,pro_name,brw_time,pre_time,bck_time,realuser,memo,main_id,main_name,main_memo,ren_time,ren_reason,ren_memo,back_reason,chk_flag,ctime,wtime,wname,delflag)VALUES
(@user_name,@user_dept,@user_deptid,@title,@purpose,@reason,@pro_name,@brw_time,@pre_time,@bck_time,@realuser,@memo,0,@main_name,@main_memo,@ren_time,@ren_reason,@ren_memo,@back_reason,1,@ctime,GETDATE(),@wname,0)
  end
然后在页面点击添加按钮报错未将对象引用设置到对象的实例。 
行 128:
行 129:            ///返回存储过程的参数值
行 130:            return (int)cmd.Parameters[RETURNVALUE].Value;
行 131:        }
行 132:
 这个是怎么回事啊  我对比了工程中其他类似页面,我是按照那些写的,怎么他们没事,我的报错呢

解决方案 »

  1.   

    报这个错从以下几个方面来看:
    1、cR_borw.user_name = this.Txt_name.Text.Trim();//借用人,你只赋了这一个值,其它变量为空
    2、return (int)cmd.Parameters[RETURNVALUE].Value; //这里的RETURNVALUE变量是什么
    3、存储过程中也没有定义输出参数
      

  2.   

    存储过程有输出参数吧,你得再增加一个参数用来接收
    如果存储过程是return返回值 new SqlParameter("@" + RETURNVALUE, SqlDbType.NVarChar, 4, System.Data.ParameterDirection.ReturnValue);
    如果是用输出参数,那么就用System.Data.ParameterDirection.Output调用存储过程后,你才能用return (int)cmd.Parameters[RETURNVALUE].Value;拿到值
      

  3.   

    之前没有看到你贴出了存储过程,你那个就是直接执行insert
    判断是否插入成功 if(Mgr.Opera_storeborw(cR_borw, "add") > 0)
    当存储过程中有返回值或者输出参数,你要先在cmd.Parameters中声明那个参数,并指定参数的方向(见4#)
    执行sqlHelper.RunProc("atnc_storeborwMgr", parameters)没有出错时,才能通过cmd.Parameters[RETURNVALUE].Value;获取返回值
      

  4.   

     return (int)cmd.Parameters[RETURNVALUE].Value; // 这里了,cmd.Parameters["你的sql参数变量的的索引,注意,这个参数是指定为返回值类型的参数才行"].Value然后,你定义SQL参数时,请指定好哪个是返回值类型的new SqlParameter("@user_name", SqlDbType.NVarChar,50) // 这种没有指定输入输出类型,则默认是输入类型,这种类型是没法通过cmd.Parameters[0].Value这种方式调用的new SqlParameter("@user_name", SqlDbType.NVarChar,50, System.Data.ParameterDirection.ReturnValue
    ) // 这种就可以了,指定这个参数user_name是返回值类型的,这样就可以使用cmd.Parameters[索引号].Value获取它的值了因为参数的索引是从0开始的,所以,比如它在第3位,则int RETURNVALUE = 2;cmd.Parameters[RETURNVALUE].Value就可以获取了不过,你要事先保存SQL语句查询时,给对应的变量赋值哦比如select @user_name = count([id]) from [user] where .....