如何在Visual Studio 2012 C#项目中使用SQLConfigDataSource

本文关键字:项目 SQLConfigDataSource 2012 Visual Studio | 更新日期: 2023-09-27 18:28:22

我想以编程方式创建一个用户DSN。我读过这个和类似的SO问题;控制MSDN论坛;并在其他几个地方进行了研究,以了解如何使SQLConfigDataSource发挥作用。在我上面链接的SO帖子中,我看到SQLConfigDataSourceW被引用,但找不到引用。

我想在Visual Studio 2012 C#项目中使用SQLConfigDataSource或类似的函数,但不知道在我的.cs文件中应该包含什么。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

我看过System.Data.Odbc,而SQLConfigDataSource似乎不在其中。我相信ODBC驱动程序已安装在我的工作站上。除了使用.reg文件或手动创建DSN之外,我还可以尝试其他哪些步骤?

如何在Visual Studio 2012 C#项目中使用SQLConfigDataSource

除了使用.reg文件或手动创建DSN之外,我还可以尝试通过编程方式创建用户DSN的其他步骤

您可以使用ODBCCONF.exe,这是一个命令行工具,允许您配置ODBC驱动程序和数据源名称。它使用SQLConfigDataSource函数。然而,这是如此古老的技术,微软警告说:

ODBCCONF.exe将在未来版本的Windows Data中删除访问组件。避免使用此功能,并计划修改当前使用此功能的应用程序。

我不确定停用ODBCCONF.exe会对SQLConfigDataSource产生什么影响,但看起来不太好。因此,最好的方法之一是使用推荐的PowerShell命令来管理驱动程序和数据源,以下是Windows数据访问组件PowerShell命令的列表。

您只需运行类似Add-OdbcDsn:的cmdlet

Add-OdbcDsn [-Name] <String> -DriverName <String> -DsnType <String> [-AsJob] [-CimSession <CimSession> ] [-PassThru] [-Platform <String> ] [-SetPropertyValue <String> ] [-ThrottleLimit <Int32> ] [ <CommonParameters>]

例如:

PS C:>添加OdbcDsn-Name"MyPayroll"-DriverName"SQL Server NativeClient 10.0"-DsType"System"-SetPropertyValue@("Server=MyServer","Trusted_Connection=是","Database=Payroll")

我猜你已经知道或可以很容易地找到如何在C#中执行这些powershell命令


不幸的是,上述powershell命令适用于Windows 8及更高版本。

对于Windows 7及以下版本,您可以:
a) 使用ODBCCONF.exe
b) 直接在C#中写入注册表
c) 使用SQLConfigDataSource函数,或
d) 使用适用于Windows7:的Powershell脚本

PS C:'> Add-ODBCconnection2HKCU.ps1

这是add-ODBCconnection2HKCU.ps1:

## Add to the "HKEY_CURRENT_USER" - registry ODBC update Add a ODBC Connection as a User DSN tab
$HKCUaddpath = "HKCU:'SOFTWARE'ODBC'ODBC.INI'LocalDeveloper"
cd HKCU:'SOFTWARE'ODBC'ODBC.INI'LocalDeveloper
md LocalDeveloper
Set-ItemProperty -path $HKCUaddpath -name Database -value "Developer"
Set-ItemProperty -path $HKCUaddpath -name Description -value "Local Developer database"
Set-ItemProperty -path $HKCUaddpath -name Driver -value "C:'Windows'System32'SQLSRV32.dll"
Set-ItemProperty -path $HKCUaddpath -name LastUser -value ""
Set-ItemProperty -path $HKCUaddpath -name Server -value "Max-PCWIN1"
Set-ItemProperty -path $HKCUaddpath -name Trusted_Connection -value "Yes"
## This is needed for this ODBC connection to show in the "ODBC Administator" application
cd HKCU:'SOFTWARE'ODBC'ODBC.INI''ODBC Data Sources'
Set-ItemProperty -path HKCU:'SOFTWARE'ODBC'ODBC.INI''ODBC Data Sources' -name LocalDeveloper -value "SQL Server"

参考:http://maxt2posh.wordpress.com/2009/06/07/powershell-working-with-odbc-dsn-connection/