已阅读5页,还剩58页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第14讲数据访问层专题 从企业开发角度出发主讲人 李洪波 1 第14讲数据访问层专题 实验计划 实现技术 概念分析 2 第14讲数据访问层专题 实验计划 实现技术 概念分析 3 1 数据访问层概念分析 用户 应用程序 数据库 客户端 网络 图1单层体系结构 4 1 数据访问层概念分析 图2双层体系结构 用户 应用程序 数据库 服务器 客户端 网络 应用服务器 5 1 数据访问层概念分析 图3三层体系结构 表示层 数据访问层 业务逻辑层 数据库 6 1 数据访问层概念分析 测试程序 EXE DLL VisualC 2010 SQLServerManagement2008Express 7 1 数据访问层概念分析 测试程序 ODBC SQLServerManagement2008Express EXE DLL ODBC32 DLL 8 1 数据访问层概念分析 测试程序 SQLServerManagement2008Express ADO ODBC EXE DLL VisualC 2010 msado15 dll ODBC32 DLL 9 1 数据访问层概念分析 动态链接库ADO ODBC动态SQL封装用户访问控制 企业级应用技术的集成 10 第14讲数据访问层专题 实验计划 实现技术 概念分析 11 2 实验计划 实验任务 运用VC动态链接库技术封装ADO访问数据库 实验要求 1 透彻理解数据访问层在数据库应用系统中的作用2 熟练运用企业实用技术数据访问层 12 实验目标 以此为范版直接扩展到企业实际项目开发中去 2 实验计划 实验方法 1 依托商业银行数据库 按先简单再综合的次序展开 2 教师讲授学生自训相结合 讲授案例与自训案例分开 3 分组实验 设问与询问捕获问题并加以解决 4 人人提交源程序 抽样验收 内容与时间安排 13 第14讲数据访问层专题 实验计划 实现技术 概念分析 14 3 数据访问层的实现技术 2014 11 05 ADO的应用实例 数据访问层的封装 动态查询 对数据库修改 15 3 1简单的ADO应用实例 样例功能描述 查询银行名称信息 16 打开连接接系统管理员 服务器管理员角色与Branch数据库管理员角色 连接到SQLserver2008ManagementExpress服务器的Branch数据库 2 打开Branch表 3 从查询结果记录集的第一条记录到最后一条记录逐条输出记录的branch name属性值 4 关闭记录集 5 关闭连接 算法的非形式化描述 3 1简单的ADO应用实例 import c ProgramFiles CommonFiles System ADO msado15 dll no namespacerename EOF EndOfFile includevoidmain void CoInitialize NULL try ConnectionPtrpConn ADODB Connection RecordsetPtrpRst ADODB Recordset pConn Open DSN Branch UID try PWD 738441242 adConnectUnspecified pRst Open Branch variant t IDispatch pConn true adOpenStatic adLockReadOnly adCmdTable variant tvtFirstName pRst MoveFirst while pRst EndOfFile vtFirstName pRst Fields GetItem long 0 GetValue printf Firstname s n char bstr t vtFirstName pRst MoveNext getchar pRst Close pConn Close catch com error 17 3 1简单的ADO应用实例 import c ProgramFiles CommonFiles System ADO msado15 dll no namespacerename EOF EndOfFile includevoidmain void CoInitialize NULL try ConnectionPtrpConn ADODB Connection RecordsetPtrpRst ADODB Recordset pConn Open DSN Branch UID try PWD 738441242 adConnectUnspecified pRst Open Branch variant t IDispatch pConn true adOpenStatic adLockReadOnly adCmdTable 18 HRESULTOpen const variant t 3 1简单的ADO应用实例 variant tvtFirstName bstr tbstrQuery select frombranch pRst MoveFirst while pRst EndOfFile vtFirstName pRst Fields GetItem long 0 GetValue printf Firstname s n char bstr t vtFirstName pRst MoveNext getchar 19 3 1简单的ADO应用实例 rs Close pConn Close catch com error 20 3 1简单的ADO应用实例 21 3 1简单的ADO应用实例 创建一个到数据源的连接 Connection 并决定是否启用事务支持 创建一个命令对象 Command 对应一个命令 比如一个SQL命令 利用参数对象 Parameter 定义SQL命令所需的列 表 值之类的变参 执行命令 Command Connection或者Recordset 如果命令返回的是行数据 则将数据存储在缓冲区中 Recordset 创建一个视图来排序 过滤 浏览数据 Recordset 通过添加 删除 改变行列操作来编辑数据 Recordset 适当的时候 利用缓冲区中的数据更新数据源 Recordset 如果使用了事务 接受或撤销完成事务期间所作的改变 并结束该事务 22 3 1简单的ADO应用实例 23 创建数据源 3 1简单的ADO应用实例 24 创建数据源 3 1简单的ADO应用实例 25 创建数据源 3 1简单的ADO应用实例 26 创建数据源 3 1简单的ADO应用实例 27 创建数据源 3 1简单的ADO应用实例 28 创建数据源 3 1简单的ADO应用实例 29 创建数据源 3 1简单的ADO应用实例 30 创建数据源 3 1简单的ADO应用实例 31 创建数据源 3 1简单的ADO应用实例 32 创建数据源 3 数据访问层的实现 2014 11 5 ADO的应用实例 数据访问层的封装 动态SQL 对数据库修改 33 3 2动态SQL sprintf是个变参函数 定义如下 intsprintf char buffer constchar format argument sprinf最重要的就是第二个参数 格式化字符串 sprinf不会检查第一个参数指向的缓冲是否可以容纳你要格式化的字符串 printf和sprintf都使用格式化字符串来指定串的格式 在格式串内部使用一些以 开头的格式说明符 formatspecifications 来占据一个位置 在后边的变参列表中提供相应的变量 最终函数就会用相应位置的变量值来替代那个说明符 产生一个调用者想要的字符串 sprintf最常见的应用之一莫过于把整数打印到字符串中 所以 spritnf在大多数场合可以替代itoa 34 3 2动态SQL sprintf是个变参函数 定义如下 intsprintf char buffer constchar format argument sprinf最重要的就是第二个参数 格式化字符串 sprinf不会检查第一个参数指向的缓冲是否可以容纳你要格式化的字符串 printf和sprintf都使用格式化字符串来指定串的格式 在格式串内部使用一些以 开头的格式说明符 formatspecifications 来占据一个位置 在后边的变参列表中提供相应的变量 最终函数就会用相应位置的变量值来替代那个说明符 产生一个调用者想要的字符串 sprintf最常见的应用之一莫过于把整数打印到字符串中 所以 spritnf在大多数场合可以替代itoa 35 3 2动态SQL sprintf的格式控制串中既然可以插入各种东西 并最终把它们 连成一串 自然也就能够连接字符串 从而在许多场合可以替代strcat 但sprintf能够一次连接多个字符串 自然也可以同时在它们中间插入别的内容 总之非常灵活 比如 char who I char whom CSDN sprintf s slove s who whom 产生 IloveCSDN 连接字符串 36 3 2动态SQL charbranch name 52 city 22 floatassets cout branch name city assets charsql 200 连接字符串 sprintf sql select frombranchwherebranch name s branch name sprintf sql select frombranchwherebranch name s andcity s andassets f branch name city assets 37 3 2动态SQL import c ProgramFiles CommonFiles System ADO msado15 dll no namespacerename EOF EndOfFile includevoidmain void CoInitialize NULL try ConnectionPtrm pConnection ADODB Connection RecordsetPtrpRst ADODB Recordset pConn Open DSN Branch UID try PWD 738441242 adConnectUnspecified 38 3 2动态SQL charbranch name 52 charcity 22 floatassets charsql 200 coutOpen SqlQuery variant t IDispatch m pConnection true adOpenStatic adLockReadOnly adCmdText 39 3 2动态SQL variant tvt pRst MoveFirst while pRst EndOfFile vt pRst Fields GetItem long 0 GetValue coutFields GetItem long 1 GetValue coutFields GetItem long 2 GetValue coutMoveNext 40 3 2动态SQL getchar pRst Close m pConnection Close catch com error 41 自训题目 1 根据自身的银行数据库 编写基于ADO组件的查询银行名称 地址和总资产的应用程序 42 服务器用户和数据库用户设置好了吗 建立数据源了吗 如何输出数值型总资产数据呢呢 设问问题 3 数据访问层的实现 2014 11 7 ADO的应用实例 数据访问层的封装 动态查询 对数据库修改 43 3 3数据库修改 HRESULTOpen const variant t 打开记录集函数 adOpenDynamic adOpenForwardOnly adOpenKeyset adOpenStatic adOpenUnspecified adLockBatchOptimistic adLockOptimistic adLockpessimistic adLockReadOnly adLockUnspecified adCmdUnspecified adCmdText adCmdTable adCmdStoredProc adCmdUnknown adCmdFile adCmdTableDirect adCmdURLBind 44 3 3数据库修改 插入 charbstrQuery 50 branch pRst Open variant t bstrQuery variant t IDispatch m pConnection true adOpenForwardOnly adLockOptimistic adCmdTable pRst AddNew pRst PutCollect variant t branch name variant t branch name pRst PutCollect variant t city variant t city pRst PutCollect variant t assets variant t assets pRst Update 主要语句 45 3 3数据库修改 删除 pRst Open SqlQuery variant t IDispatch m pConnection true adOpenStatic adLockOptimistic adCmdText if pRst EndOfFile pRst Delete adAffectCurrent 主要语句 46 3 3数据库修改 更新 variant tvNull vNull vt VT ERROR vNull scode DISP E PARAMNOTFOUND pRst PutRefActiveConnection m pConnection pRst Open variant t bstrQuery vNull adOpenForwardOnly adLockOptimistic adCmdText if pRst EndOfFile pRst PutCollect variant t T assets variant t assets pRst Update 主要语句 47 3 3数据库修改 根据以前所学和本节课所讲 实现自身数据库表branch的增删改 课堂训练 48 3 数据访问层的实现 2014 11 14 ADO的应用实例 数据访问层的封装 动态查询 对数据库修改 49 3 4数据访问层的封装 1 数据访问层接口设计2 数据访问层实现3 自测题4 应用测试样例 50 3 4 1数据访问层接口设计 include SQLBaseStruct h ifdefDLL FILEclass declspec dllexport ADOConn elseclass declspec dllimport ADOConn endif private ConnectionPtrm pConnection RecordsetPtrm pRecordset public ADOConn virtual ADOConn voidOnInitADOConn char username char password voidOpenRecordSet bstr tbstrSQL inttype voidCloseRecordSet voidExitConnect boolGetFirstBranchRecord BranchStru endif ADOConn h 51 3 4 1数据访问层接口设计 import c ProgramFiles CommonFiles System ado msado15 dll no namespacerename EOF adoEOF rename BOF adoBOF if defined AFX ADOCONN H 3B6FF8B9 09C7 4A94 9057 0F72457E4B86 INCLUDED defineAFX ADOCONN H 3B6FF8B9 09C7 4A94 9057 0F72457E4B86 INCLUDED if MSC VER 1000 pragmaonce endif MSC VER 1000 ADOConn h 52 3 4 1数据访问层接口设计 ifndefINC ATTR defineINC ATTRtypedefstructBranchStru charbranch name 52 charcity 22 floatassets BranchStru defineTABLE0X04 defineQUERY0X05 defineEXISTED0X06 defineDISACCORD0X07 defineOK0 x08 endif SQLBaseStruct h 53 3 4 2数据访问层的实现 ifndefDLL FILE defineDLL FILE endif include ADOConn h include stdio h include SQLBaseStruct h ADOConn cpp 54 3 4 2数据访问层的实现 ADOConn ADOConn ADOConn ADOConn voidADOConn OnInitADOConn char username char password CoInitialize NULL try charconn 100 sprintf conn DSN Branch UID s PWD s username password m pConnection CreateInstance ADODB Connection bstr tstrConnect conn m pConnection Open strConnect adModeUnknown catch com error ADOConn cpp 55 3 4 2数据访问层的实现 voidADOConn OpenRecordSet bstr tbstrSQL inttype CoInitialize NULL try m pRecordset CreateInstance ADODB Recordset variant tvtFirstName switch type caseTABLE m pRecordset Open variant t bstrSQL variant t IDispatch m pConnection true adOpenStatic adLockOptimistic adCmdTable break caseQUERY m pRecordset Open variant t bstrSQL variant t IDispatch m pConnection true adOpenStatic adLockOptimistic adCmdText break catch com error ADOConn cpp 56 3 4 2数据访问层的实现 voidADOConn CloseRecordSet m pRecordset Close voidADOConn ExitConnect if m pRecordset NULL m pRecordset Close m pConnection Close CoUninitialize ADOConn cpp 57 3 4 2数据访问层的实现 boolADOConn Get
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025~2026学年湖北省咸宁市高二下学期期末考试生物试卷
- 2025~2026学年江西省南昌县莲塘第一中学高一下学期期末考试生物试卷
- 2026 市场监管岗事业编结构化面试含解析
- 2026年山西省职业院校技能大赛-中职组(智慧物流作业赛项)考试题库(带答案)
- 2026年山东省职业院校技能大赛-高职组(健身指导赛项)考试题库(带答案)
- 2026年江苏省职业院校技能大赛-高职组(市政管线(道)数字化施工赛项)考试题库(带答案)
- (2026年)医院防汛具体工作计划
- 2026-2027学年第一学期五年级数学阶段性素养练习试题(含解析)【期中真题】
- 2026年excel考试题笔试及答案
- 2026年AI绘画应用师职业技能等级考试试卷及答案
- 老旧小区加装电梯施工监理实施细则
- 2026届天津市和平区高三一模高考英语模拟试卷(含答案详解)
- 2027兴业银行校园招聘笔试参考题库及答案详解
- 电缆敷设安装施工方案与技术措施
- GB 1589-2026汽车、挂车及汽车列车外廓尺寸、轴荷及质量限值
- 2026年海南发展控股公司招聘试题及答案
- 2026年医院行风建设专题培训课件
- 2026年济宁普法考试试题及答案
- 喷涂工序低温烘干控制规范
- 2026 全国职工职业技能竞赛 人工智能训练师赛项 终极备赛题库 800题 附答案
- 历年航天科工测评题目
评论
0/150
提交评论