没有使用visual studio生成的数据集获取输出参数

时间:2017-10-02 16:38:46

标签: c# asp.net sql-server

我很确定我在这里做些傻事。 我将记录插入数据库表,我的存储过程使用输出参数。我的插入有效但我得到的对象引用没有设置为对象异常的实例。

我的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);

0 个答案:

没有答案