




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
开放数据库互联 ODBC OpenDataBaseConnectivity 数据库 数据库 Database 是按照数据结构来组织 存储和管理数据的仓库 它产生于距今五十年前 随着信息技术和市场的发展 特别是二十世纪九十年代以后 数据管理不再仅仅是存储和管理数据 而转变成用户所需要的各种数据管理的方式 数据库有很多种类型 从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用 严格地说 数据库是 按照数据结构来组织 存储和管理数据的仓库 在经济管理的日常工作中 常常需要把某些相关的数据放进这样的 仓库 并根据管理的需要进行相应的处理 例如 企业或事业单位的人事部门常常要把本单位职工的基本情况 职工号 姓名 年龄 性别 籍贯 工资 简历等 存放在表中 这张表就可以看成是一个数据库 有了这个 数据仓库 我们就可以根据需要随时查询某职工的基本情况 也可以查询工资在某个范围内的职工人数等等 ODBC开放数据库互连 开放数据库互连 OpenDatabaseConnectivity ODBC 是微软公司开放服务结构 WOSA WindowsOpenServicesArchitecture 中有关数据库的一个组成部分 它建立了一组规范 并提供了一组对数据库访问的标准API 应用程序编程接口 这些API利用SQL来完成其大部分任务 ODBC本身也提供了对SQL语言的支持 用户可以直接将SQL语句送给ODBC 添加数据源 1 如何打开ODBC数据源管理器在WindowsServer2003中打开ODBC数据源管理器在 开始 菜单上 指向 管理工具 然后单击 数据源 ODBC 在Windows2000Server中打开ODBC数据源管理器在 开始 菜单中 指向 设置 然后单击 控制面板 在 控制面板 中 单击 管理工具 在 管理工具 中 单击 数据源 ODBC 在WindowsXPProfessional中打开ODBC数据源管理器在 开始 菜单中 单击 控制面板 在 控制面板 分类视图 中 单击 性能和维护 再单击 管理工具 或者在 控制面板 经典视图 中 单击 管理工具 在 管理工具 中 单击 数据源 ODBC 添加数据源 2 系统DSN和用户DSN区别不同DBMS驱动程序的设置并不相同 由DBMS自身提供ODBC数据源配置过程 docSQLServer的用户名和密码问题SQLServer连接问题 txt ODBCAPI 1 理论上 为了互操作 所有DBMS提供的ODBC调用函数和SQL语句应该完全一致 不可能驱动程序的一致性级别 ConformanceLevels API一致性 核心级 扩展1级 扩展2级语法一致性 最低限度SQL语法级 核心SQL语法级 扩展SQL语法级 ODBCAPI 3 ODBC标准数据类型以 SQL 开头 大写SQL CHAR SQL DECIMAL SQL INTEGER SQL FLOAT SQL VARCHAR SQL BIT等由DBMS的驱动程序完成自身数据类型和ODBC标准数据类型的映射 ODBCAPI 4 ODBC应用程序流程初始化阶段分配环境句柄分配连接句柄在分配连接句柄前 最好先设置环境句柄所用的ODBC参数建立连接分配语句句柄程序主体结束部分释放语句句柄断开数据源连接释放连接句柄释放环境句柄 ODBCAPI 4 什么是句柄 指向一段数据结构的指针 地址 为什么要用句柄ODBC应用程序有自己的运行环境 通过通过环境句柄获得一个环境句柄下可以建立多个连接句柄 一个连接句柄对应着一个数据源连接一个连接中可以建立多个语句句柄 ODBCAPI 5 申请句柄 SQLRETURNSQLAllocHandle HandleType InputHandle OutputHandlePtr HandleType是一个常数 定义了希望分配的句柄类型 可能值如下 SQL HANDLE ENV环境句柄 Environmenthandle SQL HANDLE DBC连接句柄 Connectionhandle SQL HANDLE STMT语句句柄 Statementhandle SQL HANDLE DESC描述符句柄 Descriptorhandle 描述符是一个数据集合描述了SQL语句参数或结果集列的元数据集合 ODBCAPI 6 InputHandle是指向父 文本 的句柄 环境句柄的是SQL NULL HANDLE或NULL OutputHandlePtr如果调用成功 将指向一个双字 其中包含了被分配的句柄 返回值如下 SQL SUCCESS函数成功完成 SQL SUCCESS WITH INFO函数成功完成 但带回非致命错误或警告 SQL ERROR函数调用失败 SQL INVALID HANDLE传送给函数的句柄非法 ODBCAPI 6 SQLAllocHandle retcode SQLAllocHandle SQL HANDLE ENV NULL ODBCAPI 7 连接数据库 SQLRETURNSQLConnect SQLHDBCConnectionHandle SQLCHAR ServerName SQLSMALLINTNameLength1 SQLCHAR UserName SQLSMALLINTNameLength2 SQLCHAR Authentication SQLSMALLINTNameLength3 ConnectionHanlde 为DBC句柄 即SQLAllocHandle SQL HANDLE DBC hDBC 申请的句柄 ServerName 为ODBC的DSN名称 NameLength1 指明参数ServerName数据的长度 ODBCAPI 8 UserName 数据库用户名 NameLength2 指明参数UserName数据的长度 Authentication 数据库用户密码 NameLength3 指明参数Authentication数据的长度 关于ServerName UserName Authentication参数长度可以直接指定也可以指定为SQL NTS表明参数是以NULL字符结尾 由系统自动计算 例如 retcode SQLConnect hdbc SQLCHAR odbc demo SQL NTS SQLCHAR user SQL NTS SQLCHAR password SQL NTS ODBCAPI 9 执行SQL命令的两种方式直接执行方式SQLExecdirectSQLBindColSQLFetch预处理 执行方式SQLPrepareSQLBindParameterSQLExecute预处理 执行方式适用于SQL语句中含有参数的情况 或大批量多次执行的情况 ODBCAPI 9 SQLExedirect 直接执行SQL语句SQLRETURNSQLExecDirect SQLHSTMTStatementHandle SQLCHAR StatementText SQLINTEGERTextLength StatementHandle SQL语句句柄 即SQLAllocHandle SQL HANDLE STMT hDBC 申请的句柄 StatementText SQL语句 TextLength 参数StatementText的长度 可以使用SQL NTS表示由系统自动计算 如果函数执行成功 你将会得到一个结果集 否则将返回错误信息 ODBCAPI 9 SQLBindCol 利用列绑定的方式在从结果集中读取字段值SQLRETURNSQLBindCol SQLHSTMTStatementHandle SQLUSMALLINTColumnNumber SQLSMALLINTTargetType SQLPOINTERTargetValuePtr SQLINTEGERBufferLength SQLLEN StrLen or Ind ODBCAPI 9 SQLBindCol StatementHandle STMT句柄 ColumnNumber 列的位置 从1开始计算 ValueType 指明用于和参数绑定的C语言数据类型 ParameterType 指明在存储过程中ODBC数据类型 BufferLength 指明参数指针所指向的缓冲区的字节数大小 对于字符串和结构需要指明大小 而对于普通的变量如SQLINTEGER SQLFLOAT等设置为0就可以了 StrLen or IndPtr 返回拷贝的缓冲区的数据的字节数 数值型数据为0 字符型数据为SQL NTS ODBCAPI 9 SQLGetData 得到当前记录的对应列值SQLRETURNSQLGetData SQLHSTMTStatementHandle SQLUSMALLINTColumnNumber SQLSMALLINTTargetType SQLPOINTERTargetValuePtr SQLINTEGERBufferLength SQLINTEGER StrLen or IndPtr SQLGetData和SQLBindCol的区别后者在fetch后不必再次执行 而前者要在循环中多次执行 ODBCAPI 9 SQLFetch 推进指向结果集的指针移动SQLRETURNSQLFetch SQLHSTMTStatementHandle 光标前后移动SQLRETURNSQLFetchScroll SQLHSTMTStatementHandle SQLSMALLINTFetchOrientation SQLINTEGERFetchOffset FetchOrientation的值 SQL FETCH NEXT SQL FETCH PRIOR SQL FETCH FIRST SQL FETCH LAST SQL FETCH ABSOLUTE SQL FETCH RELATIVE ODBCAPI 9 直接执行方式举例 直接执行方式举例 ODBCAPI 9 SQLPrepare 预编译带有参数的SQL语句SQLRETURNSQLPrepare SQLHSTMTStatementHandle SQLCHAR StatementText SQLINTEGERTextLength StatementHandle STMT句柄 StatementText 包含SQL语句的字符串 TextLength SQL语句的长度 或者使用SQL NTS ODBCAPI 9 SQLExecute 执行预处理过的SQL语句SQLRETURNSQLExecute SQLHSTMTStatementHandle StatementHandle必须是已经预处理过的语句句柄 ODBCAPI 9 SQLBindParameter SQLRETURNSQLBindParameter SQLHSTMTStatementHandle SQLUSMALLINTParameterNumber SQLSMALLINTInputOutputType SQLSMALLINTValueType SQLSMALLINTParameterType SQLUINTEGERColumnSize SQLSMALLINTDecimalDigits SQLPOINTERParameterValuePtr SQLINTEGERBufferLength SQLINTEGER StrLen or IndPtr ODBCAPI 9 SQLBindParameter StatementHandle 执行SQL语句STMT句柄 ParameterNumber 指明要将变量与第几个参数绑定 从1开始计算 InputOutputType 指明是输入还是输出参数 可以取值的范围为 SQL PARAM INPUT SQL PARAM OUTPUT SQL PARAM INPUT OUTPUT ValueType 指明用于和参数绑定的C语言数据类型 ParameterType 指明在存储过程中ODBC数据类型 ColumnSize 指明接收数据的宽度 对于字符串和结构需要指明数据的宽度 而对于普通的变量如SQLINTEGER SQLFLOAT等设置为0就可以了 DecimalDigits 当数据类型为SQL NUMERIC SQL DECIMAL时指明数字小数点的精度 否则填0 ParameterValuePtr 在作为输入参数指明参数的指针 在作为输出参数时指明接收数据的变量指针 BufferLength 指明参数指针所指向的缓冲区的字节数大小 对于字符串和结构需要指明大小 而对于普通的变量如SQLINTEGER SQLFLOAT等设置为0就可以了 StrLen or IndPtr 作为输入参数时指明数据的字节数大小 对于普通的定长变量如SQLINTEGER SQLFLOAT等设置为0就可以了 对于字符号串需要在此参数中指定字符串数据的长度 或者设置为SQL NULL DATA表明此参数为空值 或者设置为SQL NTS表明字符串以NULL字符结尾 对于结构需要指明结构的长度 当作为输出参数时 当SQL执行完毕后会在这个参数中返回拷贝的缓冲区的数据的字节数 ODBCAPI 10 释放句柄 释放句柄SQLFreeHandle HandleType handleName 断开连接SQLDisconnect 语句句柄 顺
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版商业票据贴现借款合同模板
- 二零二五年度文化演出活动合作合同模板
- 2025版物流运输合同纠纷解决范本
- 二零二五年度轻钢结构土建施工总承包协议
- 二零二五年建筑用烧结砖及标准砖购销及质量检测合同
- 二零二五版智能住宅社区共建合作协议
- 2025版铝合金模板工程安装劳务分包售后服务合同
- 二零二五年度房屋买卖合同附有房地产项目融资协议
- 2025版海上石油开采货物运输保险合同文档全文预览
- 奉贤区仓储知识培训中心课件
- 化学(基础模块)中职PPT完整全套教学课件
- 京东集团员工手册-京东
- 2023年苏州市星海实验中学小升初分班考试数学模拟试卷及答案解析
- GB/T 37915-2019社区商业设施设置与功能要求
- GB/T 31298-2014TC4钛合金厚板
- GB/T 27746-2011低压电器用金属氧化物压敏电阻器(MOV)技术规范
- GB/T 22237-2008表面活性剂表面张力的测定
- GB/T 13667.3-2003手动密集书架技术条件
- 导轨及线槽项目投资方案报告模板
- 复旦大学<比较财政学>课程教学大纲
- 书法的章法布局(完整版)
评论
0/150
提交评论