Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有经验的DBA应该使用哪种C方法来操纵ms访问?_C#_Ms Access - Fatal编程技术网

C# 有经验的DBA应该使用哪种C方法来操纵ms访问?

C# 有经验的DBA应该使用哪种C方法来操纵ms访问?,c#,ms-access,C#,Ms Access,我想编写一个Windows窗体应用程序来与ms Access数据库交互。我相当精通SQL DB2和T-SQL,以及C语言,但不是同时精通 我应该使用VS-2019中对表适配器和数据绑定的支持吗?还是应该通过OLEDB连接编写自己的SQLCommands?哪个能让我做得更快?这样我就不会那么沮丧了 我经常对所见即所得(WYSIWYG)感到沮丧,在过去8年里,我在使用一些内置的数据集类型接口时遇到了问题。目前,我正在ms access中以本机方式进行输入/检索,但这已经过时了。但我很少使用所见即所得

我想编写一个Windows窗体应用程序来与ms Access数据库交互。我相当精通SQL DB2和T-SQL,以及C语言,但不是同时精通

我应该使用VS-2019中对表适配器和数据绑定的支持吗?还是应该通过OLEDB连接编写自己的SQLCommands?哪个能让我做得更快?这样我就不会那么沮丧了

我经常对所见即所得(WYSIWYG)感到沮丧,在过去8年里,我在使用一些内置的数据集类型接口时遇到了问题。目前,我正在ms access中以本机方式进行输入/检索,但这已经过时了。但我很少使用所见即所得的东西——我通常只编写自己的查询

我已经对ms access DB进行了很好的规范化—主键和外键的良好分解,等等。较大的表最多有1000行—并将大致保持一段时间—增长缓慢。这些数据记录着我们的客户以及他们和他们的孩子正在上的课程。这些数据包括个人人口统计数据、课程列表以及每个课程的注册人数(包括当前和历史)


在某种程度上,我希望将应用程序转移到基于web的实现中,转而使用托管SQL DB—这样我们就可以在任何地方与它交互。但是现在要学的东西太多了。

从的角度来看,这将减少我的挫败感,因为您列出的经验和最终希望迁移到托管SQL DB,例如Azure SQL数据库,本质上是云中的SQL Server,我建议您最好利用时间探索直接从Windows窗体转到Azure中SQL数据库的选项

您的数据访问技术本质上是ADO.net,听起来您在这方面有一些经验,可能包括各种OLEDB连接技术,当然还有EF或实体框架

基本上,我已经在您的情况下多次使用客户机访问数据库作为数据存储,WYSIWYG或表适配器以及数据的轻松链接似乎总是成为一个关键点,它会消耗时间,并且在您离开访问时无法向前滚动

我的想法是基于你提供的一系列问题和信息

我应该使用VS-2019中对表适配器和数据的支持吗 绑定?还是应该通过OLEDB编写自己的SQLCommands 联系哪个能让我做得更快?这会让我少一些 沮丧

我从VS2005开始使用DatabaseTableAdapters,现在还没有回顾。使用强类型数据表并填充SQL是一种乐趣


但是你会发现很多关于这个的观点,这是一个偏好和经验的高度问题

如果您使用用于SQL server、Oracle或ms access的oleDB提供程序,我看不出有什么区别

这些提供者曾经选择在几乎所有的.net OJBECT中同样好地将数据拉入datatable、dataset和darn。换言之,使用ODBC驱动程序访问SQL server,或者使用现在正在贬值的oleDB,这并不是什么大问题。或者使用sqlprovder

正如我提到的,所有这些提供程序都将使用对象sqlcommand、datatable等的标准集并将数据拉入其中

因此,选择哪家供应商是相当中立的。当然,对于独立的桌面应用程序,作为数据引擎选择访问是非常好的。当然,对于多用户,最好使用一些免费版的SQL express

Access的优点是与Excel进行了一些额外的集成,JET/ACE引擎可以读取并导出到Excel

