38
数据库实验指导(二) 基于DBMS的应用设计 2012.3.26

幻灯片 1 - staff.ustc.edu.cnstaff.ustc.edu.cn/~llyue/dblab12.pdf · • java连接数据库常用的两种形式 1) 通过JDBC-ODBC桥连接(必须创建数据源) 2) 通过数据库系统专用的JDBC驱动实现连接(工程中

  • Upload
    others

  • View
    30

  • Download
    0

Embed Size (px)

Citation preview

  • 数据库实验指导(二)基于DBMS的应用设计

    2012.3.26

  • 实验助教

    • 徐姣– [email protected]– 159569196200 电三楼415

    • 桑若昕– [email protected]– 13655600642 电四楼420

    • 张雪男– [email protected]–13739261609 电三楼415

    mailto:[email protected]:[email protected]:[email protected]

  • 上机安排

    • 第7周开始• 实验周: 9,11,13• 每个实验周的周二、周四晚上

    – 时间:18:30-21:30• 分为两次上机,因机位有限,原则上:

    – 周二:学号为单号– 周四:学号为双号

  • 上机要求

    • 可自行选择DBMS– Oracle, MS SQL-Server ,MySQL 等

    • 实验平台不限– Windows, Linux

    • 开发语言不限– C/C++/C#, JAVA, PHP, Delphi, VB

    • 实验均要当面检查通过并提交相应程序和文档;• 不统一规定检查时间,先做完的同学可先检查;• Deadline: 考试前• 注意不要COPY

  • 实验安排

    • 实验二:基于DBMS的应用设计– 旅行信息管理– 药品信息管理

  • 设计要求• 设计步骤

    – 分析– 设计– 运行

    • 交源程序,可执行程序以及设计演示报告• 程序和文档提交地址:

    ftp://pbdb:[email protected]:2121(尽量用ftp软件来登录ftp,文件管理器有可能会出现问题)• 上传形式:学号_姓名_第X次实验• (提交前需要通过检查,否则得分减半)

    ftp://pbdb:[email protected]:2121/

  • 评分要求:

    • 基本功能(20%):完成实验要求的基本功能。• 界面设计(10%):软件具有较好的UI。• 模式设计(10%):数据库是否设计合理,包括表设计、主键、

    索引、约束等。

    • 健壮性(10%):是否能接受用户的错误输入。在错误发生后能否继续运行,能否给出相应提示。

    • 易用性(10%):用户学习、操作、准备输入和理解输出时,所做努力的程度,即用户在使用本软件时是否方便。

    • 创新性(10-20%):在完成基本实验要求以外的功能,其功能具有一定创新性。

    • 代码(15%):代码风格是否优秀,是否考虑可重用,是否考虑事务。

    • 文档(15%):文档说明是否完整、清晰。

  • 连接数据库概述

    • 连接数据库的方式:• ODBC连接数据库

    —以vc中连接数据库为例

    • JDBC连接数据库—以java中连接数据库为例

  • 使用ODBC连接数据库

    • ODBC概述• ODBC的工作原理• ODBC数据源设置• VC6-利用向导连接数据库• VC6中利用MFC ODBC连接(无向导)

  • ODBC概述

    • ODBC(Open DataBase Connectivity, 开 放 式 数 据库

    连 接), 是为数据库应用程序访问关系型数据库时提供的

    一个统一的接口(API)。

    • 对于不同的数据库,ODBC提供了一套统一的API,使得

    应用程序可以访问任何一个提供ODBC驱动程序的数据库。

    • ODBC只能用于访问关系型的数据库,很难访问对象数据

    库和非关系型数据库。

  • ODBC 的工作原理

  • 1.ODBC数据源设置

    使用ODBC连接数据库之前注册一个数据源

    1.首先进行ODBC数据源设置• 以windows+ oracle10g为例,也可以用ODBC连接其

    他数据库如MySQL等• 用mysql的话要下载一个mysql connector/ODBC的驱

    动程序

    2.在具体的程序设计环境中使用ODBC连接数据库• 以vc6为例

  • 1.ODBC数据源设置1.控制面板→管理工具→数据源 (ODBC), 在系统

    DSN页面下,添加新的数据源(如demo)

    点击添加

  • 1.ODBC数据源设置2.选择所要添加的数据源类型,选择后点击“完成”

  • 1.ODBC数据源设置3.配置Oracle ODBC驱动

    测试连接

    用户定义数据源名称

    Oracle服务名

    用户名

  • 1.ODBC数据源设置4.配置完成,可以在ODBC数据源管理程序中看到新添加的Oracle数据源

  • 2.VC6-利用向导连接数据库1.在AppWizard的第二步,选择第四项,点击”Data Source”进行配置

    点击进入数据源选择

  • 2.VC6-利用向导连接数据库2.选择要使用的数据源

  • 2.VC6-利用向导连接数据库3.选择欲使用的表

  • 2.VC6-利用向导连接数据库4.向导结束时可以发现多了一个继承自CRecordSet的类,它是根据用户选择的表自动生成的记录集类

  • 3.VC6中利用MFC ODBC连接(无向导)

    • MFC ODBC类简介• 利用MFC ODBC对数据库进行操作的基本步骤

    • 介绍对数据库的基本操作

  • visual c++中提供了MFC ODBC类,封装ODBC API,这使得利用MFC来创建ODBC的应用程序非常简便。在利用ODBC 编程时,经常要使用到:

    • CDatabase (数据库类):类对象提供了对数据源的连接,通过它你可以对数据源进行操作。

    • CRecordSet (记录集类):类对象提供了从数据源中提取出的记录集,维护着数据源中被访问的当前记录。

    • CRecordView(可视记录集类): 类对象能以控制的形式显示数据库记录。这个视图是直接连到一个CRecordSet 对象的表视图。

    • 注:需包含afxdb.h

    3.1 MFC ODBC类简介

  • 3.2 利用MFC ODBC操作数据库的基本步骤

    下面主要通过介绍查询数据库的操作来熟悉MFC ODBC

    操作数据库的基本步骤

    1. 建立一个CDatabase的实例CDatabase testdb;

    2. 连接数据库testdb.OpenEx(_T("DSN=demo;UID=scott;PWD=tiger"),CDatabase::openReadOnly | CDatabase::noOdbcDialog);

    3. 建立一个CRecordset的实例CRecordset testr(&testdb);

    和CDatabase实例相连

  • 3.2 利用MFC ODBC操作数据库的基本步骤

    4. 执行一个初始化查询调用CRecordset的open方法打开记录集。

    testr.Open(AFX_DB_USE_DEFAULT_TYPE,_T("select * from test"));

    5. 取得查询结果(只取一条记录)CDBVariant dbvar;//CDBVariant对象表示用于MFC ODBC类的可变数据类型。CDBVariant允许存储值而不必关心值的数据类型

    testr.GetFieldValue(short(0),dbvar);if (dbvar.m_dwType == DBVT_STRING) {

    CString str=*(dbvar.m_pstring);}

  • 3.2 利用MFC ODBC操作数据库的基本步骤

    6. 取得查询结果(多条记录)short nFields = testr.GetODBCFieldCount( );while( ! testr.IsEOF( ) ) {

    for( short index = 0; index < nFields; index++ ) { testr.GetFieldValue( index, varValue );// 对 varValue进行处理

    }testr.MoveNext( );}

    Move(),MoveNext(),MovePrev(),MoveFirst(),MoveLast() 移动记录到指定的地方

  • 3.2 利用MFC ODBC操作数据库的基本步骤7. 最后要关闭连接,释放空间

    testr.Close( );testdb.Close( );

  • 3.3 对数据库的基本操作

    • 添加记录先构造添加记录的SQL语句,然后调CDatabase类的

    ExecuteSQL方法执行SQL语句,就将记录添加到数据库中如:

    CSting sql= Insert into student(sid,sname,ssex,sage) vaues(‘PB0821*** ’,‘张三’,’男‘,22);

    // 注意testdb为CDatabase类型testdb.ExecuteSQL(sql); 此时在查询数据库中student表便多了一条记录。

  • 3.3 对数据库的基本操作

    • 删除记录删除记录的方法和添加记录的处理方法是相的,只需构造

    一个删除数据库记录的SQL语句(使用delete语句),然后利用CDatabase的ExecuteSQL方法删除记录即可。

    • 修改记录修改记录的方法和添加记录的方法也一样的。修改记录

    使用Update语句,然后利用CDatabase的ExecuteSQL方法删除记录即可。

    • VC6的帮助 MSDN

  • 总结:SQL 语句的直接执行(CDatabase上)如建立新

    表,删除表,建立新的字段等等CDatabase::ExecuteSQL()

    函数来完成SQL 语句的直接执行。

    也可以直接调用CRecordset 类的AddNew、Update、

    Delete 方法实现对数据库记录的添加、修改和删除的操作。

  • java中的JDBC连接数据库

    • JDBC简介• java利用JDBC连接数据库常用的两种方式• java利用JDBC操作数据库的基本步骤

  • 1. JDBC 简介

    • jdbc简介

    JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,由一组用 Java 编程语言编写的类和接口组成。JDBC 为数据库开发人员提供了一组标准的API,使他们能够用纯Java API 来编写数据库应用程序。

  • 2. java中利用JDBC连接数据库常用方式• java连接数据库常用的两种形式

    1) 通过JDBC-ODBC桥连接(必须创建数据源)

    2) 通过数据库系统专用的JDBC驱动实现连接(工程中

    要包含数据库厂商提供的JDBC驱动程序,不需要创建数据

    源)

    • JDBC中通过DriverManger类和Connection对象实现数据库的连接。

    • 开发工具: eclipse 先将class12.jar包导入到工程中,oracle安装目录下

    jdbc\lib中找到,也可到网上下载。引用必要的包

    import java.sql.*; //它包含有操作数据库的 各个类与接口

  • 3. 利用JDBC操作数据库的基本步骤JDBC操作数据库的基本步骤:与数据库建立连接

    发送 SQL 语句处理结果

    关闭数据库

    下面以连接oracle 10g数据库并进行查询操作为例详细叙述其过程。

    (1)加载数据库驱动,并创建连接Connection conn = null;Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");String url="jdbc:odbc:DatabaseDSN"; //使用数据//String strConn//="jdbc:oracle:thin:@host_name:port:database_sid";

    1521

  • 3. 利用JDBC操作数据库的基本步骤

    String strUser="username";String strPassword="password";//创建连接conn=DriverManager.getConnection(strConn,strUser,strPassword);

    (2)查询数据库:创建Statement对象并执行SQL语句以返回一个ResultSet对象。

    Statement stmt=con.createStatement();ResultSet rs=stmt.executeQuery("select *

    from DBTableName");

  • 3. 利用JDBC操作数据库的基本步骤

    (3) 获得信息ResultSet 包含符合 SQL 语句中条件的所有行,并且它通

    过一套 get 方法(这些 get 方法可以访问当前行中的不同列)提供了对这些行中数据的访问。

    String name=rs.getString("Name");int age=rs.getInt("age");float wage=rs.getFloat("wage");

    next() last() previous()等方法来操作结果集中的记录指针

  • 3. 利用JDBC操作数据库的基本步骤(4)关闭数据库(注意关闭的顺序先rs再stmt最后为con)

    rs.close(); stmt.close();con.close();

    另外:PreparedStatement接口由方法prepareStatement所创建,是Statement接口的子接口。以预编译方式执行SQL语句,效率可能会更高。

    DatabaseMetaData接口主要用来得到关于数据库的信息ResultSetMetaData类用来获得数据库表的结构。

  • 参考文献

    • 《Visual c++ 与 Oracle 数据库编程案例》—电子工业出版社

    • 《java数据库编程宝典》—电子工业出版社

    • JDK_API_1_6_zh_CN.CHM• http://infolab.stanford.edu/~ullman

    /fcdb/oracle.html

  • 谢谢!

    数据库实验指导(二)�基于DBMS的应用设计�实验助教上机安排上机要求实验安排设计要求 评分要求:�连接数据库概述使用ODBC连接数据库ODBC概述ODBC 的工作原理1.ODBC数据源设置1.ODBC数据源设置1.ODBC数据源设置1.ODBC数据源设置1.ODBC数据源设置2.VC6-利用向导连接数据库2.VC6-利用向导连接数据库2.VC6-利用向导连接数据库2.VC6-利用向导连接数据库3.VC6中利用MFC ODBC连接(无向导)3.1 MFC ODBC类简介3.2 利用MFC ODBC操作数据库的基本步骤3.2 利用MFC ODBC操作数据库的基本步骤3.2 利用MFC ODBC操作数据库的基本步骤3.2 利用MFC ODBC操作数据库的基本步骤3.3 对数据库的基本操作 3.3 对数据库的基本操作 java中的JDBC连接数据库1. JDBC 简介2. java中利用JDBC连接数据库常用方式3. 利用JDBC操作数据库的基本步骤3. 利用JDBC操作数据库的基本步骤3. 利用JDBC操作数据库的基本步骤3. 利用JDBC操作数据库的基本步骤参考文献谢谢!