版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第14讲数据访问层专题从企业开发角度出发主讲人:李洪波1第14讲数据访问层专题实验计划实现技术概念分析2第14讲数据访问层专题实验计划实现技术概念分析31.数据访问层概念分析用户应用程序数据库客户端网络图1单层体系结构
41.数据访问层概念分析图2双层体系结构
用户应用程序数据库服务器客户端网络应用服务器51.数据访问层概念分析图3三层体系结构表示层数据访问层业务逻辑层数据库61.数据访问层概念分析测试程序EXEDLLVisualC++2010SQLServerManagement2008Express71.数据访问层概念分析测试程序ODBCSQLServerManagement2008ExpressEXEDLLVisualC++2010ODBC32.DLL81.数据访问层概念分析测试程序SQLServerManagement2008ExpressADOODBCEXEDLLVisualC++2010msado15.dllODBC32.DLL软构件91.数据访问层概念分析动态链接库ADO、ODBC动态SQL封装用户访问控制企业级应用技术的集成10第14讲数据访问层专题实验计划实现技术概念分析112.实验计划实验任务运用VC动态链接库技术封装ADO访问数据库实验要求1.透彻理解数据访问层在数据库应用系统中的作用2.熟练运用企业实用技术数据访问层12实验目标以此为范版直接扩展到企业实际项目开发中去2.实验计划实验方法1.依托商业银行数据库,按先简单再综合的次序展开。2.教师讲授学生自训相结合,讲授案例与自训案例分开。3.分组实验,设问与询问捕获问题并加以解决。4.人人提交源程序,抽样验收。内容与时间安排日期星期内容分工11.5三ADO应用简单样例与动态SQL教师主讲,学生自训11.7五数据库的增删改动态链接库封装数据访问层样例教师主讲,学生自训11.14五分组分案例封装数据访问层学生综合设计与调试11.19三分组分案例封装数据访问层教师逐组验收学生回答设问问题13第14讲数据访问层专题实验计划实现技术概念分析143.数据访问层的实现技术2014.11.05ADO的应用实例数据访问层的封装动态查询对数据库修改153.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")#include<stdio.h>voidmain(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&e){printf("Description='%s'\n",(char*)e.Description());}
::CoUninitialize();}173.1简单的ADO应用实例#import"c:\ProgramFiles\CommonFiles\System\ADO\msado15.dll"\no_namespacerename("EOF","EndOfFile")#include<stdio.h>voidmain(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);
18HRESULTOpen(const_variant_t&source,const_variant_t&connection,EnumcursorType,enumLockTypeEnumlockType,longoptions);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();……193.1简单的ADO应用实例……rs->Close();pConn->Close();}
catch(_com_error&e){printf("Description='%s'\n",(char*)e.Description());}
::CoUninitialize();}203.1简单的ADO应用实例ADOData-BoundControlADODataControlOLEDBProviderForODBCDriverOLEDBNativeProviderODBCDriverManager(ODBC32.DLL)ODBCDriverDatabase图4-1ADO连接数据库的两种方式213.1简单的ADO应用实例创建一个到数据源的连接(Connection),并决定是否启用事务支持。创建一个命令对象(Command)对应一个命令。比如一个SQL命令。利用参数对象(Parameter)定义SQL命令所需的列、表、值之类的变参。执行命令(Command,Connection或者Recordset)。如果命令返回的是行数据,则将数据存储在缓冲区中(Recordset)。创建一个视图来排序、过滤、浏览数据(Recordset)。通过添加、删除、改变行列操作来编辑数据(Recordset)。适当的时候,利用缓冲区中的数据更新数据源(Recordset)。如果使用了事务,接受或撤销完成事务期间所作的改变,并结束该事务。223.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.5ADO的应用实例数据访问层的封装动态SQL对数据库修改333.2动态SQLsprintf是个变参函数,定义如下:
intsprintf(char*buffer,constchar*format[,argument]...);
sprinf最重要的就是第二个参数,格式化字符串。
sprinf不会检查第一个参数指向的缓冲是否可以容纳你要格式化的字符串,printf和sprintf都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符(formatspecifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量值来替代那个说明符,产生一个调用者想要的字符串。sprintf最常见的应用之一莫过于把整数打印到字符串中,所以,spritnf在大多数场合可以替代itoa。343.2动态SQLsprintf是个变参函数,定义如下:
intsprintf(char*buffer,constchar*format[,argument]...);
sprinf最重要的就是第二个参数,格式化字符串。
sprinf不会检查第一个参数指向的缓冲是否可以容纳你要格式化的字符串,printf和sprintf都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符(formatspecifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量值来替代那个说明符,产生一个调用者想要的字符串。sprintf最常见的应用之一莫过于把整数打印到字符串中,所以,spritnf在大多数场合可以替代itoa。353.2动态SQLsprintf的格式控制串中既然可以插入各种东西,并最终把它们“连成一串”,自然也就能够连接字符串,从而在许多场合可以替代strcat,但sprintf能够一次连接多个字符串(自然也可以同时在它们中间插入别的内容,总之非常灵活)。比如:
char*who="I";
char*whom="CSDN";
sprintf(s,"%slove%s.",who,whom);//产生:"IloveCSDN."连接字符串363.2动态SQLcharbranch_name[52],city[22];floatassets;cout<<”Pleaseinputbranchname,cityandassets:”cin>>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)373.2动态SQL#import"c:\ProgramFiles\CommonFiles\System\ADO\msado15.dll"\no_namespacerename("EOF","EndOfFile")#include<stdio.h>voidmain(void){
CoInitialize(NULL);
try{_ConnectionPtrm_pConnection("ADODB.Connection");_RecordsetPtrpRst("ADODB.Recordset");pConn->Open("DSN=Branch;UID=try;PWD=738441242;","","",adConnectUnspecified);
383.2动态SQL……
charbranch_name[52];
charcity[22];
floatassets;
charsql[200]; cout<<"Pleaseinputbranchname:"<<endl; gets(branch_name); sprintf(sql,"select*frombranchwherebranch_name='%s'",branch_name); _bstr_tSqlQuery; SqlQuery=sql;
pRst->Open(SqlQuery,_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockReadOnly,adCmdText);……393.2动态SQL
_variant_tvt; pRst->MoveFirst(
);
while
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院感染暴发与消毒供应应对
- 冠心病患者的职业康复与重返社会
- 2025-2026学年广东省深圳市坪山区八年级(下)期末语文试卷
- 风湿免疫病科普讲座总结2026
- 护理用品销售业绩提升
- 心外科患者出院指导与随访
- 妇科管道护理的护理质量
- 护理安全与护理研究
- 喉癌患者的呼吸护理技巧
- 卒中患者的家庭护理指导
- AQ 2031-2011 金属非金属地下矿山监测监控系统建设规范 (正式版)
- 上海初中化学知识点全面总结
- FZT 13007-2016 色织棉布行业标准
- (高清版)DZT 0216-2020 煤层气储量估算规范
- 海南迪爱生微藻有限公司 藻蓝色素车间扩建及锅炉技改项目 环评报告
- 脑梗死合并脑出血的护理
- 桥梁典型病害课件
- 23J916-1:住宅排气道(一)
- 国有企业供电单位经济活动分析模板
- 脑血管解剖医学课件
- GB/T 5585.2-2005电工用铜、铝及其合金母线第2部分:铝和铝合金母线
评论
0/150
提交评论