zoukankan      html  css  js  c++  java
  • c#动态创建ODBC数据源

    使用C#有两种方法可以动态的创建ODBC数据源,这里我用比较常用的SQL2000作为例子。

    方法1:直接操作注册表,需要引用Microsoft.Win32命名空间

    /// <summary>

    /// 创建SQL数据源
    /// </summary>
    /// <param name="dns">数据源名称</param>
    /// <param name="server">服务器</param>
    /// <param name="database">数据库</param>
    /// <returns></returns>
    private bool CreateSqlODBC(string dsn, string server,string database)
    {
       
    try
       {
          RegistryKey regKey 
    = Registry.LocalMachine.OpenSubKey("SOFTWARE").OpenSubKey("ODBC").OpenSubKey("ODBC.INI"true).CreateSubKey(dsn);
          regKey.SetValue(
    "Driver"@"C:\WINDOWS\system32\SQLSRV32.dll");
          regKey.SetValue(
    "Server", server);
          regKey.SetValue(
    "Database", database);
          regKey 
    = Registry.LocalMachine.OpenSubKey("SOFTWARE").OpenSubKey("ODBC").OpenSubKey("ODBC.INI"true).OpenSubKey(

                       "ODBC Data Sources"true);
          regKey.SetValue(dns, 
    "SQL Server");
          
    return true;
        }
         
    catch
         {
          
    return false;
         }
    }

    方法2:使用P/Invoke(平台调用),需要引用System.Runtime.InteropServices命名空间,具体的函数参数MSDN有比较详细的解释

    [DllImport("ODBCCP32.DLL")]
    public static extern int SQLConfigDataSource(IntPtr hwndParent, int fRequest, string lpszDriver, string lpszAttributes); 

    private int CreateSqlODBC(string dsn, string description, string server, string database)
    {
               
    string lpszAttributes = string.Empty;
                lpszAttributes 
    += string.Format("DSN={0}\0",dsn);
                lpszAttributes 
    += string.Format("DESCRIPTION={0}\0", description);
                lpszAttributes 
    += string.Format("SERVER={0}\0", server);
                lpszAttributes 
    += string.Format("DATABASE={0}\0", database);
                
    return SQLConfigDataSource((IntPtr)04"SQL Server", lpszAttributes);
    }

     创建其他类型的ODBC数据源更改相应的驱动和注册表项即可。

  • 相关阅读:
    Hadoop 集群安装(从节点安装配置)
    Hadoop 集群安装(主节点安装)
    少儿编程(2):简单的数学计算
    少儿编程(1):计算思维
    Web测试入门:Selenium+Chrome+Python+Mac OS
    我为什么建议:在软工实践作业中增加性能测试分析的任务?
    基于码云开展程序设计教学的自动判分方法和代码框架?
    数值计算 的bug:(理论)数学上等价,实际运行未必等价
    【Alpha】Daily Scrum Meeting总结
    【Alpha】Daily Scrum Meeting第十次
  • 原文地址:https://www.cnblogs.com/figo/p/1286765.html
Copyright © 2011-2022 走看看