【发布时间】:2011-12-13 18:37:05
【问题描述】:
我曾使用 SqlDataSource 将数据从数据库检索到 gridview。
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:HRMS_DBConnectionString1 %>"
DeleteCommand="DELETE FROM [tblEmployeeDetail] WHERE [EmpId] = @EmpId" InsertCommand="INSERT INTO [tblEmployeeDetail] ([EmpId], [Name], [UserName], [Password], [Gender], [Age], [Address], [IdentityCardNo], [Race], [Position], [Section], [Department], [JoinDate], [ResignDate], [HodId], [Email]) VALUES (@EmpId, @Name, @UserName, @Password, @Gender, @Age, @Address, @IdentityCardNo, @Race, @Position, @Section, @Department, @JoinDate, @ResignDate, @HodId, @Email)"
ProviderName="<%$ ConnectionStrings:HRMS_DBConnectionString1.ProviderName %>"
SelectCommand="SELECT [EmpId], [Name], [UserName], [Password], [Gender], [Age], [Address], [IdentityCardNo], [Race], [Position], [Section], [Department], [JoinDate], [ResignDate], [HodId], [Email] FROM [tblEmployeeDetail] WHERE ([Name] IS NULL)"
出于安全目的,有什么方法可以隐藏此编码。它显然显示了表名及其所有实体。我希望使用此功能,因为它更容易通过直接自动编辑和删除功能来管理 gridview 中的数据,但同时表示层假设不会在编码中显示数据库内容。到底有没有?
【问题讨论】:
-
对谁隐藏?这些控件不会呈现给客户端(除非您的服务器配置错误并且没有实际处理 ASP.NET 代码)。
-
“表示层假设不显示编码中的数据库内容” - 在这个整体架构中您没有表示层。如果您有另一个层可以放入,则只能将特定于数据库的内容保留在表示层之外。
-
假设发生了错误,代码无法从数据库中找到特定实体。不是稍后会在 aspx 处出现一条错误消息,显然表明该表中的该实体 cud 未找到,出现在客户端..
-
@Memoc 正确处理错误?对我来说,这听起来像是一个经典的 XY 问题。
标签: c# asp.net sql visual-studio