C#DSN操作
在C#中可以获取DSN列表,也可以弹出ODBC数据源管理器进行设置。
1、C#获取机器上的DSN列表。
采用Microsoft.win32类提供的注册表类RegistryKey和Registry,访问系统注册表可获取ODBC数据服务列表。
获取系统DSN如下:
///创建两个RegistryKey类,一个将指向Root Path,另一个将指向子Path
RegistryKey regRootKey;
RegistryKey regSubKey;
///定义Root指向注册表HKEY_LOCAL_MACHINE节点,
///如果是需要获取用户DSN则需要使用 Registry.CurrentUser;
regRootKey = Registry.LocalMachine;
///定义注册表子Path
string strRegPath = @"SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources";
regSubKey = regRootKey.OpenSubKey(strRegPath);
string[] strDSNList = regSubKey.GetValueNames();
///关闭
regSubKey.Close();
regRootKey.Close();
2、弹出ODBC数据源管理器
使用C#提供的Environment类可以实现。
///获取ODBC的系统路径
string s=System.Environment.SystemDirectory.ToString() +"\\odbcad32.exe";
///Process提供对本地和远程进程的访问并使您能够启动和停止本地系统进程。使用该类启动ODBC对话框
Process myp=new Process();
myp.StartInfo.FileName=s;
myp.Start();
3、各种DSN类型的区别
DSN类型有以下三种:
用户DSN:该数据源只能对建立数据源的用户可见.
ODBC用户数据源存贮了如何与指定数据库提供者连接的信息.只对当前用户可见,而且只能用于当前机器上.这里的当前机器是只这个配置只对当前的机器有效,而不是说只能配置本机上的数据库.它可以配置局域网中另一台机器上的数据库.
系统DSN:该数据源对当前机器上所有的用户可见.
ODBC系统数据源存贮了如何指定数据库提供者连接的信息,系统数据对当前机器上的所有用户都是可见的,包括NT服务.也就是说在这里配置的数据源,只要是这台机器的用户都可以访问 .
文件DSN:该数据源对安装了相同驱动的用户可见
用户DSN只被用户直接使用,它只能用于当前机器中,ASP不能使用它.系统DSN允许所有的用户登陆到特定服务器上去访问数据库,任何具有权限有用户都可以访问系统DSN.在WEB应用程序中访问数据库时,通常都是建立系统DSN. 文件DSN将信息存储在后缀为.dsn的文本文件中,优点是便于移动.
用户DSN只是针对当前用户或者特定用户;系统DSN是底层的,针对全部用户。一般没有特殊情况时,建议使用使用系统DSN,通用性好。