怎样用代码建立一个ODBC数据源?

qbilbo 2002-09-28 09:40:40
如题。
另外怎样判断系统中是否已经建立了该数据源?
...全文
65 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qbilbo 2002-09-28
  • 打赏
  • 举报
回复
这么快就有答案了,真是太好了! :)
ivt 2002-09-28
  • 打赏
  • 举报
回复
用代码建立DSN(SQL)
Private Const ODBC_ADD_DSN = 1
Private Const ODBC_CONFIG_DSN = 2
Private Const ODBC_REMOVE_DSN = 3
Private Const ODBC_ADD_SYS_DSN = 4
Private Const ODBC_REMOVE_SYS_DSN = 6
Private Const vbAPINull As Long = 0&
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
Public Sub CreateDSN(sDSN As String)
On Error Resume Next
Dim nRet As Long
Dim sDriver As String
Dim sAttributes As String
sDriver = "SQl server"
sAttributes = "DSN=" & sDSN & Chr$(0)
sAttributes = sAttributes & "Server=(local)" & Chr$(0)
sAttributes = sAttributes & "Database=webstation" & Chr$(0)
nRet = SQLConfigDataSource(vbAPINull, ODBC_ADD_SYS_DSN, sDriver, sAttributes)
End Sub
Public Sub DeleteDSN(sDSN As String)
On Error Resume Next
Dim nRet As Long
Dim sDriver As String
Dim sAttributes As String
sDriver = "SQl server"
sAttributes = sAttributes & "DSN=" & sDSN & Chr$(0)
nRet = SQLConfigDataSource(vbAPINull, ODBC_REMOVE_SYS_DSN, sDriver, sAttributes)
End Sub
Private Sub Command1_Click()
CreateDSN "Test"
End Sub
Private Sub Command2_Click()
DeleteDSN "Test"
End Sub






ODBC DSN Connections
Using an ODBC DSN (Data Source Name) is a two step process.

1) You must first create the DSN via the "ODBC Data Source Administrator"
program found in your computer's Control Panel (or Administrative Tools
menu in Windows 2000). Make sure to create a SYSTEM DSN (not a USER
DSN) when using ASP. You can also create the DSN via Visual Basic code.

2) Then use the following connection string - with your own DSN
name of course.

ODBC - DSN

oConn.Open "DSN=mySystemDSN;" & _
"Uid=myUsername;" & _
"Pwd=myPassword;"

ODBC - File DSN

oConn.Open "FILEDSN=c:\somepath\mydb.dsn;" & _
"Uid=myUsername;" & _
"Pwd=myPassword;"


Visual Basic 编程资源大全里的一篇文章

主题:如何动态新增、移除 ODBC DSN?
版本:VB6 / VB5 / VB4-32

一般我们建立 Client 端 DSN 都是在使用者的机器上进入【控制面板】【ODBC 数据源(32位)】去建立,但是如果我们开发的 APP 使用者很多时,这就有点累人了,所以我们可以將这个动作放在程序中!

新增 DSN 的方法有二种:
1、使用 DBEngine 控件的 RegisterDatabase 方法
2、呼叫 SQLConfigDataSource API

不管使用以上任何一种方法新增 DSN,一共会写入二个地方,一个是注册表,一个是 ODBC.INI。
而刪除 DSN 的方法同上面的第二种方法,呼叫 SQLConfigDataSource API。

以下之模块以 Oracle73 Ver 2.5 为例,在 Form 的声明区中加入以下声明及模块:

Private Const ODBC_ADD_DSN = 1 'Add data source
Private Const ODBC_CONFIG_DSN = 2 'Configure (edit) data source
Private Const ODBC_REMOVE_DSN = 3 'Remove data source
Private Const vbAPINull As Long = 0& 'NULL Pointer

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

Public Sub CreateDSN(sDSN As String)
Dim nRet As Long
Dim sDriver As String
Dim sAttributes As String
sDriver = "Oracle73 Ver 2.5"
sAttributes = "Server=Oracle8" & Chr$(0)
sAttributes = sAttributes & "DESCRIPTION=" & sDSN & Chr$(0)
'sAttributes = sAttributes & "DSN=" & sDSN & Chr$(0)
sAttributes = sAttributes & "DATABASE=DBFinance" & Chr$(0)
sAttributes = sAttributes & "Userid=Scott" & Chr$(0)
'sAttributes = sAttributes & "PWD=myPassword" & Chr$(0)
DBEngine.RegisterDatabase sDSN, sDriver, True, sAttributes '注一
'nRet = SQLConfigDataSource(vbAPINull, ODBC_ADD_DSN, sDriver, sAttributes) '注二
End Sub

Public Sub DeleteDSN(sDSN As String)
Dim nRet As Long
Dim sDriver As String
Dim sAttributes As String
sDriver = "Oracle73 Ver 2.5"
sAttributes = sAttributes & "DSN=" & sDSN & Chr$(0)
nRet = SQLConfigDataSource(vbAPINull, ODBC_REMOVE_DSN, sDriver, sAttributes)
End Sub
'假设要产生的 DSN 为 Test,实际使用示例如下:

Private Sub Command1_Click()
CreateDSN "Test"
End Sub

Private Sub Command2_Click()
DeleteDSN "Test"
End Sub
'而写到系統的数据如下:
1、ODBC.INI

[ODBC 32 bit Data Sources]
Test=Oracle73 Ver 2.5 (32 bit)

[Test]
Driver32=C:\ORAWIN95\ODBC250\sqo32_73.dll
2、注册表

机码:HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources
名称:Test 数据:Oracle73 Ver 2.5

