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数据源更改相应的驱动和注册表项即可。

  • 相关阅读:
    对象池使用时要注意几点
    Flash3D学习计划(一)——3D渲染的一般管线流程
    714. Best Time to Buy and Sell Stock with Transaction Fee
    712. Minimum ASCII Delete Sum for Two Strings
    647. Palindromic Substrings(马拉车算法)
    413. Arithmetic Slices
    877. Stone Game
    338. Counting Bits
    303. Range Sum Query
    198. House Robber
  • 原文地址:https://www.cnblogs.com/figo/p/1286765.html
Copyright © 2011-2022 走看看