要用作SqlDataSource的存储过程的包装器

本文关键字:存储过程 包装 SqlDataSource | 更新日期: 2023-09-27 18:26:49

我目前在网格视图上的SqlDatasource的代码页上有所有的SQL代码。

我的想法是,由于页面后面的代码在服务器上,这是安全的,但我被告知这仍然会受到攻击,我应该迁移到存储过程并使用包装器来调用它们。

将SQL传输到存储过程不是问题,但我不知道如何为它们创建包装器。

我希望在一个存储过程中为每个源删除和选择更新,这样就不会有几十个存储过程,所以我使用一个模式(int)参数进行计算,然后使用if语句使用正确的查询。

如果这是正确的方法,那么我只需要包装器的帮助,如果没有人能建议最好的方法来做到这一点,同时每个SqlDataSource 没有3/4个存储过程

要用作SqlDataSource的存储过程的包装器

您没有明确提到它,但我假设您正在动态创建sql代码:问题是sql注入

使用存储过程可以完全避免它,因为您使用了参数;您也可以将参数用于普通sql代码,但通常首选存储过程。首先想到的几个原因是:sql代码在数据库上,与前端(在不同的层上)分离,可以在不更改前端的情况下进行更改/修复/更新/升级

包装器后面的代码中是存储过程的SqlDatasource,就像普通sql代码一样
如果将*CommandType设置为值StoredProcedure,则操作完成

关于多个存储过程的"问题",我认为这可能是品味问题;imho最好有处理单个操作的简单存储过程
更容易维护,提高可读性,减少出现难以调试的错误的机会

最好的方法是总是让别人来做。像实体框架这样的ORM非常棒。也可以使用企业库中的数据访问应用程序块。但不要将insert/update/delete放在一个存储过程中。这是不好的做法。