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), , "SQL Server", lpszAttributes);
}
创建其他类型的ODBC数据源更改相应的驱动和注册表项即可。
c#动态创建ODBC数据源的更多相关文章
- Delphi动态配置ODBC数据源--SQL Server版本
(摘自)http://jxlearnew.blog.163.com/blog/static/549786592007102451431413/ 这里介绍一种用Delphi来实现动态注册的方法,希望对各 ...
- spring 动态创建数据源
项目需求如下,公司对外提供服务,公司本身有个主库,另外公司会为每个新客户创建一个数据库,客户的数据库地址,用户名,密码,都保存在主数据库中.由于不断有新的客户加入,所以要求,项目根据主数据库中的信息, ...
- SQLSERVER 创建ODBC 报错的解决办法 SQLState:'01000'的解决方案
错误详情如下: SQLState:'01000' SQL Server 错误:14 [Microsoft][ODBC SQL Server Driver][DBNETLIB] ConnectionOp ...
- PLSQL 使用ODBC 数据源导入来自SQLSERVER的数据
1. 创建ODBC数据源 方法: 打开控制命令 Win10 运行->输入 control 查看方式大图标--选择 管理工具 2. 安装了 64位的plsql 应该也选用 64位的ODBC数据源 ...
- C++链接ODBC数据源:VS2013,Access
参考资料:1.http://wenku.baidu.com/view/a92d1a812cc58bd63186bd8d.html 2.http://blog.sina.com.cn/s/blog_68 ...
- 细聊Oracle通过ODBC数据源连接SQL Server数据库
类似文章搜索引擎上有很多,内容大致相同,今天所谓细聊是因为我在借鉴这些文章时候走了些弯路,所以写此文,为自己备忘,同时如果能为初涉此处知识点的小伙伴提供些帮助就更好了,文章结尾处的一些扩展有一定实战意 ...
- spring动态创建数据源
在最近的项目业务中,需要在程序的运行过程中,添加新的数据库添链接进来,然后从新数据库链接中读取数据. 网上查阅了资料,发现spring为多数据源提供了一个抽象类AbstractRoutingDataS ...
- Spring 动态创建并切换数据源
公司要求后端项目可以进行动态创建并切换数据源,看了网上很多例子大多数使用的都是Spring内置的AbstractRoutingDataSource进行的,使用此方法不是不行但是有诸多缺陷,比如切换时需 ...
- Oracle连接odbc数据源
Oracle连接odbc数据源 说明 oracle连接ODBC数据源有两种方式,hsodbc和dg4odbc,简单说dg4odbc是hsodbc的升级.两种连接方法大致一样,现将连接步骤说明如下: 检 ...
随机推荐
- 验证码识别--type5
验证码识别--type5 每一种验证码都是由人设计出来.在设计过程中,可能由于多个方面的原因,造成了这样或那样的可以被利用的漏洞.验证码识别,首先需要解决的问题就是发现这些漏洞--然后利用漏洞解决问题 ...
- Linux下c++中的atoi、atol、atoll、atof函数调用实例
本文中调用的四个函数如下: atoi函数:将字符串转化为int类型变量 atol函数:将字符串转化为long类型变量 atoll函数:将字符串转化为long long类型变量 atof函数:将字符串转 ...
- await和async关键字来写异步程序
await和async关键字出现于.Net5.0,方便写异步程序. 例子: public class MyClass { public MyClass() { DisplayValue(); //这里 ...
- 简单的ajax封装
// ajax发送post请求返回 json 数据function requestJSON(params) { params.dataType = 'json'; sendPost(par ...
- Bootstrap——Jumbotron编写
<div class="jumbotron"> <h1>Navbar example</h1> <p>T ...
- <转>32位移植到64位 注意事项
32bit-64bit porting work注意事项 64位服务器逐步普及,各条产品线对64位升级的需求也不断加大.在本文中,主要讨论向64位平台移植现有32位代码时,应注意的一些细小问题. 什么 ...
- 禁止在 .NET Framework 中执行用户代码。启用 "clr enabled" 配置选项
exec sp_configure 'show advanced options', '1';goreconfigure;goexec sp_configure 'clr enabled', '1'g ...
- Datatable分页
using System; using System.Collections.Generic; using System.Web; using System.Data; /// <summary ...
- [HDOJ5791]Two(DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5791 题意:给两个数列,求有多少个公共子序列. dp(i,j)表示a1~ai和b1~bj的公共子序列个 ...
- sql 语句 嵌套子查询 执行顺序分析
--创建测试数据create table Student(S# varchar(10),Sname nvarchar(10),Sage datetime,Ssex nvarchar(10))inser ...