繁体   English   中英

ADO.NET数据库访问

[英]ADO.NET database access

我已经在VB.NET中编写了一个程序,该程序要做的一件事就是将记录插入Microsoft Access数据库中。 我访问数据库的程序后端被编写为可互换层。 如果我将该层与使用Microsoft SQL Server数据库的层“交换”出去,我的程序就会运行。 如果我使用MS Access,它仍然相当快,但速度要慢得多。 是否有人对使用Microsoft Access加速ADO.NET事务有任何提示或技巧? 我真的更希望在SQL Server上使用MS Access,以便可以通过程序分发数据库(而不是连接到某些远程SQL Server)。 有什么建议么? 另外,当我创建MS Access数据库时,我是以Access 2000兼容模式创建的。 使用2003兼容模式会更快吗?

提前致谢

尽管您需要安装它,但是SQL Server Express支持“ XCopy文件部署”,在其中部署应用程序所需要做的就是运送.mdf文件和可执行文件。

详情这里 MSDN上。

它确实支持存储过程:我已经在单元测试中使用它来动态地动态创建模拟数据库。

正如您所经历的那样,访问权限并非最佳。

您是否看过SQL Server Compact Edition 它可以与您的应用程序一起嵌入和分发...并且应比Access表现更好。

SQL Server Compact 3.5将为您带来相同的好处-可以部署和分发的单个数据库文件(只要在应用程序中包含运行时程序集)。 与完整的SQL Server实例相比,它具有降低的查询功能,但是绝对比Access引擎要快。

我已经将其与具有桌面组件的移动应用程序一起使用,它可以完成我需要做的所有事情。

您是否同时在Access中打开了Access后端? 如果是这样,请尝试在不打开程序的情况下进行操作。 如果这样可以加快速度,那么您应该打开数据库连接或记录集(针对带有很少记录的表),并在处理数据时使其保持打开状态。

问题是,如果您针对Access数据库文件打开和关闭对象或记录集,而其他人位于Access数据库文件中,Jet将浪费大量时间对LDB文件进行锁定。 因此,与Access数据库文件保持永久连接可以解决此问题。

以我的经验,ADO.NET没有针对MS Access进行太多优化。 在某些情况下,使用较旧的ADO或DAO接口(可通过COM在VB.NET中使用)可以使性能提高大约20倍。 但这全都取决于程序真正执行的SQL语句(大量批处理更新/插入,或者大量具有较大结果集的查询,或者大量交互式LOAD-Transform-Store循环)。

MSDN上有一篇有关如何加快ADO.NET速度的文章: http : //msdn.microsoft.com/zh-cn/library/ms998569.aspx尽管该文章有些繁琐,但仍然有几点好处: )

除此之外,我自己使用MS Access,发现一些技术,例如数据缓存,没有源方案的选择或优化查询等,都可以使性能保持在中等水平。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM