gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 17:56:18 32 4
gpt4 key购买 nike

我只是想在 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/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com