ODBC连接数据库详细说明

这篇具有很好参考价值的文章主要介绍了ODBC连接数据库详细说明。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、ODBC简介

开放数据库互连(ODBC)是微软提出的数据库访问接口标准。开放数据库互连定义了访问数据库的API一个规范,这些API独立于不同厂商的DBMS,也独立于具体的编程语言。通过使用ODBC,应用程序能够使用相同的源代码和各种各样的数据库进行交互。这使得开发者不需要以特殊的数据库管理系统DBMS为目标,或者了解不同支撑背景的数据库的详细细节,就能够开发和发布客户/服务器应用程序。下面是ODBC应用系统的体系结构。

二、ODBC句柄

应用程序运行后,为维护执行的状态,ODBC 管理器和ODBC 驱动程序中必须保持足够的控制信息。应用程序要求ODBC 管理器和ODBC 驱动程序为ODBC环境、每个连接以及每个SQL语句分配描述/控制信息存储空间,并返回指向各个存储区的句柄供其使用。

(1)环境句柄:整个ODBC上下文的根句柄。标识全程数据访问控制信息的内存结构,包括有效连接句柄以及当前活动连接句柄。ODBC将环境句柄定义为HENV类型的变量。应用程序使用单一的环境句柄,在连接到数据源以前必须申请该句柄。

(2)连接句柄:管理有关数据库会话的所有信息。连接句柄标识每个特定的连接信息的内存结构。ODBC将环境句柄定义为HDBC类型的变量。应用程序在连接数据源之前申请连接句柄。每个连接句柄与环境句柄有关,环境句柄上可以有多个与其有关的连接句柄。

(3)语句句柄:ODBC语句包括应用访问数据源的SQL语句和语句相关的管理信息,语句句柄标识每个语句管理信息的内存结构。ODBC将语句句柄定义为HSTMT类型的变量。应用程序在提交SQL请求之前也必须申请语句句柄。每个语句句柄与一个连接句柄有关,每个连接句柄上可以有多个与其有关的语句句柄。

三、ODBC程序执行流程

Ø 分配环境句柄

基于ODBC3.X版本的应用统一使用SQLAllocHandle来分配句柄。调用时设计不同的句柄类型就可以获得该类型的句柄。但在API内部实现上一般重新转换为执行SQLAllocEnv,SQLAllocConnect和SQLAllocStmt,这样可以达到兼容和代码重用作用。SQLAllocEnv:用来分配环境句柄。

例如:

ret = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &oraclehenv);

Ø 分配连接句柄

SQLAllocConnect:用来分配连接句柄。连接句柄提供对一些信息的访问,例如,在连接上的有效语句及标识符句柄,以及当前是否打开一些一个事务处理。调用SQLAllocConnect 函 数 获 取 连 接 句 柄。例如:

 ret = SQLAllocHandle(SQL_HANDLE_DBC, oraclehenv, &oraclehdbc);

Ø 建立数据源

使用已分配的连接句柄来建立应用程序和数据源/数据库系统的连接,进行句柄和数据源的绑定。绑定也由目标数据源的ODBC驱动程序完成。

例 如:

ret = SQLConnect(oraclehdbc,                                                    

"conn",SQL_NTS, //ODBC的DNS名称

"scott",SQL_NTS, //用户账号

"123",SQL_NTS);     //密码

Ø 分配语句句柄

用户对DBC数据源的存取操作,都是通过SQL语句实现的。在这个过程中,应用程序 将通过连接向ODBC数据库提交SQL语句,以完成用户请求的操作。即通过执行SQLAllocHandle或SQLAllocStmt来分配语句句柄。调用SQLAllocStmt 函数获取语句句柄。例如:

SQLstmt= "SELECT * FROM authors"

rc= SQLAllocStmt(hdbc, hstmt)

Ø 执行SQL语句

执行SQL语句。 执行SQL 语 句 的方法比较多, 最简单明了的方法是调用SQLAllocStmt函数,例如:

SQLstmt= "SELECT * FROM authors"

rc= SQLExecDirect(hstmt, SQLstmt, Len(SQLstmt))

如果SQL语句被顺利提交并正确执行,那么就会产生一个结果集。检索结果集的方法有很多,最简单最直接的方法是调用SQLFetch 和SQLGetData 函 数。

SQLFetch函数的功能是将结果集的当前记录指针移至下一个记录;

SQLGetData函数的功能是提取结果集中当前记录的某个字段值。通常可以采用一个循环以提取结果集中所有记录的所有字段值,该循环重复执行SQLFetch和SQLGetData函数,直至SQLFetch函数返回SQL_NO_DATA_FOUND, 这表示已经到达结果集的末尾。

DimColVal As String * 225

ColVal= String(255, 0)

Ø 结束应用程序

在应用程序完成数据库操作, 退出运行之前,必须释放程序中使用的系统资源。这些系统资源包括:语句句柄、连接句柄和ODBC环境句柄。完成这个过程的如下:

调用SQLFreeStmt 函数释放语句句柄及其相关的系统资源。例如:

rc= SQLFreeStmt(hstmt, SQL_DROP)

调用SQLDisconnect 函数关闭连接。 例 如:

rc= SQLDisconnect(hdbc)

调用SQLFreeConnect函数释放连接句柄及其相关的系统资源。例如:

rc= SQLFreeConnect(hdbc)

调用SQLFreeEnv函数释放环境句柄及其相关的系统资源,停止ODBC 操作。 例如:

rc= SQLFreeEnv(henv)

(7)错 误 处 理

所有DBCAPI函 数, 若在执行期间发生错误, 都将返回一个标准错误代码SQL_ERROR。

