加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – INSERT存储过程不起作用?

发布时间:2020-12-16 07:26:54 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试从一个名为suspension的数据库插入到Animals数据库中名为Notification的表中.我的存储过程是这样的: ALTER PROCEDURE [dbo].[spCreateNotification] -- Add the parameters for the stored procedure here @notRecID int,@notName nvarchar(50),@
我正在尝试从一个名为suspension的数据库插入到Animals数据库中名为Notification的表中.我的存储过程是这样的:

ALTER PROCEDURE [dbo].[spCreateNotification] 
        -- Add the parameters for the stored procedure here
        @notRecID int,@notName nvarchar(50),@notRecStatus nvarchar(1),@notAdded smalldatetime,@notByWho int
    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 Animals.dbo.Notification 
(
NotRecID,NotName,NotRecStatus,NotAdded,NotByWho
)
values (@notRecID,@notName,@notRecStatus,@notAdded,@notByWho);
    END

空插入是为了补充一个否则不会被填充的列,我尝试了不同的方法,比如在表名后使用列的名称,然后只在值中指出我得到的字段.我知道这不是存储过程的问题,因为我是从sql server管理工作室执行的,它引入了参数.然后我猜我在调用存储过程时问题必须在存储库中:

public void createNotification(Notification not)
        {
            try
            {
                DB.spCreateNotification(not.NotRecID,not.NotName,not.NotRecStatus,(DateTime)not.NotAdded,(int)not.NotByWho);

            }
            catch
            {
                return;
            }
        }

我在这里调用方法:

public void createNotifications(IList<TemporalNotification> notifications)
        {

            foreach (var TNot in notifications)
            {
                var ts = RepositoryService._suspension.getTemporalSuspensionForNotificationID(TNot.TNotRecID);
                Notification notification = new Notification();
                if (ts.Count != 0)
                {
                    notification.NotName = TNot.TNotName;
                    notification.NotRecID = TNot.TNotRecID;
                    notification.NotRecStatus = TNot.TNotRecStatus;
                    notification.NotAdded = TNot.TNotAdded;
                    notification.NotByWho = TNot.TNotByWho;

                    if (TNot.TNotToReplace != 0)
                    {
                        var suspensions = RepositoryService._suspension.getSuspensionsAttached((int)TNot.TNotToReplace);
                        foreach (var sus in suspensions)
                        {
                            sus.CtsEndDate = TNot.TNotAdded;
                            sus.CtsEndNotRecID = TNot.TNotRecID;
                            DB.spModifySuspensionWhenNotificationIsReplaced((int)TNot.TNotToReplace,(int)sus.CtsEndNotRecID,(DateTime) sus.CtsEndDate);
                        }
                        DB.spReplaceNotification((int)TNot.TNotToReplace,DateTime.Now);
                        createNotification(notification);
                    }
                    else
                    {
                        createNotification(notification);
                    }
                }
            }
            deleteTemporalNotifications(notifications);
        }

它不会记录数据库中的值.我一直在调试并对此感到生气,因为它在我手动执行时起作用,但在我的应用程序中自动化proccess时则不行.有人看到我的代码有什么问题吗?

谢谢

编辑:添加更多代码.它仍然无法改变,我的意思是,如果我执行它,程序是有效的,所以我不知道可能是什么错误.事实上,我没有得到任何错误.可能是一个表中的写入问题,而不是存储过程的数据库中的问题?

解决方法

我会指定你的列名,而DONT则根据该列包含NULL.让SQL Server处理它.

INSERT INTO Animals.dbo.Notification
(
 RecID,[Name],RecStatus,Added,ByWho 
)
values (@notRecID,@notByWho);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读