




已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十二章SQL中的数据交换之调用层接口方式 12 1调用层接口概述12 2C S结构方式12 3ODBC介绍12 4ODBC工作流程12 5ODBC编程示例本章小结 12 1调用层接口概述 背景人机交互和自含式数据交换适用于单机或集中式结构传统的数据与应用捆绑的方式不适合网络环境将数据与应用分离 再通过接口将其连接起来可用专用的接口工具连接应用结点和数据结点通过应用程序调用接口的方式实现数据交换称为调用层接口 12 1调用层接口概述 标准及产品SQL 99中的SQL CLI 国际标准ODBC 开放式数据库互连 微软标准JDBC UNIX下基于java的标准 12 2C S结构方式 服务器S 客户机C 客户机C 客户机C 图12 1C S结构示意图 12 2C S结构方式 功能划分服务器上存放数据库 完成相应的存储逻辑功能客户端完成应用逻辑及表示逻辑的功能 业务流程及界面显示 优点数据共享结构灵活分布均匀 12 3ODBC介绍 数据源 Oracle数据源 Sybase数据源 SQLserver数据源 DB2数据源 应用程序 驱动程序管理器 驱动程序 oracle驱动程序 sybase驱动程序 DB2驱动程序 图12 2ODBC结构示意图 SQLserver驱动程序 12 3ODBC介绍 体系结构应用程序调用ODBC函数 实现连接数据源递交SQL语句 以ODBC参数形式出现 返回数据的接收处理断开连接驱动程序管理器连接管理各种DBMS的驱动程序 12 3ODBC介绍 驱动程序针对固定数据源的ODBC函数执行代码供应用程序调用一个ODBC接口可有若干驱动程序数据源提供数据可以是各种类型的数据库或文件结构 12 3ODBC介绍 ODBC接口完成应用程序与数据源之间的连接与断开完成主程序变量与SQL参数之间的接口完成SQL中集合量与主程序中标量间的接口完成主程序与SQL中的反馈信息的传递 连接管理 动态SQL 游标 诊断 12 4ODBC工作流程 1准备阶段安装ODBC驱动程序配置数据源2链接库和头文件设置SQL hSQLTYPES hSQLEXT hODBCSS hODBCINST hSQLUCODE h 12 4ODBC工作流程 3连接阶段4执行SQL语句5结束阶段 12 4ODBC工作流程 SQLAllocHandle SQLAllocHandle 分配环境句柄 分配连接句柄 SQLConnect SQLAllocHandle 分配语句句柄 连接 12 4ODBC工作流程 SQLPrepare SQLExecute SQLExecDirect SQLFetch SQLGetcol 循环 执行 循环结束 12 4ODBC工作流程 SQLFreeHandle SQLDisconnect 结束 SQLFreeHandle SQLFreeHandle 释放语句句柄 释放连接句柄 释放环境句柄 12 4ODBC工作流程 ODBC应用程序基本结构示例 头文件 include include include include include include include 12 4ODBC工作流程 SQLHENVhenv SQL NULL HENV 定义环境句柄变量 SQLHDBChdbc SQL NULL HDBC 定义连接句柄变量 SQLHSTMThstmt SQL NULL HSTMT 定义语句句柄变量 主函数 intmain 12 4ODBC工作流程 SQLRETURNretcode 定义返回代码变量 UCHAszDSN SQL MAX DSN LENGTH 1 Db SQL 数据源为Db SQL szUID MAXNAME myname 登录用户名为myname szAuthStr MAXNAME mypassword 用户密码是mypassword 12 4ODBC工作流程 分配ODBC环境句柄henv retcode SQLAllocHandle SQL HANDLE ENV NULL 12 4ODBC工作流程 连接数据源 retcode SQLConnect hdbc szDSN SWORD strlen szDSN szUID SWORD strlen szUID szAuthStr SWORD strlen szAuthStr 检测连接是否成功 if retcode SQL SUCCESS 连接成功 12 4ODBC工作流程 分配语句句柄hstmt retcode SQLAllocHandle SQL HANDLE STMT hdbc 设置语句句柄属性 并进行SQL处理 12 4ODBC工作流程 结束阶段 SQLFreeHandle SQL HANDLE STMT hstmt 释放语句句柄hstmt SQLDisconnect hdbc 断开数据源 SQLFreeHandle SQL HANDLE DBC hdbc 释放连接句柄 SQLFreeHandle SQL HANDLE ENV henv 释放环境句柄 return 0 3连接阶段 1 分配句柄分配环境句柄和连接句柄调用同一个函数 参数不同SQLRETURNSQLAllocHandle SQLSMALLINTHandleType SQLHANDLEInputHandle SQLHANDLE OutputHandlePtr 在分配句柄之前 需要先声明一个句柄变量SQLHENVhenv 声明环境句柄变量SQLHDBChdbc 声明连接句柄变量 3连接阶段 2 设置属性设置环境属性SQLRETURNSQLSetEnvAttr SQLHENVEnvironmentHandle SQLINTEGERAttribute SQLPOINTERValuePtr SQLINTEGERStringLength 如果想了解当前环境的属性设置 可调用SQLGetEnvAttr函数 3连接阶段 设置连接属性SQLRETURNSQLSetConnectAttr SQLHDBCConnectionHandle SQLINTEGERAttribute SQLPOINTERValuePtr SQLINTEGERStringLength 如果想了解当前连接的属性设置 可调用SQLGetConnectAttr函数 3连接阶段 3 连接数据源SQLRETURNSQLConnect SQLHDBCConnectionHandle SQLCHAR ServerName SQLSMALLINTNameLength1 SQLCHAR UserName SQLSMALLINTNameLength2 SQLCHAR Authentication SQLSMALLINTNameLength3 3连接阶段 4 初始化分配语句句柄调用函数SQLAllocHandle HandleType参数的取值为SQL HANDLE STMTSQLHSTMThstmt 声明语句句柄变量设置语句句柄属性SQLRETURNSQLSetStmtAttr SQLSTMTStatementHandle SQLINTEGERAttribute SQLPOINTERValuePtr SQLINTEGERStringLength 4执行SQL语句 1 直接执行适用于单次执行SQLRETURNSQLExecDirect SQLHSTMTStatementHandle SQLCHAR StatementText SQLINTEGERTextLength 例 retcode SQLExecDirect hstmt SELECT FROMbookWHEREname 数据库技术实用教程 SQL NTS 4执行SQL语句 2 准备执行SQLRETURNSQLPrepare SQLHSTMTStatementHandle SQLCHAR StatementText SQLINTEGERTextLength SQLRETURNSQLExecute SQLHSTMTStatementHandle 4执行SQL语句 例 Retcode SQLPrepare hstmt select frombookwherename 数据库应用 SQL NTS Retcode SQLExecute hstmt 注意 执行SQLExecDirect和SQLExecute语句时 系统会自动创建游标并打开在多次执行时 要调用SQLCloseCursor将与该句柄相关联的游标关闭 4执行SQL语句 4 参数绑定应用程序与动态SQL语句中参数标记的绑定调用SQLBindParameter函数完成变量绑定 执行一次就要传递一次参数大批量数据传递采用数据绑定方式列式绑定行式绑定结果集合与应用程序变量的绑定调用SQLBindCol函数完成列式绑定行式绑定 4执行SQL语句 5 结果集合的处理在SQLServer2000中使用游标时 不需要用到declare和open语句 系统会自动创建并打开获取数据SQLFetch从结果集中读取当前行中的数据 将游标推进一个行当游标到结果集结尾时 返回SQL NO DATASQLFetchScroll从结果集中读取指定行中的数据 4执行SQL语句 6 错误诊断SQL SUCCESS 函数执行成功 SQL SUCCESS WITH INFO 函数执行成功 可能有一条不致命的错误 警告 SQL NO DATA 没有更多的数据可用 说明结果集中的行都已经检索完 4执行SQL语句 SQL STILL EXECUTING 一个异步开始的函数还在执行 SQL ERROR 函数执行失败 SQL NEED DATA 需要更多数据 说明需要更多的参数数据或连接信息 SQL INVALID HANDLE 由于使用了无效的句柄导致函数执行失败 5结束阶段 释放句柄SQLRETURNSQLFreeHandle SQLSAMLLINTHandleType SQLHANDLEHandle 断开与数据源的连接SQLRETURNSQLDisconnect SQLHDBCConnectionHandle 12 5ODBC编程示例 例 使用ODBC编程实现计算职工年终奖金的应用需求计算公式 月基本工资 12 15 系数 病事假天数 50元 其中系数 处级1 科级0 8 科员0 5 工人0 4 12 5ODBC编程示例 奖金表结构salary设计如下表 12 5ODBC编程示例 在上表中前四项数据已存在 需计算后一项数据 即年度奖金 其奖金清单的原始数据如图所示 要求实现从salary表中读取相应数据 按照年终奖金计算公式进行计算处理 12 5ODBC编程示例 12 5ODBC编程示例 头文件 include include include include include include include include 12 5ODBC编程示例 SQLHENVhenv SQL NULL HENV 定义环境句柄变量 SQLHDBChdbc SQL NULL HDBC 定义连接句柄变量 SQLHSTMThstmt SQL NULL HSTMT 定义语句句柄变量 SQLHSTMThstmt2 SQL NULL HSTMT 定义语句句柄变量 12 5ODBC编程示例 intmain 声明及定义变量 SQLRETURNretcode SQLCHARname 10 50 SQLINTEGERtimes 10 floatbasic salary 10 SQLCHARjob level 10 50 floatyear bonus 10 SQLUSMALLINTStatus 10 SQLUINTEGERNumRowsFetched SQLINTEGERname len 10 time len 10 basic salary len 10 job level len 10 year bonus len 10 12 5ODBC编程示例 分配ODBC环境句柄henv retcode SQLAllocHandle SQL HANDLE ENV NULL 12 5ODBC编程示例 连接数据源 数据源为Db SQL 登录用户名为myname 密码为mypassword retcode SQLConnect hdbc SQLCHAR Db SQL SQL NTS unsignedchar myname SQL NTS unsignedchar mypassword SQL NTS 12 5ODBC编程示例 检测连接是否成功 if retcode SQL SUCCESS 12 5ODBC编程示例 分配语句句柄hstmt retcode SQLAllocHandle SQL HANDLE STMT hdbc 12 5ODBC编程示例 设置语句句柄属性 SQLSetStmtAttr hstmt SQL ATTR CURSOR TYPE SQLPOINTER SQL SCROLLABLE 0 SQLSetStmtAttr hstmt SQL ATTR CONCURRENCY SQLPOINTER SQL CONCUR LOCK 0 SQLSetStmtAttr hstmt SQL ATTR ROW BIND TYPE SQLPOINTER SQL BIND BY COLUMN 0 SQLSetStmtAttr hstmt SQL ATTR ROW ARRAY SIZE SQLPOINTER 10 0 SQLSetStmtAttr hstmt SQL ATTR ROW STATUS PTR Status 0 SQLSetStmtAttr hstmt SQL ATTR ROWS FETCHED PTR 12 5ODBC编程示例 执行SQL语句 获得结果集 retcode SQLExecDirect hstmt unsignedchar SELECTname basic salary job level timesFROMsalary SQL NTS 12 5ODBC编程示例 绑定列 SQLBindCol hstmt 1 SQL C CHAR name 50 name len SQLBindCol hstmt 2 SQL C FLOAT basic salary sizeof basic salary 0 basic salary len SQLBindCol hstmt 3 SQL C CHAR job level 50 job level len SQLBindCol hstmt 4 SQL C SLONG
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年游戏公司项目经理预测试题及正确答案解析
- 桥梁养护知识培训信息课件
- 2025年初创公司技术团队负责人的面试指南与预测题集萃
- 2025年区域可持续发展战略研究试题及答案
- 2025年高新技术应用工程师备考策略与模拟题答案
- 2025年注册验船师资格考试(B级练习题)强化训练试题及答案一
- 后端服务面试题目及答案
- 2025年注册验船师资格考试(B级船舶检验专业基础安全)测试题及答案二
- 2025年注册验船师资格考试(B级船舶检验专业基础环境与人员保护)测试题及答案一
- 2025年篮球教师招聘试题及答案
- 田螺姑娘课文讲解
- 云南迪庆香格里拉市招聘治安联防人员80人笔试模拟试题及参考答案详解1套
- 2025中国医药集团有限公司二级子公司及重点三级子公司高管岗位选聘笔试历年参考题库附带答案详解
- 幼儿园开学食品安全厨房培训
- 地面工程基础知识概要课件
- 村两委内部管理制度
- 工业管道的定期检查与维护措施
- 林业发展“十五五”发展规划
- 过氧化氢低温等离子灭菌器规范
- 2024年四川公安厅招聘警务辅助人员笔试真题
- 彩钢顶翻新施工方案
评论
0/150
提交评论