使用 VB.NET 创建 ODBC DSN

Posted

技术标签:

【中文标题】使用 VB.NET 创建 ODBC DSN【英文标题】:Create ODBC DSN using VB.NET 【发布时间】:2011-03-27 05:48:02 【问题描述】:

我想为数据库创建 ODBC DSN(只要用户设置应用程序,它就会包含在我的应用程序文件夹中)。我想知道如何使用所有必需的参数创建 ODBC,以便在运行设置时完成的第一件事是将数据库连接到应用程序。我尝试过使用默认的 VB.NET 安装向导和 Installshield。

【问题讨论】:

【参考方案1】:

我不知道通过安装程序或使用 VB.NET 创建 DSN 的任何方法,但使用 Windows 实用程序可以创建一个。

this 页面显示了如何使用命令行实用程序odbcconf 在 Windows 中创建 DSN,因此一旦您创建了一个可以根据您的应用程序要求创建 DSN 的批处理脚本,您可以在您的设置复制之前触发批处理执行文件到用户计算机。因此,在脚本执行后,应用程序安装将进一步复制剩余文件,安装完成后,应用程序启动,您与 DSN 的连接将按预期工作,因为现在已创建 DSN。虽然我没有使用过 InstallShield,但我使用 NSIS 的经验表明,通过安装程序执行批处理脚本肯定会在安装过程中弹出命令提示符窗口,这可能是您不希望的。

另一种避免显示命令提示符窗口的方法是在应用程序首次运行时执行批处理脚本(在静默模式下),然后再与数据库建立任何连接。您可以使用WScript.Shell 对象在不显示命令提示符窗口的情况下执行批处理文件 (.bat),如下所示。

Dim batfile As String

batfile = "C:\Program Files\Your App\YouDSNCreationBatchFile.bat"

Set WshShell = CreateObject("WScript.Shell")

cmds = WshShell.RUN("""" & batfile & """", 0, True) 'All Quotes are necessary if file path contains folders with spaces in thier names

Set WshShell = Nothing

虽然odbcconf也可以直接在VB中使用来创建DSN,但是如果你不想在连接之前调整你的应用程序代码来创建DSN,使用批处理脚本将是一个故障安全的解决方案,但是,正如我猜想的那样,您可能已经在try 块中连接了您的应用程序,因此,如果您捕获由于缺乏所需的 DSN 可用性而引发的异常,可以再次调用此批处理脚本来创建一个或提示用户。

!!重要提示:正如 MSDN 页面所说,odbcconf 实用程序可能会从 Windows 数据访问组件的未来版本中删除,如果您长期使用此方法,则应重新考虑此方法。

【讨论】:

以上是关于使用 VB.NET 创建 ODBC DSN的主要内容,如果未能解决你的问题,请参考以下文章

使用 ODBC DSN 在远程服务器中部署 SSAS 表格

ODBC创建DSN,连接EA

无法通过 Windows 2012 上的系统 dsn 使用 ODBC 连接连接到 SQL Server 2008

为 SQL Server Express 2012 ODBC DSN 配置用户时出现问题

不使用 DSN 时 R ODBC nanodbc 错误

ODBC 机器 DSN 设置存储在 Windows 中的啥位置?