使用VB.NET创建ODBC DSN

问题描述:

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

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

this页面展示如何使用命令行实用程序odbcconf所以一旦你创建一个批处理脚本,可以根据自己的应用需求创建DSN在Windows中创建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数据访问组件中删除,如果长期使用此方法,则应重新考虑此方法。