未将对象引用设置到对象的实例。

fdqtd3yt 2013-07-12 11:32:57
.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)
AS

if(@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:
这个是怎么回事啊 我对比了工程中其他类似页面,我是按照那些写的,怎么他们没事,我的报错呢。。。
...全文
212 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
EnForGrass 2013-07-12
  • 打赏
  • 举报
回复
自己一步步调试,看问题,这么多代码让我看。鬼知道那里有问题?
  • 打赏
  • 举报
回复
存储过程有输出参数吧,你得再增加一个参数用来接收 如果存储过程是return返回值 new SqlParameter("@" + RETURNVALUE, SqlDbType.NVarChar, 4, System.Data.ParameterDirection.ReturnValue); 如果是用输出参数,那么就用System.Data.ParameterDirection.Output 调用存储过程后,你才能用return (int)cmd.Parameters[RETURNVALUE].Value;拿到值
tan598121925 2013-07-12
  • 打赏
  • 举报
回复
RETURNVALUE 这变量问题
coobai 2013-07-12
  • 打赏
  • 举报
回复
呵。。。。。。
全栈极简 2013-07-12
  • 打赏
  • 举报
回复
报这个错从以下几个方面来看: 1、cR_borw.user_name = this.Txt_name.Text.Trim();//借用人,你只赋了这一个值,其它变量为空 2、return (int)cmd.Parameters[RETURNVALUE].Value; //这里的RETURNVALUE变量是什么 3、存储过程中也没有定义输出参数
likevs 2013-07-12
  • 打赏
  • 举报
回复
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 .....
  • 打赏
  • 举报
回复
之前没有看到你贴出了存储过程,你那个就是直接执行insert 判断是否插入成功 if(Mgr.Opera_storeborw(cR_borw, "add") > 0) 当存储过程中有返回值或者输出参数,你要先在cmd.Parameters中声明那个参数,并指定参数的方向(见4#) 执行sqlHelper.RunProc("atnc_storeborwMgr", parameters)没有出错时,才能通过cmd.Parameters[RETURNVALUE].Value;获取返回值
空格键 2013-07-12
  • 打赏
  • 举报
回复
调式啊,实在不知道问题在哪,一步一步用排除法找!
good-code 2013-07-12
  • 打赏
  • 举报
回复
调试再发吧。往往最基础的也是最简单的

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