接昨日的DNN中的数据表安装文件错误问题。

昨日我发现自己从sqlServer中导出的数据库安装文件在DNN中的模块的安装过程中会出错,今天打开了SqlServer的数据探查器跟踪发现,我原来的代码(如下),经DNN执行后会因为DNN防SQL注入而改变,不知会不会是DNN中的一个小Bug.
CREATE   PROCEDURE  {databaseOwner}{objectQualifier}gdlmo_ArticleAdd
    
@CategoryID   int ,
    
@Title   nvarchar ( 255 ),
    
@CreatedDate   smalldatetime ,
    
@CreatedByUser   nvarchar ( 100 ),
    
@CopyFrom   nvarchar ( 255 ),
    
@Author   nvarchar ( 255 ),
    
@Hits   int ,
    
@IsPassed   bit ,
    
@IP   nvarchar ( 50 ),
    
@DeptName   nvarchar ( 100 ),
    
@Summary   nvarchar ( 2000 ),
    
@ArticleNames   nvarchar  ( 2000 )
AS

DECLARE   @ArticleId   int
BEGIN
    
INSERT   INTO  gdlmo_Article (
        
[ CategoryID ] ,
        
[ Title ] ,
        
[ CreatedDate ] ,
        
[ CreatedByUser ] ,
        
[ CopyFrom ] ,
        
[ Author ] ,
        
[ Hits ] ,
        
[ IsPassed ] ,
        
[ IP ] ,
        
[ DeptName ] ,
        
[ Summary ]
    ) 
VALUES  (
        
@CategoryID ,
        
@Title ,
        
@CreatedDate ,
        
@CreatedByUser ,
        
@CopyFrom ,
        
@Author ,
        
@Hits ,
        
@IsPassed ,
        
@IP ,
        
@DeptName ,
        
@Summary
    )

    
SELECT   @ArticleId   =   SCOPE_IDENTITY ()
END

BEGIN
    
DECLARE   @strSql   varchar ( 1000 )

    
SET   @strsql   =   ' insert into gdlmo_article_accesory(articleid,articlename)  '
    
SET   @strsql   =   @strsql   +   '  select  '   +   str ( @ArticleId +   ' ,* from {databaseOwner}{objectQualifier}f_splitstr( ''' +   @ArticleNames   +   ''' , '' ; '' ) '    
    
EXEC  ( @strsql
END
SELECT   @ArticleId

GO


下面是在SQL的事件探查器中的代码
CREATE   PROCEDURE  dbo.gdlmo_ArticleAdd
    
@CategoryID   int ,
    
@Title   nvarchar ( 255 ),
    
@CreatedDate   smalldatetime ,
    
@CreatedByUser   nvarchar ( 100 ),
    
@CopyFrom   nvarchar ( 255 ),
    
@Author   nvarchar ( 255 ),
    
@Hits   int ,
    
@IsPassed   bit ,
    
@IP   nvarchar ( 50 ),
    
@DeptName   nvarchar ( 100 ),
    
@Summary   nvarchar ( 2000 ),
    
@ArticleNames   nvarchar  ( 2000 )
AS

DECLARE   @ArticleId   int
BEGIN
    
INSERT   INTO  gdlmo_Article (
        
[ CategoryID ] ,
        
[ Title ] ,
        
[ CreatedDate ] ,
        
[ CreatedByUser ] ,
        
[ CopyFrom ] ,
        
[ Author ] ,
        
[ Hits ] ,
        
[ IsPassed ] ,
        
[ IP ] ,
        
[ DeptName ] ,
        
[ Summary ]
    ) 
VALUES  (
        
@CategoryID ,
        
@Title ,
        
@CreatedDate ,
        
@CreatedByUser ,
        
@CopyFrom ,
        
@Author ,
        
@Hits ,
        
@IsPassed ,
        
@IP ,
        
@DeptName ,
        
@Summary
    )

    
SELECT   @ArticleId   =   SCOPE_IDENTITY ()
END

BEGIN
    
DECLARE   @strSql   varchar ( 1000 )

    
SET   @strsql   =   '' insert   into  gdlmo_article_accesory(articleid,articlename)  ''
    
SET   @strsql   =   @strsql    ''   select   ''    str ( @ArticleId )   '' , *   from  dbo.f_splitstr( ''''''   @ArticleNames    '''''' , '''' ; '''' ) ''    
    
EXEC  ( @strsql
END
SELECT   @ArticleId
代码中的“ '”变为了“ ''”,“ +”也被去掉了

Technorati Tags: DotnetNuke, DNN, .net

转载于:https://www.cnblogs.com/GDLMO/archive/2007/12/22/1010501.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值