机码:HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\Test
名称:Description 数据:Test
名称:Driver 数据:C:\ORAWIN95\ODBC250\sqo32_73.dll
名称:Server 数据:Oracle8
名称:UserId 数据:Scott
※注一及注二可任选一种,只要將不使用的方法 Mark 起來即可!
※若您想使用其他之数据库,只要將以上模块稍作修改即可!
nik_Amis 2002-09-28
  • 打赏
  • 举报
回复
Private Declare Function SQLDataSources Lib "ODBC32.DLL" (ByVal henv As Long, ByVal fDirection As Integer, ByVal szDSN As String, ByVal cbDSNMax As Integer, pcbDSN As Integer, ByVal szDescription As String, ByVal cbDescriptionMax As Integer, pcbDescription As Integer) As Integer
Private Declare Function SQLAllocEnv Lib "ODBC32.DLL" (ByRef env As Long) As Long
shupianbird 2002-09-28
  • 打赏
  • 举报
回复
查sql打头的API
6.1 6.1 数据库连接技术( 数据库连接技术(ODBC ODBC) ) 1 数据库原理及应用 数据库系统原理与开发 电子科技大学-陈安龙 了解数据库编程的内容 了解ODBC的技术背景 掌握数据库ODBC的层次架构 理解应用程序使用ODBC访问数据库的步骤 掌握ODBC数据源的配置方法 【 【本节的主要内容 本节的主要内容】 】 2 数据库原理及应用 数据库系统原理与开发 电子科技大学-陈安龙 一、数据库编程简介 (1)客户端应用编程 (2)数据库服务器端编程 (3)编程结合ODBC/JDBC 3 数据库原理及应用 数据库系统原理与开发 电子科技大学-陈安龙 二、ODBC的技术背景 在传统应用开发,应用系统通常选用特定的DBMS管理系统; 网络环境下,应用系统通常需要对多种数据库的实现互连和资源共享; 如果从一种DBMS改变到另一种DBMS,就意味着要重写应用程序; 而在同一应用系统中,编制多种能在不同的DBMS上运行的应用程序, 显然不是可取的方法。 4 数据库原理及应用 数据库系统原理与开发 电子科技大学-陈安龙 二、ODBC的技术背景(续) Microsoft推出了开放式数据库互连(Open DataBase Connectivity,简写 为ODBC)技术。 ODBC 实现 了应用程序对 多种不同 DBMS 的数据库 的访问, 据库连接方式的变革。 5 数据库原理及应用 数据库系统原理与开发 电子科技大学-陈安龙 二、ODBC的技术背景(续) ODBC定义了一套基于SQL的、公共的、与数据库无关的API(应用程 序设计接口); 使每个应用程序利用相同的源代码就可访问不同的数据库系统,存取 多个数据库中的数据; 从而使得应用程序与数据库管理系统(DBMS)之间在逻辑上的独立 性,使应用程序具有数据库无关性。 6 数据库原理及应用 数据库系统原理与开发 电子科技大学-陈安龙 三、ODBC的层次结构 ODBC应用程序接口 客户端数据库应用程序 ODBC驱动程序管理器 驱动程序1 驱动程序2 驱动程序n 数据源1 数据源2 数据源n Oracle DBMS PostgreSQL DBMS SQL Server DBMS Oracle DB PostgreSQL DB SQL Server DB … … … 由应用数据库设计人员提供 由操作系统提供 由各数 据库厂 商提供 请求与数据源的连接和会话 向数据源发送SQL请求 对SQL请求的结果定义存储区 和数据格式 请求结果 处理错误 如果需要,把结果返回给用户 对事务进行控制,请求执行或 回退操作 终止对数据源的连接 7 数据库原理及应用 数据库系统原理与开发 电子科技大学-陈安龙 三、ODBC的层次结构(续) ODBC应用程序接口 客户端数据库应用程序 ODBC驱动程序管理器 驱动程序1 驱动程序2 驱动程序n 数据源1 数据源2 数据源n Oracle DBMS PostgreSQL DBMS SQL Server DBMS Oracle DB PostgreSQL DB SQL Server DB … … … 由应用数据库设计人员提供 由操作系统提供 由各数 据库厂 商提供 ODBC应用程序接口: 是一种使用ODBC技术实现应用程 序与数据库互连的标准接口。 8 数据库原理及应用 数据库系统原理与开发 电子科技大学-陈安龙 三、ODBC的层次结构(续) ODBC应用程序接口 客户端数据库应用程序 ODBC驱动程序管理器 驱动程序1 驱动程序2 驱动程序n 数据源1 数据源2 数据源n Oracle DBMS PostgreSQL DBMS SQL Server DBMS Oracle DB PostgreSQL DB SQL Server DB … … … 由应用数据库设计人员提供 由操作系统提供 由各数 据库厂 商提供 ODBC驱动程序管理器: 用于管理系统中的各种驱动程序。 9 数据库原理及应用 数据库系统原理与开发 电子科技大学-陈安龙 三、ODBC的层次结构(续) ODBC应用程序接口 客户端数据库应用程序 ODBC驱动程序管理器 驱动程序1 驱动程序2 驱动程序n 数据源1 数据源2 数据源n Oracle DBMS PostgreSQL DBMS SQL Server DBMS Oracle DB PostgreSQL DB SQL Server DB … … … 由应用数据库设计人员提供 由操作系统提供 由各数 据库厂 商提供 驱动程序是一个用于支持 ODBC函数调用的模块,通 常是一个动态链接库DLL。 不同RDBMS的驱动程序是 不同的。每种数据库都要向 ODBC驱动程序管理器注册 它自己的驱动程序。 建立数据源的连接 向数据源提交请求 在应用程序需求

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