一般来讲,在每次调用ODBC API 函 数 之 后, 都应该检查该函数返回值,确定该函数是否成功地执行,再决定是否继续后续过程。 而详细的错误信息,可以调用SQLError 函数获得。SQLError 函数将返回下列信息: 标准的ODBC错误状态码 ODBC 数据源提供的内部错误编码错误信息串

四、开发环境的配置

1.创建Oracle ODBC数据源

对于WIN 7系统来说,打开控制面板,找到ODBC,具体位置如下图所示,如果没有找到,可以在右上角搜索栏里面输入ODBC,就可以找到了。

对于WIN XP系统来说,打开控制面板,找到管理工具,找到数据源(ODBC),显示ODBC数据源管理器对话框。对话框如下图所示。

2.设置和配置一个系统DSN,单击“系统DSN标签”,选择“添加”。

3.找到需要配置的数据源,单击完成,弹出如下对话框,

4.输入数据源的名称,一个简单的描述,用户名和网络连接名。点击确认。文章来源地址https://www.toymoban.com/news/detail-401199.html

五、学生表创建

create table stu(

sno char(11) ,

sname varchar2(10),

sex char(2),

sage number,

sdepart varchar2(30)

);

到了这里,关于ODBC连接数据库详细说明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python使用odbc连接db2、sqlserver数据库

    先介绍安装odbc驱动,如果已安装跳过次环节 参考链接:linux环境odbc驱动安装 - 哔哩哔哩 也可参考微软官网(Windows驱动也有介绍):安装 Microsoft ODBC Driver for SQL Server (Linux) - ODBC Driver for SQL Server | Microsoft Learn ODBC Driver是一种动态链接库 (DLL),支持 ODBC 的应用程序(如 Excel)可

    2024年02月10日
    浏览(44)
  • 阿里云RDS关系型数据库详细介绍_多版本数据库说明

    阿里云RDS关系型数据库大全,关系型数据库包括MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等,NoSQL数据库如Redis、Tair、Lindorm和MongoDB,阿里云百科分享阿里云RDS关系型数据库大全: 目录 阿里云RDS关系型数据库大全 RDS关系型数据库大全 云原生数据库 PolarDB MySQL 版 云原生数据库

    2024年02月07日
    浏览(52)
  • 阿里云关系型数据库RDS详细说明

    阿里云RDS关系型数据库大全,关系型数据库包括MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等,NoSQL数据库如Redis、Tair、Lindorm和MongoDB,阿里云百科分享阿里云RDS关系型数据库大全: 目录 阿里云RDS关系型数据库大全 RDS关系型数据库大全 云原生数据库 PolarDB MySQL 版 云原生数据库

    2024年02月07日
    浏览(42)
  • Qt程序连接Access数据库,出现“[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 QODBC3: Unable to connect“错误的解决办法

    1、\\\"[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 QODBC3: Unable to connect\\\" 或者 2、\\\"[Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配 QODBC3: Unable to connect\\\"的错误的解决办法) 电脑系统:windows 10 64位操作系统,基

    2024年02月05日
    浏览(46)
  • [虚幻引擎 MongoDB Client 插件说明] DTMongoDB MongoDB数据库连接插件,UE蓝图可以操作MongoDB数据库增删改查。

    本插件可以在UE里面使用蓝图操作MongoDB数据库, 对数据库进行查询,删除,插入,替换,更新操作。 插件下载地址在文章最后。 Create MongoDB Client - 创建客户端对象 创建一个 MongoDB 客户端对象。 Connect By Url - 连接到数据库 Url :MongoDB的连接地址。 如 mongoDB://account:password@ip:

    2024年02月14日
    浏览(96)
  • MySQL数据库,JDBC连接数据库操作流程详细介绍

    在学完 MySQL 和 Java 后,我们通常会尝试使用 Java编译器 连接 MySQL数据库,从而达到使用编译器来操作数据库的效果。连接的这个过程会用 JDBC 相关知识,因此我把 JDBC 包的下载及导入流程,以及 JDBC 的使用流程整理下来分享给大家。 目录 1. 啥是JDBC? 2. JDBC依赖包 2.1 依赖包

    2024年02月06日
    浏览(104)
  • 基于ODBC的数据库应用(MFC)

    1.数据库和DBMS 数据库是指以一定的组织形式存放在计算机上的相互关联的数据的集合。一般一个库中有多个表组成,一张表中由多条记录组成,一条记录由若干字段组成。 例: 学生信息库——基本信息表、成绩表 基本信息表——每个学生的基本信息记录 基本信息记录——

    2024年02月02日
    浏览(43)
  • 数据库开发之内连接和外连接的详细解析

    内连接查询:查询两表或多表中交集部分数据。 内连接从语法上可以分为: 隐式内连接 显式内连接 隐式内连接语法: 显式内连接语法: 案例:查询员工的姓名及所属的部门名称 隐式内连接实现 显式内连接实现 多表查询时给表起别名: tableA as 别名1 , tableB as 别名2 ; tabl

    2024年02月04日
    浏览(79)
  • 【MySQL】MySQL数据库,RDBMS 术语,使用说明和报错解决的详细讲解

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数

    2024年02月11日
    浏览(64)
  • PowerDesigner 连接MySQL数据库详细步骤

    1、新建一个 Physical Data ,选择自己要连接的数据库 在PowerDesigner菜单栏中,依次点击“File -New Model-Physical Data” 点击OK 2、连接数据源 依次点击“File -Reverse Enginner-Database…” 显示如下页面,点击确定 点击红框,弹出一下画面 点击configure… 点击创建新的数据源,选择用户数据

    2024年02月11日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包