我想为数据库创建ODBC DSN(无论何时用户设置应用程序,它都将包含在我的应用程序文件夹中)。我想知道如何使用所有必需参数创建ODBC,以便在运行安装程序时执行的第一件事是将数据库连接到应用程序。我尝试使用默认的VB.NET安装向导和Installshield。
答案 0 :(得分: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数据访问组件中删除,如果您长期使用此方法,则应重新考虑此方法。