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,通用性好。

原文地址:https://www.cnblogs.com/scgw/p/1898651.html