VB2022 vb.net .net6 VB 符合错误退出,并在查找我的 BD 时出现错误代码错误

vb2022 vb.net .net6 vb complie error exit with error code error when looking for my bd

提问人:SanLey 提问时间:9/2/2023 更新时间:9/2/2023 访问量:52

问:

我正在 Visual Basic 2022 中为医生办公室制作数据库,但是当我打包和创建安装程序时,我的计算机地址保存在访问数据库的路径中,当我运行我的应用程序时,它显示以下内容“ C:\User\project\patients.accdb 不是有效路径,我该如何更正此问题, 感谢您的帮助

修改了此属性

或者我不知道我是否做错了设置

vb.net ms-access 安装 路径

评论

0赞 Tu deschizi eu inchid 9/2/2023
您可能对以下内容感兴趣:Environment.SpecialFolder 枚举其中 |数据目录|定义和 ADO.NET |数据目录|这在哪里记录?
0赞 Albert D. Kallal 9/3/2023
您还可以在启动应用程序时获取当前正在运行的文件夹,从而在启动时使用 .exe 文件中的路径名。因此,这将允许应用程序和连接字符串工作,而不管 .exe 文件和数据库的放置位置如何。不清楚是否将数据库(ACCDB 文件)放在与 .exe 文件相同的文件夹中,但在启动时,获取当前文件夹位置很简单,因此将其用于连接字符串路径。

答:

0赞 jmcilhinney 9/2/2023 #1

如果要使用应用程序部署数据库,则正确的方法是将数据文件添加到项目中,并将其设置为 ,然后在连接字符串中用作文件夹路径。无论应用程序部署在何处以及在调试器中运行时,它都会自动解析到正确的文件夹。有关一些示例,请参阅 www.connectionstrings.comCopy to output directoryCopy if newer"|DataDirectory|"

请注意,对于大多数已部署的应用程序,数据目录默认为程序文件夹。这意味着上面的建议就像在 WinForms 应用程序中使用一样,但您不必使用代码来设置它。如果使用 ClickOnce 部署,则数据目录由 ClickOnce 管理,并且连接字符串仍会自动解析。对于 Web 窗体应用,它将解析为 App_Data 文件夹。不确定更现代的 Web 应用程序会发生什么,因为我从未尝试过。Application.StartupPath

评论

0赞 SanLey 9/2/2023
谢谢朋友,我会看到例子并评论结果......
0赞 SanLey 9/4/2023
你好,jmcilhinney 这个 DataDirectory 函数现在我的应用程序找到了访问文件,但我不明白为什么它只允许我搜索但不允许输入或更新记录,它已经更改了数据库文件的权限,但它仍然不允许我进行修改。任何建议,谢谢。
0赞 jmcilhinney 9/4/2023
对答案的评论不是提出新问题的地方。这个答案已经解决了你实际提出的问题,所以你应该接受它。如果您现在有一个新问题,那么您应该将其作为新问题发布,其中包含该特定问题的所有且仅相关信息。
0赞 MilletSoftware 9/2/2023 #2

请考虑建立 ODBC 连接,而不是本机连接。 这样就不需要管理数据库的物理路径了。它还将提供更大的灵活性并满足未来的需要,例如升级数据库(例如,从MS Access升级到SQL Server)。

评论

0赞 Albert D. Kallal 9/3/2023
否,即使将 ODBC 用于 ms-access,连接刺也始终具有数据库文件的完整有效 Windows 路径名。使用的路径名甚至不能是相对的,它必须是完全限定的 Windows 路径。虽然与服务器数据库的连接可以使用 IP 地址,但 Access 是基于文件的,甚至 odbc 也需要数据库文件的有效 Windows 路径名。我当然同意您的建议,即使用ODBC提供程序代替非常常见的oleDB提供程序,因为这允许更改简单的连接字符串,而无需更改SQL Server的数据提供程序
0赞 MilletSoftware 9/4/2023
Albert,我相信您指的是无 DSN 的 ODBC 连接字符串。如果计算机具有数据库的 ODBC DSN,则连接字符串可以像 myConnectionString = “DSN=myDSN;”
0赞 Albert D. Kallal 9/4/2023
好吧,它可以少一个 DSN,但 DSN NOW 具有完全限定的 Windows 路径名。换言之,一天结束时的连接字符串必须并且仍然具有数据库文件的完整有效路径名。ODBC 的引入不会改变此问题或要求。鉴于这是 .net,那么使用 oleDB 提供程序或 ODBC 提供程序?为什么不在应用程序中创建连接字符串。那么,在ODBC面板中创建甚至必须创建一个条目?我看不出有什么优势。在所有情况下,仍然存在有效的路径名。
0赞 Albert D. Kallal 9/4/2023
我认为几乎没有理由建立或要求或使用必须在注册(计算机DSN)或文件(FILE dsn)中输入的任何连接。由于在所有情况下都需要数据库的完整路径名,因此实际上不需要将 DSN 引入注册表或文件。事实上,在大多数情况下,在 .net 中,我们既不创建也不使用 FILE 或系统 DSN,而是使用 Visual Studio 中的连接生成器,因此,再一次,考虑使用 DSN 的理由更少,而且 .net 默认不需要也不使用它们。
1赞 MilletSoftware 9/4/2023
原因是灵活性(解耦),这是 ODBC DSN 的一个关键功能。您可能更喜欢在应用程序内部管理数据源连接的物理(而不是逻辑)方面。但是,将物理方面委托给 ODBC DSN 并仅保留应用程序内部的逻辑方面是完全可行的。