然而,如果Access是一种报告工具,或者是一些需要与之交互的现有桌面应用程序,那么使用JET/ACE当然是有意义的

但是,如果您不使用Access UI而只使用数据引擎?那么你只是选择X数据引擎而不是Y数据引擎。因此,sqlLite也是一个很好的进程内独立数据引擎,它与msaccess一样基于文件。因此,作为一个基于文件的独立进程,JET/ACE或sqlLite都是不错的选择

请记住,使用JET/ACE数据工程师的另一个重要原因是,默认情况下,从windows 98SE开始,所有windows副本上都会安装一个副本

但是,如果选择内置引擎,则只能使用mdb旧格式文件。如果您需要一些集成,比如说一些现有的Access应用程序,并且您不仅需要一个数据引擎,那么您必须使用较新的ACE数据引擎来处理accDB文件格式。因此,如果MSAccess作为桌面应用程序不需要交互,而您只需要一个数据引擎,那么JET就可以了,而ACE是较新的Access数据引擎,默认情况下它不安装在windows上,而是与Access一起安装,或作为独立下载安装

另一个考虑因素是JET仅作为x32位版本提供。所以 您的.net应用程序将作为x32而不是x64在进程中运行。如果.net代码需要与其他x64非托管代码系统交互,则不能使用JET,但可以使用x64位版本的ACE

因此,使用Access或Oracle在这里没有什么区别,您使用的是.net提供程序oleDB、ODBC。但如前所述,一旦您选择了这些提供程序,它们都会处理生成的.net对象,如表、数据集等

可以这样做,如果将来的考虑是SQLServer,则可以并且应该考虑SQL Express。然而,自动安装和设置SQLExpress本身就是一个完整的项目,这是一件痛苦的事情。当as JET已经安装在windows上时,您不必做任何事情就可以使用它,甚至不必安装它


我使用oleDB provider进行访问,也使用ODBC提供程序-这没什么大不了的。

那么-我现在应该从访问转移到托管数据库了吗?这不是一个坏主意。你要求提供总体设计建议,这对任何人来说都很难给出明确的答案。你问了一个宽泛的问题,你必须接受一个宽泛的答案,除非你说得更具体。根据您的输入,我将转向托管SQL,因为您指出这是您的最终路径。有很多方法可以剥这只猫的皮,正如古斯塔夫所说,很多都是基于偏好和经验。我不认为我要求的是“整体设计”——只是我应该使用内置的所见即所得的东西,还是编写自己的SQL。我试图找到一些东西来比较两者之间的优缺点,或者如果有其他的东西-什么都没有。这不是我试图学习的特定数据库-我试图决定使用C访问方法。-我可以使用VisualStudio的所见即所得(WYSIWYG)功能—具有非常好的关系图和数据绑定—但是SQL对我来说是隐藏的。-我可以使用本机对象编写自己的SQL,但之后我必须跟踪所有SQL并自己填充我的窗口。从长远来看,我不确定哪一个会更快更容易。我找不到任何列出“并排比较”的内容。我不知道VS将执行关系和图表以进行访问。您可以在VS中使用表设计器,但除此之外,我不知道VS能够做到这一点。您当然可以创建实体模型,并且可以将其用于任何数据库。但是,在大多数情况下,您可能只使用连接对象。表设计工具将位于Access或SQL server中,或者您在其他系统中使用的任何系统中创建表、设置关系等。。如果说使用Access,然后希望SQL server使用相同的代码?我会使用oleDB,或者ODBC。也许你指的是创建数据集的生成器。此类数据集的sql是可查看的,并且可以修改。因此,您的问题不是应该使用什么样的数据提供程序系统,因为它们的工作原理基本相同,而是我应该在处理表单时使用内部数据集生成器,还是简单地在线编写sql。嗯,选择真的取决于你。对于一个简单的sql语句,我只需在代码中直接输入sql。如果sql很复杂,或者我想使用绑定表单控件或网格,那么如果您愿意,您可以自由使用数据集向导。