用于更改 MS Access ODBC 系统 DSN 的 .mdb 文件路径的命令行?
Posted
技术标签:
【中文标题】用于更改 MS Access ODBC 系统 DSN 的 .mdb 文件路径的命令行?【英文标题】:Command line to change path to .mdb file for MS Access ODBC System DSN? 【发布时间】:2010-08-05 16:55:05 【问题描述】:我可以使用什么 odbcconf.exe 命令行来更改现有系统 DSN 的 MS Access .mdb 文件的路径?
【问题讨论】:
您确定需要 DSN 吗?为什么不在您的应用程序中使用无 DSN 连接,这样您就可以完全控制运行时使用的路径?例如,您的用户可能没有更改 DSN 的权限。 非常确定。我正在使用一个使用 DSN 连接的现有的、完善的应用程序,并且我正在为该应用程序编写测试。 仅仅因为它有一个 DSN 并不意味着你必须使用它——你可以使用一个无 DSN 的连接字符串并完全避免对 DSN 的外部依赖。在accessmvp.com/DJSteele/DSNLessLinks.html 访问内的说明。 【参考方案1】:您必须通过更改注册表来做到这一点。这个例子的内容来自我之前使用过的网络
rem -----Author: Jim Michaels
rem -----copy the drivers where all good little ODBC drivers go
if errorlevel 1 goto bye
copy myodbcd.dll C:\WINDOWS\SYSTEM
if errorlevel 1 goto bye
rem ----create a .REG file to make registry entries
echo REGEDIT4>myodbc.reg
echo.>>myodbc.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\mysql]>>myodbc.reg
echo "APILevel"="2">>myodbc.reg
echo "ConnectFunctions"="YYN">>myodbc.reg
echo "Driver"="C:\\WINDOWS\\SYSTEM\\myodbc.dll">>myodbc.reg
echo "DriverODBCVer"="02.50">>myodbc.reg
echo "FileExtns"="*.txt">>myodbc.reg
echo "FileUsage"="0">>myodbc.reg
echo "Setup"="C:\\WINDOWS\\SYSTEM\\myodbc.dll">>myodbc.reg
echo "SQLLevel"="1">>myodbc.reg
echo.>>myodbc.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers]>>myodbc.reg
echo "MySQL"="Installed">>myodbc.reg
echo.>>myodbc.reg
rem -----install the registry entries by executing the .REG file
start /wait myodbc.reg
rem ----clean up after we are done installing
del myodbc.reg
:bye
如果您查看注册表中现有的 DSN 配置,您将了解如何修改代码以适应您的情况
【讨论】:
完美!我在 REG_SZ 值“HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\[System DSN Name]\DBQ”中找到了存储 .mdb 路径的确切位置。谢谢! 无论好坏,我的被测应用程序已经使用 DSN 连接,我无法更改该代码。我只想在应用程序不知道的情况下切换 .mdb 文件,以使用不同的数据集测试应用程序。在我正在编写的测试脚本中,我什至没有建立连接,因此 DSN 与 DSN-less 对我来说并没有真正发挥作用。 如果您使用的是 DSN,那么您就是在建立连接,而不必在代码中。【参考方案2】:要回答所提出的问题,这里是使用 odbcconf.exe 而不是直接进入注册表的解决方案:
odbcconf.exe configsysdsn ^
"Microsoft Access Driver (*.mdb, *.accdb)" ^
"DSN=OurConnectionName;DBQ=X:\Path\to\OurMsAccessDB.mdb"
有两件事让我绊倒了一段时间:
确保在 64 位系统上使用 64 位 odbcconf.exe,请参阅 https://***.com/questions/6721702/windows-7-64-bit-odbc-drivers-for-ms-access-missing。 使用DBQ=
而不是 Database=
作为 mdb 路径。使用后者时,一切似乎都可以正常工作,但是连接链接已命名,但并未在 ODBC 管理器中实际定义。
【讨论】:
以上是关于用于更改 MS Access ODBC 系统 DSN 的 .mdb 文件路径的命令行?的主要内容,如果未能解决你的问题,请参考以下文章
使用 ODBC 连接时如何在 MS Access 或 SQL Server 中使用日期数据类型
使用 ODBC 链接到 MySql 时,MS Access 表单不刷新
ODBC 驱动程序(AcuODBC、MS Access 驱动程序)