微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我正在尝试从一个名为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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