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,通用性好。
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号