电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

数据库及应用程序开发

44页
  • 卖家[上传人]:xzh****18
  • 文档编号:56612086
  • 上传时间:2018-10-14
  • 文档格式:PPT
  • 文档大小:423.50KB
  • / 44 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、1,第4章 数据库及应用程序开发 数据库编程,西安交通大学 计算机教学实验中心,软件开发技术基础,2,4.3 数据库编程,4.3.1 数据库连接技术 1ODBC 微软公司ODBC(Open Database Connectivity,开放数据库互连),,建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。 基于ODBC的应用程序对数据库的操作不依赖任何DBMS,由对应的DBMS的ODBC驱动程序完成。能以统一的方式处理所有的数据库。,3,2ADO和OLE DB,Microsoft推出的一致数据访问技术,为关系型或非关系型数据访问提供了一致的访问接口。 ADO提供了高层软件接口,不仅可在高级语言开发环境中使用,还可以在一些脚本语言中使用,这对于WEB程序访问数据库提供了捷径。 OLE DB 提供了底层软件接口,4,3JDBC,Java 数据库连接JDBC (Java Database Connectivity)由一组用 Java 编程语言编写的类和接口组成。 JDBC 为数据库开发人员提供了一个标准的API。程序可在任何平台上运行 。,5,4.3.2 利用V C开发

      2、应用系统,1MFC ODBC类简介 (1)Cdatabase:建立与数据源的连接 virtual BOOL Open( LPCTSTR lpszDSN, BOOL bExclusive = FALSE, BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = “ODBC;”, BOOL bUseCursorLib = TRUE ); throw( CDBException, CMemoryException ); lpszDSN指定了数据源名。 bExclusive说明是否独占数据源, bReadOnly若为TRUE则对数据源的连接是只读的。 lpszConnect指定了一个连接字符串,连接字符串中可以包括数据源名、用户帐号(ID)和口令等信息,字符串中的“ODBC”表示要连接到一个ODBC数据源上。 bUseCursorLib若为TRUE,则会装载光标库,否则不装载 若连接成功,函数返回TRUE,若返回FALSE, 若函数内部出现错误,则会产生一个异常。,6,连接数据库语句实例,CDatabase m_db; m_db.Open(“MyDS“);

      3、m_db.Open(NULL,FALSE,FALSE,“ODBC;DSN=MyDS; UID=ABC;PWD=1234“); m_db.Open(NULL); /将弹出一个数据源对话框 bool IsOpen( ) const; /返回TRUE则表明当前有一个连接 virtual void Close( );,7,(2)CRecordset类,从数据源选择的一组记录(记录集)。 CRecordset( CDatabase* pDatabase = NULL); virtual CString GetDefaultConnect( ); 该函数返回缺省的连接字符串,8,virtual BOOL Open( UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE, LPCTSTR lpszSQL = NULL, DWORD dwOptions = none ); throw( CDBException, CMemoryException ); 该函数使用指定的SQL语句查询数据源中的记录并按指定的类型和选项建立记录集。 nOpenType说明了记录集的类型。打开记

      4、录集的方式:Snapshot(快照) ,Dynaset(动态集) 、forwordOnly,9,lpszSQL是一个SQL的SELECT语句,或是一个表名 dwOptions可以是一些选项的组合 CRecordset:none 无选项(缺省)。 CRecordset:appendOnly /不允许修改和删除记录,但可以添加记录。 CRecordset:readOnly /记录集是只读的。 CRecordset:skipDeletedRecords /有些数据库(如FoxPro)在删除记录时并不真删除,而是做个删除标记,在滚动时将跳过这些被删除的记录。,10,调用CRecordset的滚动函数,如MoveFirst,MoveNext,ovePrev,MoveLast等,来改变“当前”记录的位置。 IsBOF,IsEOF用于判别是否移动到记录集的头或尾。,11,(3)CRecordView,该类提供了一个表单视图与某个记录集直接相连。 在记录集与表单视图的控件之间传输数据。,12,(4)CDBException,该类代表ODBC类产生的异常。 对于数据库操作错误,出现CDBExceptio

      5、n类型的异常, 其它类型的错误,出现CMemoryException异常。,13,2执行SQL语句,可以使用CDatabase类的ExecuteSQL函数直接执行SQL语句。 ExecuteSQL能: 查询记录、 创建新表、删除表、 创建索引、 修改记录、删除记录和插入记录 ExecuteSQL的声明如下: void ExecuteSQL(LPCTSTR lpszSQL) 其中,lpszSQL表示要执行的SQL语句。,14,3 数据库操作的基本过程,(1)连接数据库 建立CDataBase类对象,通过CDataBase类的Open函数连接数据库。 (2)执行SQL语句 对于要返回结果集的查询操作,可以通过CRecordSet类的Open函数实现, 对于不返回结果集的其它SQL语句可以通过CdataBase类的ExecuteSQL函数实现。 (3)断开与数据库的连接 通过CDataBase类的Close函数断开与数据库的连接。,15,.3.3 编程实例,【例4-49】 连接SQL Server 2000数据库company。假定对SQL Server 2000数据库company已经建立

      6、了数据源CompanyDS,编程连接该数据库。如果连接成功,显示“连接成功”,否则显示“连接失败”。 #include “stdafx.h“ #include #include #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE = _FILE_; #endif,CDatabase database ; CWinApp theApp; using namespace std; int _tmain(int argc, TCHAR* argv, TCHAR* envp) int nRetCode = 0;/ 初始化MFC并进行判断if (!AfxWinInit(:GetModuleHandle(NULL), NULL, :GetCommandLine(), 0)/ TODO: change error code to suit your needscerr _T(“Fatal Error: MFC initialization failed“) endl;nRetCode = 1;,else

      7、BOOL bStatus = false;/设置等待建立连接的时间 database.SetLoginTimeout(10); try /与数据源LibraryDB建立连接 bStatus=database.Open(NULL,FALSE,FALSE,“ODBC;DSN=CompanyDS; “); if(bStatus)cout“连接成功!“endl;elsecout“连接失败!“ReportError(); catch(CDBException * pDBEx)pDBEx-ReportError(); /输出错误信息coutm_nRetCode m_strError m_strStateNativeOrigin“n“; database.Close(); /关闭数据库 return nRetCode; ,19,【例4-50】,【例4-50】查询SQL Server 2000数据库company中表employee的记录信息。假定对SQL Server 2000数据库的company已经建立了数据源CompanyDS,company中有一个表employee。该实例显示表中所有职员的

      8、no(编号)、name(姓名),sex(性别)和salary(工资)。,20,解题思路,数据库连接成功后, 调用Crecordset类的Open函数执行指定的SQL语句查询数据源中的记录,并按指定的类型和选项建立记录集。 对记录集中的记录,需要用循环方法逐条处理。 处理完当前记录后,调用Crecordset类的MoveNext函数,将记录指针移至下条记录。 当最后一条记录处理完毕后,函数IsEOF的值为真。,21,bStatus=database.Open(NULL,FALSE,FALSE,“ODBC;DSN=MyDS; ”);/与数据源LibraryDB建立连接 CRecordset recset( else,cout“学号 姓名 性别 年龄 籍贯 “endl; /输出表中的列名coutendl;CString temp;while( ! recset.IsEOF() )/每循环一次,输出结果集中的一条记录recset.GetFieldValue(“学号“,temp);cout(LPCTSTR)temp;recset.GetFieldValue(“姓名“,temp);cout“ “(

      9、LPCTSTR)temp;recset.GetFieldValue(“性别“,temp);cout“ “(LPCTSTR)temp;recset.GetFieldValue(“年龄“,temp);cout“ “(LPCTSTR)temp;recset.GetFieldValue(“籍贯“,temp);cout“ “(LPCTSTR)temp;recset.MoveNext(); coutendl;recset.Close();database.Close(); /关闭数据库,23,【例4-51】,【例4-51】为SQL Server 2000数据库company的表employee插入记录。假定对SQL Server 2000数据库company已经建立了数据源CompanyDS,company中有一个表employee。该实例在表中插入两条记录,其数据分别为: 2001, 邢雪花,女,650和 2020,翟建设,男,746。 解题思路: 数据库连接成功后,可调用Cdatabase类的ExecuteSQL函数执行指定的SQL语句插入记录。,24,为表employee插入记录。,CDatabase database ; CWinApp theApp;BOOL bStatus = false;/与数据源LibraryDB建立连接 bStatus=database.Open(NULL,FALSE,FALSE,“ODBC;DSN=LibraryDB; “); CString strSQL;,25,strSQL=“INSERT INTO student VALUES(2001, 邢雪花,女,650)”; /要执行的SQL语句 database.ExecuteSQL(strSQL);database.ExecuteSQL(“INSERT INTO student VALUES (2020,翟建设,男,746)”);database.Close(); /关闭数据库 /注意SQL中的单引号和双引号,

      《数据库及应用程序开发》由会员xzh****18分享,可在线阅读,更多相关《数据库及应用程序开发》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.