-1

在我最近的多用户数据库应用程序中,有很多来自不同数据库源类型(Oracle、Access、SQL Server)的数据库数据的检索和操作。我知道 .NET 框架技术可以做到这一点,它基本上可以正常工作。但是以我的方式编码似乎很乏味,我正在寻找更好的方法。我在这方面相对缺乏经验,所以我确信有。

我现在这样做的方式只是使用字符串连接从参数生成 SQL 文本语句。我也玩过主应用程序数据库(Access)中的存储过程,但它太不灵活了。

我能做的非常有限。我无法更改 Oracle 和 SQL Server 数据库。单独由应用程序拥有的 Access 数据库。Oracle 和 SQL Server 数据库非常慢,所以我不确定数据绑定是否是一个好主意,因为每次查询数据时它都会减慢应用程序(和用户体验)的速度。但同样:我对数据绑定功能了解不多。

4

2 回答 2

2

如果后端数据库没有正确索引,正如你在评论中所说,你可以在前端做很少的事情来提高从后端提取数据的模块的性能,特别是如果那些后端数据库是动态的,经常变化的。

如果允许您在后端 Oracle 和 SQL Server 引擎上编写存储过程,则可以通过使用带参数的 SP、执行这些 SP 并通过 Command 对象的参数集合传递参数来提高性能。这种方法消除了引擎必须解析和编译 SQL 语句的开销。

对于 MS-Access,这也是一个薄弱环节。Access 不是真正的后端引擎,而是使用共享文件架构。Where-clause 条件适用于客户端,IIRC。因此,您最终会通过网络传输大量数据,然后在客户端将其丢弃,因为它不符合 where 子句的条件。如果您的组织在未来必须使用此应用程序足够长的时间以证明此类端口的成本是合理的,则您可以通过将 Access 替换为 SQL Server Express 来提高性能。

PS“乏味”是主观的。我不能帮你。有些人觉得 ADO.NET 很乏味。有些人觉得 Linq 很乏味。有些人对 perl 感到兴奋,而另一些人则鄙视使用它。

于 2013-07-22T12:50:08.643 回答
1

在这种情况下...您可以创建一个访问所有数据库的层打开关闭活动连接...您可以将列和值设置为Dictionary...。在此类中公开您必须通过的所有方法是 db type , table name , Dictionarycol_name\value,query type (select/update/delete/insert/SP) ...Dictionary如果你不创建模型/实体/甚至xml到相应的表希望它们被硬编码.....但是 Db 层类你将不得不花一些时间使它尽可能通用....

于 2013-07-19T12:56:37.087 回答