c# - 有哪些用于创建通用 SQL Server 查询的 .NET 方法?

标签 c# asp.net .net sql-server

我只是想在 C# .NET 4.0 中编写一个通用函数,我可以在其中向它发送数据库字符串、查询字符串并取回结果。

我不太精通 C# 并且它是各种不同的对象,我不确定返回此信息的最佳选择是什么。

我知道有 DataTableDataSet,仅此而已。我正在寻找的是一个相当高效的对象,并且我可以轻松访问它的数据成员。我确信自己编写不会有问题,但我知道 .NET 4.0 中必须有一些我可以访问的其他对象。

最佳答案

这种设计的问题是很难使用最佳实践来保证安全和防止 SQL 注入(inject)。将纯 SQL 语句传递给函数几乎消除了防御 SQL 注入(inject)的能力,除非您小心操作。

作为一般规则,如果您接收任何 用户输入,您要确保您使用的是parameterized stored procedures。 , 或 parameterized queries .推荐的模式是传入一个语句和一个包含正确数量的参数值的对象类型数组,并在您的函数中构建参数集合。

我们使用 Microsoft data Application Blocks来自他们的模式和实践库,其中包含真正使这变得容易得多的功能。

在使用它时,ConnectionString 存储在 app.config 或 web.config 中,您传入连接字符串的名称,数据应用程序 block 代码负责查找它、创建命令、连接、并执行查询。

使用此模式时,我们的代码如下所示:

public static DataSet ExecuteDataset(string CallingApp, string ConnectionStringName, string StoredProcName, object[] ParameterValues)
{
        DataSet ReturnValue = new DataSet();

        Microsoft.Practices.EnterpriseLibrary.Data.Database db = Microsoft.Practices.EnterpriseLibrary.Data.DatabaseFactory.CreateDatabase(ConnectionStringName);
        try
        {
            ReturnValue = db.ExecuteDataSet(StoredProcName, ParameterValues);
        }
        catch (Exception ex)
        {
            // a bunch of code for exception handling removed            
        }


        return ReturnValue;
 }

这是获取数据集的代码。还有许多其他函数可用,并且此代码可能不适用于最新版本的数据访问库。我们使用的是稍旧的版本,但这应该让您了解它的易用性。

关于c# - 有哪些用于创建通用 SQL Server 查询的 .NET 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10386261/

相关文章:

C# 发送 HTML 和文本电子邮件 - 最优雅?

.net - asp.net AJAX页面方法非常安全吗?

c# - Nancyfx 自托管无法停止 HttpListener

c# - 迭代时从另一个线程修改列表 (C#)

c# - 杀死资源管理器进程

c# - 寻找 RegEx 查找和替换 Visual Studio 插件

c# - 如何在 Entity Framework 4.1 中共享没有代码优先的 dbContext?

ASP.NET Identity 如何为自定义 ApplicationUser 添加必需的属性?

ASP.NET MVC "Donut caching"和 TempData

c# - C# 中的任意大整数