2010-07-22 46 views
1

我需要更新(以及重写真正的)使用ADO访问JET数据库的小型VB6应用程序到Visual Studio中的vb.net应用程序2008.需要的数据库建议:将VB6/ADO/JET应用程序移植到VB.NET

我的研究表明我应该使用LINQ,但它似乎不可能连接到JET。如果JET现已被弃用,我应该使用什么?还是应该在没有LINQ的情况下使用ADO.NET?

请不要回答SQL Server! - 这需要是一个应用程序,最终用户可以在公司或非公司环境中轻松安装,并且不需要任何正在进行的技术维护。我开始安装SQL Express,但在至少需要2次系统更新时停止,因为这对于这个小应用来说太复杂了。

+0

你在更新什么,为你使用.net?我知道,应该升级工具/技术。它的商业原因是什么? – shahkalpesh 2010-07-22 10:00:55

+0

@shahkalpesh:我不知道他的理由,但我知道许多客户担心VB6应用程序,当他们发现不再支持MS时(即使他们从不使用支持,它仍然会让每个人都感觉更好)。 – 2010-07-22 10:04:13

+0

原因仅仅是我被指示将所有VB6应用程序移植到.NET! – 2010-07-22 10:11:51

回答

1

Jet已被弃用,但有一种ACE(Access数据库引擎)形式的替代品。

但是,关于从LINQ使用它。这个question的答案有不同的建议,我也读过一些地方可能会使用LINQ to DataSet来做到这一点。这里有一篇关于它的博客文章:Querying DataSets – Introduction to LINQ to DataSet,但是我找不到我读到的地方有人使用它访问Access数据库的成功链接。

虽然我建议,如果没有明确的解决方案来使用LINQ,实用的方法是坚持正常的ADO.Net,并等待使用LINQ,直到您确定您正在使用一个完全支持它的数据源。

+0

ACE替代品的接近程度如何?安装在运行XP的客户端时会出现问题吗? – 2010-07-22 12:48:28

+0

@SM:我不确定我害怕。我的理解是,它是由Jet团队在弃用Jet时开发的,并且应该完全向后兼容Jet,但是如果与.accdb文件而不是.mdb文件一起使用,它将包含一些新功能。自从Office 2007发布以来,我相当确定它可以在XP上正常工作。 – 2010-07-22 13:07:56

+0

我想这是最好的方法 - 谢谢,ho1! – 2010-07-22 15:49:24

1

这里是一个很好的升级工具,它是免费的,如果你的项目包含小于10000行代码:
http://msdn.microsoft.com/en-us/vbasic/ff793478.aspx

你应该遵循的一般方法,是首先从VB6到VB.NET干净的迁移,并让.NET版本与VB6中的版本完全一样,然后开始在.NET中寻找替代技术。当你有一个可用的.NET应用程序时,在不同的技术之间进行转换比手动尝试直接从VB6代码转换为.NET中的替代品要容易。

下面是迁移一些很好的理由先,而不是手动改写:
5 myth busting reasons for choosing automatic migration vs manual rewrite

从文章:

即使在最坏的情况下,你仍然需要重写一定在自动迁移阶段后,应用程序的一部分,最终结果将始终是总成本和时间的一小部分。

+0

我不同意你的建议方法,但是一旦移植,它将永远不会被改写成更正确的vb.net。这是使用更新的方法重写应用程序的唯一机会。 – 2010-07-22 10:15:15

+0

您可能会花费更少的时间遵循此方法,只是不要告诉您的上司在转换之前完成重写之前将其转换为... – awe 2010-07-22 10:30:39

+0

感谢您获得升级工具的链接。我们并没有对VS自动升级留下深刻的印象,但我会放弃这一点。 – 2010-07-22 11:10:47

0

只需使用OleDbConnection/OleDbCommand/OleDbDataReader对象模仿您在VB6/ADO代码具有相同的逻辑。它将以相同的方式工作,不需要比现有应用程序更多的依赖项。

+0

所以你认为我应该继续使用JET? – 2010-07-22 11:27:25

+0

是的。 JET不会突然停止工作,因为您已使用其他语言重新编写了客户端代码。您的目标机器上是否实际存在JET是您安装程序的一个问题。这是您在部署VB6代码时已经解决的问题。 – 2010-07-22 13:47:39

+0

Jet 4存在于Windows 2000所有版本的Windows上。 64位的情况更加糟糕 - 我不确定Windows的64位版本是用于Jet的用途(Active Directory),还是64位版本的Access(2010)提供了64位版本位ACE和64位Jet。后者似乎不太可能,但我不明白他们如何在不支持MDB文件的情况下提供64位Access,因此他们必须创建了64位版本的Jet(据我所知,A2007和A2010可以做到这一点)不使用ACE与MDB交互,但使用Jet 4;比如:DAO引用)。 – 2010-07-22 18:04:18

相关问题