我很确定我在这里做些傻事。 我将记录插入数据库表,我的存储过程使用输出参数。我的插入有效但我得到的对象引用没有设置为对象异常的实例。
我的c#业务逻辑代码如下:
[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Insert, true)]
public int CreatePage(int? parentPage, string pageTitle, string pageDescript, string pageCont, int basePage, ref int? insertedrecord)
{
int finaloutput = 0;
string errormess;
if(basePage > 0)
{
if(pageTitle != String.Empty)
{
if(pageDescript != String.Empty)
{
if(pageCont != String.Empty)
{
try
{
if(parentPage == 0)
{
parentPage = null;
}
finaloutput = (int)pgAdp.InsertNewPage(parentPage, pageTitle, pageDescript, pageCont, basePage, ref insertedrecord);
}
catch(Exception er)
{
errormess = er.Message;
}
}
}
}
}
return finaloutput;
}
我的代码背后:
string pgtitle = txtPageTitle.Text;
string pgdescript = txtDescript.Text;
int parpg;
int basepg;
int? outputtedident = 0;
int.TryParse(drpParentPages.SelectedValue, out parpg);
int.TryParse(drpBasePagesList.SelectedValue, out basepg);
string pgcont = txtContent.Text;
int newpageid = pagesLogic.CreatePage(parpg, pgtitle, pgdescript, pgcont, basepg, ref outputtedident);
任何想法会发生什么?
编辑: 正如一些有用的灵魂自己投票并投票结束这个问题,我认为我还要进一步澄清。
数据集由visual studio从存储过程生成。插入有效,所以我在数据库中得到了我的新记录,但我需要输出参数的值,在下面的业务逻辑代码中是' insertedrecord'
finaloutput = (int)pgAdp.InsertNewPage(parentPage, pageTitle, pageDescript, pageCont, basePage, ref insertedrecord);
我需要' insertedrecord'作为将用户重定向到另一个页面的URL的一部分。
我的sql存储过程如下:
CREATE PROCEDURE [SitePages].[InsertNewPage]
-- Add the parameters for the stored procedure here
@ParentPageId int,
@PageTitle varchar(100),
@PageDescription nvarchar(250),
@PageCont nvarchar(max),
@BasePage int,
@InsertedIdent int output
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
INSERT INTO SitePages.Pages(ParentPageId, PageTitle, PageDescription, PageContent, Published, BasePageId)
VALUES (@ParentPageId, @PageTitle, @PageDescription, @PageCont, 0, @BasePage)
set @InsertedIdent = SCOPE_IDENTITY()
return @InsertedIdent
END
就像我说的那样,插件正在顺利进行,但正如我在开头提到的那样,我得到了一个例外,但我不知道为什么。
此行发生异常:
finaloutput = (int)pgAdp.InsertNewPage(parentPage, pageTitle, pageDescript, pageCont, basePage, ref insertedrecord);