Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5381200
  • 博文数量: 671
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 7310
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-14 09:56
文章分类

全部博文(671)

文章存档

2011年(1)

2010年(2)

2009年(24)

2008年(271)

2007年(319)

2006年(54)

我的朋友

分类: C/C++

2008-10-23 17:59:51

如何使用 SqlConfigDataSource 创建 ODBC 数据源
 

创建ODBC数据源可以调用Windows系统子目
录下的动态链接库Odbcint.dll中的函数SQLConfigDataSource()
该函数可以动态地增加、修改和删除
数据源。
SQLConfigDataSource()函数
SQLConfigDataSource()的原型如下:
BOOL SQLConfigDataSource(HWND hwndParent, UINT
fRequest,LPCSTR IpszDriver, LPCSTR IpszAttributes);
其中四个参数的用法如下:
●参数hwndPwent是父级窗口句柄。如果句柄
为NULL,将不会显示一些有关的对话框。
如果参数 IpszAttributes提供的信息不够完善,
在创建过程中就会出现对话框要求用户提供相应信
息。
●参数fRequest可以设置为下面的数值之一:
ODBC_ADD_DSN: 增加_个新数据源
ODBC_CONHG_DSN: 配置(修改)一个已经存在的数据源
ODBC_REMOVE_DSN: 删除一个已经存在的数据源
ODBC_ADD_SYS_DSN:. 增加一个新的系统数据源
ODBC_CONFIG—SYS—DSN: 更改一个已经存在的系统数据源
ODBC_REMOVE_SYS_DSN:. 删除一个已经存在的系统数据源
●参数lpszDriver是数据库引擎名称,可以参见
ODBC管理器中对ODBC驱动程序的描述。比如要加
载的是Excel数据库,那么数据库引擎名称就为Microsoft Excel Driver(*.xls)

●参数lpszAttributes为一连串的"KeyName=value"
字符串,每两个KeyName值之间用""字
符隔开。KeyName主要是新数据源缺省的驱动程序
注册说明,其中最主要的关键字是"DSN"-----    新
数据源的名称,其余关键字则根据不同的数据源有
不同要求。关于lpszAttributes参数的具体设置,详
细可以参考Windows系统目录下帮助文件
Odbcjtn.hlp主题目录标签中的"ODBC API函数改
|SQLConfigDatasource"条目。
2.SqlConfigDataSource的应用条件
  使用SqlConfigDataSource函数之前,必须把
ODBCINST.H文件包含在工程头文件中,将ODBC-
CP32.LIB加人工程,同时保证ODBCCP32.DLL
运行时处于系统子目录下。

例:

SQLConfigDataSource(NULL,ODBC_ADD_DSN, "PostgreSQL", 
"DSN=abc\0" 
"Description=abcdef\0" 
"Server=192.168.0.1\0" 
"DataBase=mybase\0" 
"ReadOnly=0\0" 
"Port=5432\0");

 

 

Option Explicit

Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" _
   (ByVal hwndParent As Long, ByVal fRequest As Long, _
   ByVal lpszDriver As String, ByVal lpszAttributes As String) _
   As Long

Private Const ODBC_ADD_SYS_DSN = 4

 

Public Function CreateSQLServerDSN(DSNName As String, _
   ServerName As String, Database As String) As Boolean

'PURPOSE: 'CREATES A SYSTEM DSN FOR AN SQL SERVER DATABASE
'PARAMETERS: 'DSNName = DSN Name
             'ServerName = Name of Server
             'Database = Database to Use
'RETURNS: True if successful, false otherwise
'EXAMPLE: CreateSQLServerDSN "MyDSN", "MyServer", "MyDatabase"

Dim sAttributes As String

sAttributes = "DSN=" & DSNName & Chr(0)
sAttributes = sAttributes & "Server=" & ServerName & Chr(0)
sAttributes = sAttributes & "Database=" & Database & Chr(0)
CreateSQLServerDSN = CreateDSN("SQL Server", sAttributes)

End Function

Public Function CreateAccessDSN(DSNName As String, _
  DatabaseFullPath As String) As Boolean

'PURPOSE: 'CREATES A SYSTEM DSN FOR AN ACCESS DATABASE
'PARAMETERS: 'DSNName = DSN Name
             'DatabaseFullPath = Full Path to .mdb file
'RETURNS: True if successful, false otherwise
'EXAMPLE: CreateAccessDSN "MyDSN", "C:\MyDb.mdb"

    Dim sAttributes As String
   
    'TEST TO SEE IF FILE EXISTS: YOU CAN REMOVE IF YOU
    'DON'T WANT IT
    If Dir(DatabaseFullPath) = "" Then Exit Function
   
sAttributes = "DSN=" & DSNName & Chr(0)
sAttributes = sAttributes & "DBQ=" & DatabaseFullPath & Chr(0)
CreateAccessDSN = CreateDSN("Microsoft Access Driver (*.mdb)", _
   sAttributes)

End Function

Public Function CreateDSN(Driver As String, Attributes As _
  String) As Boolean

'PURPOSE: CREATES A SYSTEM DSN
'PARAMETERS: 'Driver = DriverName
'ATTRIBUTES: 'Attributes; varies as a function
             'of the Driver
'EXAMPLE: Refer to Code Above

    CreateDSN = SQLConfigDataSource(0&, ODBC_ADD_SYS_DSN, _
      Driver, Attributes)
       
End Function

阅读(2935) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~