博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#动态创建ODBC数据源
阅读量:6816 次
发布时间:2019-06-26

本文共 1537 字,大约阅读时间需要 5 分钟。

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

 

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

 

/// /// 创建SQL数据源/// /// 数据源名称/// 服务器/// 数据库/// 
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)0, 4, "SQL Server", lpszAttributes);}

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

 

转载地址:http://jcbzl.baihongyu.com/

你可能感兴趣的文章
经纬度计算距离
查看>>
Linux 在添加一个新账号后却没有权限怎么办
查看>>
React 源码剖析系列 - 不可思议的 react diff
查看>>
走近抽象类与抽象方法
查看>>
4. 寻找两个有序数组的中位数
查看>>
React组件开发总结
查看>>
各种符号
查看>>
大道至简,职场上做人做事做管理
查看>>
抗干扰的秘诀:分类、整理与专注
查看>>
Number of Connected Components in an Undirected Graph
查看>>
BZOJ 3143 游走(高斯消元)
查看>>
SpringBoot 配置文件存放位置及读取顺序
查看>>
min.js格式化工具
查看>>
《软件工程-理论、方法与实践》读书笔记一
查看>>
POJ Problem Radar Installation 【贪心】
查看>>
redis 持久化方式
查看>>
Vue2.0设置反向代理解决跨域问题
查看>>
伪类link,hover,active,visited,focus的区别
查看>>
WTL 实践笔记
查看>>
漫谈C++:良好的编程习惯与编程要点(转载)
查看>>