-1

我正在尝试为我们的项目开发一个支持多个数据库(此时SQL Server、Oracle、MySQL 和 PostgreSQL )的数据层库。数据库服务器通常会托管在公共云中。数据访问(选择、插入、更新、删除)是从 Windows 窗体客户端和 Web 服务器执行的。winforms 客户端迫使我以这样一种方式设计东西,即进行最少的数据库往返。

我遇到的问题是“如何在一个数据库命中中将多个插入或更新推送到一起”。

我已经对此进行了大量的谷歌搜索和研究,并且知道参数化插入/更新是记住 SQL 注入攻击的方法。但它不适合我,因为我不想多次往返数据库。

BulkCopy 是特定于 SQL Server 的,主要用于插入。

存储过程/XML - 我有不同的数据库,这使得为每个数据库维护存储过程变得困难和困难。而且表的数量也不是静态的,可以随时引入新表或更改现有表,因为应用程序本质上是非常动态的。

对我来说最好的选择(此时)是连接 sql 字符串(当然使用 StringBuilder)并一次性触发查询。我查看了owasp-esapi-dotnet 库http://code.google.com/p/owasp-esapi-dotnet/),但没有实现 sql 编码(以防止 sql 注入)。此外,该项目现在看起来已经死了(最后一次提交是在 2010 年 12 月)。

是否有任何开源实现来处理多个数据库(至少 SQL Server、Oracle、MySQL 和 PostgreSQL)的 SQL 注入?

有没有其他方法可以实现这个目标(在单个数据库往返中进行多次插入/更新)?

我在 .NET 4 上使用 C#。

编辑:我们正试图将其作为一种产品推出,客户将有机会选择/选择他/她想要的任何数据库供应商。

4

1 回答 1

0

如果这是我的问题,我会在 sql server 上设置链接服务器。然后我会编写存储过程,从您的应用程序中接受必要的参数并处理它们。

于 2013-02-24T16:14:49.473 回答