欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    java基础学习第10章.ppt

    • 资源ID:6509715       资源大小:601.50KB        全文页数:71页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    java基础学习第10章.ppt

    第15章Java数据库连接(JDBC),2,课程的教学目标,数据库基础通过学习本章使学生能够熟悉通过JDBC 进行访问数据库设置环境建立连接执行带有参数的SQL语句,对数据库进行操作,3,JDBC概述,什么是JDBC?,JDBC(Java Database Connection)是为Java语言定义的一个SQL调用级的数据库编程接口。其主要由两部分组成 JDBC API(JDBC API,JDBC Driver API)JDBC驱动程序管理器 JDBC能完成3件事:与一个数据库建立连接 向数据库发送SQL语句 处理数据库返回的结果,4,JDBC API是一组由Java语言编写的类和接口,包含在java.sql和javax.sql两个包中java.sql为核心包,这个包包含于J2SE中javax.sql包扩展了JDBC API的功能,成为了J2EE的一个基本组成部分可分为两个层次面向程序员的JDBC API负责应用程序与JDBC Manager之间的通信面向底层的JDBC Driver API负责JDBC Manager与数据库驱动程序具体实现之间的通信,5,应用程序通过JDBC API和底层的JDBC Driver API打交道,通过JDBC访问数据库(续)JDBC API的体系结构,负责应用程序与JDBC Manager之间的通信,负责JDBC Manager与数据库驱动程序具体实现之间的通信,复责载入相应的驱动,6,说明要通过JDBC来存取某一特定的数据库,必须有相应的JDBC driver,它往往是由生产数据库的厂家提供,是连接JDBC API(类和接口)与具体数据库之间的桥梁。四种驱动:纯JDBC驱动、JDBCODBC驱动、DBMS提供的本机JavaAPI、其它Java程序首先使用JDBC API来与JDBC Driver Manager交互,由JDBC Driver Manager载入指定的JDBC drivers,以后就可以通过JDBC API来存取数据库。,7,什么是ODBC?,ODBC是一个C语言实现的访问数据库API 对没有提供JDBC驱动的数据库,使用JDBC-ODBC桥来数据库是常用的方法(通过ODBC驱动器提供数据库连接)通过ODBC API,应用程序可以存取保存在多种不 同数据库管理系统(DBMS)中的数据,而不论 每个DBMS使用了何种数据存储格式和编程接口,8,9,JDBC API提供的重要接口,java.sql.DriverManager 处理驱动的调入并且对产生新的数据库连接提供支持。代表对特定数据库的连接。java.sql.Statement 对一个特定的数据库执行SQL语句。java.sql.ResultSet 控制对一个特定语句的行数据的存取。,10,一个基本的JDBC程序开发包含如下步骤设置环境,引入相应的JDBC类(数据源配置、import)选择合适的JDBC驱动程序并加载(forName())分配一个Connection对象分配一个Statement对象用该Statement对象进行查询等操作从返回的ResultSet对象中获取相应的数据关闭Connection,通过JDBC访问数据库 JDBC程序开发步骤,11,15.1 创建数据源,JDBC连接数据库的方式:,使用JDBCODBC Bridge(桥接器),使用某种数据库的专用驱动程序,12,(1)确定数据源名称和说明(使用JDBCODBC桥接器时需要),13,(2)数据源的安装:,14,(3)设置“高级”属性:,15,通过JDBC-ODBC桥访问数据库安装 Java 和 JDBC API安装JDK的同时就自动安装了安装数据库驱动程序安装JDK的同时就自动安装了安装JDBC-ODBC桥驱动程序 JDBC的类和方法都包含在java.sql包中,Java数据库应用程序的设计都需要引入java.sql包。,15.2 JDBC-ODBC桥接器,16,(1)建立JDBC-ODBC桥接器(装载驱动程序),首先使用Class类的forName方法来装载驱动程序。装载驱动程序要处理异常。两种装载驱动程序的方法如下:,17,try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(java.lang.ClassNotFoundException e)System.out.println(类未找到错误!+e);,使用JDBC-ODBC桥接器的例:,通过forName()加载包中的JDBCOdbcDriver类来建立JDBC-ODBC桥接器,18,try Class.forName();catch(java.lang.ClassNotFoundException e)System.out.println(类未找到错误!+e);,使用专用驱动程序的例:,19,使用专用驱动程序的例:,Connection con=DriverManager.getConnection(jdbc:microsoft:sqlserver:/127.0.0.1:1433;DatabaseName=学生信息管理系统,user,pass);,访问远程服务器上的数据库:/主机名:端口/数据库,20,(2)连接到数据库,Connection con=DriverManager.getConnection(jdbc:odbc:PINF,“,“);,Connection con=DriverManager.getConnection(“jdbc:odbc:数据源名称,“login,“PWD);,Connection是一个接口,表示与指定数据库的连接.DriverManager类位于JDBC的管理层,作用于用户和驱动程序之间,负责跟踪一个系统可用的JDBC驱动程序,并在数据库与相应的驱动程序之间建立连接.,如果不配数据源,可直接跟数据库存放路径jdbc:odbc:Driver=Microsoft Access Driver(*.mdb);DBQ=c:/data/test.mdb,21,1.创建 Statement 对象 建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句。Statement 对象用 Connection 的方法 createStatement 创建。,try Statement stmt=con.createStatement();Catch(SQLException e),(3)向数据库发送SQL语句,22,方法 executeQuery 用于产生单个结果集的语句,例如 SELECT 语句。,2.使用 Statement 对象执行语句,ResultSet rs=stmt.executeQuery(Select*From Person);,23,方法 executeUpdate 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句。,String SQLOrder=“insert into Person values(+ID+,+name+,+DepID+,+Occupation+,+salary+,+EduID+)”;stmt.executeUpdate(SQLOrder);,24,(4)对执行SQL语句的结果进行处理,ResultSet类负责存储查询数据库的结果;并提供一系列的方法对数据库进行新增、删除和修改操作。,负责维护一个记录指针(Cursor),记录指针指向数据表中的某个记录,通过适当的移动记录指针,可以随心所欲的存取数据库,加强程序的效率。,25,顺序查询(ResultSet),使用结果集ResultSet的next()方法,可以顺序的查询。一个结果集将游标最初定位在第一行的前面,第一次调用next()方法使游标移动到第一行。next()方法返回一个boolean型数据,当游标移动到最后一行之后返回false。使用getXXX()获得字段值 getXXX(int columnIndex)getXXX(String conumnName)ResultSet rs=sql.executeQuery(SELECT*FROM chengjibiao);while(rs.next()注意:使用getXXX()查看一行记录时,不能颠倒字段的顺序。例如,不可以:getInt(5);getInt(4);例子:Example15_1.java,26,可滚动结果集,为了显示结果集指定的一条记录,有时需要在结果集中前后移动;为了得到一个可滚动的结果集,必须使用下述方法先获得一个Statement对象:Statement stmt=con.createStatement(int type,int concurrency);根据参数的type、concurrency的取值情况,stmt返回相应类型的结果集:ResultSet re=stmt.executeQuery(SQL语句);,27,type的取值决定滚动方式,取值情况如下:ResultSet.TYPE_FORWORD_ONLY 结果集的游标只能向下滚动。ResultSet.TYPE_SCROLL_INSENSITIVE 结果集的游标可以上下移动,当数据库变化时,当前结果集不变。ResultSet.TYPE_SCROLL_SENSITIVE 返回可滚动的结果集,当数据库变化时,当前结果集同步改变。,28,Concurrency 取值决定是否可以用结果集更新数据库,Concurrency取值:ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表。ResultSet.CONCUR_UPDATETABLE 能用结果集更新数据库中的表。ResultSet的相关方法见,29,public boolean previous():将游标向上移动,移动到结果集第一行之前时返回falsepublic beforeFirst(),isBeforeFirst()public afterLast(),isAfterLast()public first(),isFirst()public last(),isLast()public int getRow()得到游标所指行的行号public boolean absolute(int row)将游标移动到参数row指定的行号,30,排序查询,可以在SQL语句中使用ORDER BY子语句,对记录排序.sql=con.createStatement();String condition=SELECT name,english FROM chengjibiao ORDER BY english;rs=sql.executeQuery(condition);例子:Example15_4.java,31,模糊查询,可以用SQL语句操作符LIKE进行模式般配,使用“%”代替0个或多个字符,用一个下划线“_”代替1个字符。比如,下述语句查询姓氏是“王”的记录:rs=sql.executeQuery(SELECT*FROM students WHERE 姓名 LIKE 王%);,32,随机查询,用Math类的静态方法random()可以产生一个大于0小于1的随机数,再用下述公式:int i=(int)(Math.random()*number);产生一个0到number之间的随机数,根据这个随机数将游标移动到相应的行,并输出该行记录.,33,更新、添加、删除记录,使用SQL语句更新(Update)、添加(Insert)、删除(Delete)记录中字段的值Statement对象调用方法:public int executeUpdate(String sqlStatement);executeUpdate(“UPDATE chengjibiao SET math=99 WHERE name=zhangshan”);通过参数sqlStatement指定的方式实现对数据库表中记录的字段值的更新.例子:Example15_7.java,Example15_8.java,Example15_9.java,34,数据库访问结束,为保证数据库数据的 完整性和释放系统资源,应明确地关闭数据库的连接:一般是关闭结果集、关闭数据库访问对象和关闭连接。,(5)关闭连接,35,Example,First example for creating a database(createCoffees.java)Second example for inserting data into a database(insertCoffees.java)Three example for querying data from a database with GUI(DisplayQueryResults.java)Four example:workspace/basic/calcate.java,DatabaseCon.java,MyGui.java,36,预处理语句,当向数据库发送一个SQL语句,比如“Select*From chengjibiao”,数据库库中的SQL解释器负责将把SQL语句生成地层的内部命令,然后执行该命令,完成有关的数据操作。如果不断地向数据库提交SQL语句势必增加数据库中SQL解释器的负担,影响执行的速度。如果应用程序能针对连接的数据库,事先就将SQL语句解释为数据库地层的内部命令,然后直接让数据库去执行这个命令,显然不仅减轻了数据库的负担,而且也提高了访问数据库的速度。,37,对于JDBC,如果使用Connection和某个数据库建立了连接对象con,那么 con就可以调用 prepareStatement(String sql)方法对SQL语句进行预编译处理,生成该数据库地层的内部命令,并将该命令封装在PreparedStatement对象中,那么该对象调用相应的方法都可以使得该地层的内部命令被数据库执行,38,数据源的设定(参考),数据库概述,数据库是指长期存储在计算机内,有组织、可共享的数据集合。例如:Oracle SQL Server DB2 Access,39,例如:设在“学生”数据库中有“学生成绩”表,其 内容如表10-1所示:,40,建立一个实例数据库(以Access为例):(1)建立空的Access数据库:,41,(2)建立三个表:,42,43,44,45,(3)建立联系:,46,10.1 数据库基础知识,数据管理的两个阶段文件管理各种数据都是以文件为单位存储在外存,且由操作系统统一管理文件相对独立,文件结构不能很好地反映现实世界中事物之间的联系,文件中存在大量的数据冗余数据库管理以数据为中心组织数据,减少冗余,并提供更高的数据共享能力,由数据库系统进行管理程序和数据具有较高的独立性,当数据的逻辑结构改变时,不涉及数据的物理结构,也不影响应用程序,从而降低应用程序研制与维护的费用,47,10.1.1 数据库技术的特点,数据库技术有如下一些特点面向企业或部门,以数据为中心组织数据,形成综合性的数据库为各应用共享采用一定的数据模型。数据模型不仅要描述数据本身的特点,而且要描述数据之间的联系数据冗余小,易修改、易扩充。不同的应用程序根据处理要求,从数据库中获取需要的数据,这样就减少了数据的重复存贮,也便于维护数据的一致性程序和数据有较高的独立性。当数据的物理结构和逻辑结构改变时,有可能不影响或较少影响应用程序具有良好的用户接口,用户可方便地开发和使用数据库对数据进行统一管理和控制,提供了数据的安全性、完整性、以及并发控制,数据库基础知识,48,10.1.1 数据库技术的特点(续),应用程序访问数据库的基本模式DBMS(数据库管理系统)是数据库的核心软件。数据库系统的各种操作,包括创建数据库对象、检索和修改数据库中的数据,都是通过DBMS实现的,数据库基础知识,49,10.1.2 数据模型,数据模型数据库的逻辑结构所有的数据库系统都是基于某种数据模型的不同种类的数据库可能支持不同的数据模型关系数据库就是因为支持关系模型而得名,数据库基础知识,50,关系模型形象地说就是二维表结构,也称之为关系表一个关系数据库可以包含多个关系表,关系表是数据库中组织和存储数据的基本单位每个表都用于存储面向某个主题的信息。例如:学生表存储学生信息系表存储各系的信息课程表存储课程信息等关系表每一行存储一个记录,每一列表示记录的一个属性。设计一个关系表时需要为表命名设计表的列结构,其中包括列名及列的数据类型,10.1.2 数据模型,数据库基础知识,51,10.1.2 数据模型,学生表由5列组成,每一列表示学生的一个属性每个学生都是用学号、姓名、性别、出生年月及所属系的系号等属性来描述,在这些属性上的一组合法取值就对应一个学生记录(表中的一行),数据库基础知识,52,10.1.3 关系表中的主码与外来码,主码为了保证关系表中没有重复的记录,需要为关系表定义一个主码,作用是唯一标识表中的一个记录可以是表中的一列,也可以由几列组合而成在建表时如果定义了主码,系统可以对输入该表的数据进行检查,要求主码不能重、也不能空(NULL)例如在学生表中学号可以作为主码,因为一个学号可以唯一地确定表中的一个学生记录由于学生中有重名现象,姓名就不能用来做为主码,数据库基础知识,53,10.1.3 关系表中的主码与外来码(续),外来码现实世界中事物之间的联系反 映到数据库中就体现为表之间的联系,在关系数据库中,借助“外来码”实现存贮这种联系的信息如果一个表中的某一列是另外一个表中的主码,那么该列称之为外来码。例如在学生表中,“系号”就是外来码,因为系号是系表的主码,在学生表中设计了“系号”一列,就是为了存储学生和系之间的联系信息通过外来码和主码的等值连接将不同表里的相关记录连接在一起,从而实现数据库中相关数据的查找可以查询每个学生所在系的信息,也可以查询指定系所包含的学生信息,数据库基础知识,54,10.1.3 关系表中的主码与外来码(续),数据库基础知识,55,该数据库中建有员工基本信息表(person)包括工作证号、姓名、部门编号、职务、工资、学历编号等字段工作证号(ID)是该表的主码Department列是一个外来码,匹配部门编码表中的DepID主码Education列也是一个外来码,匹配学历编码表中的EduID主码部门编码表(department)保存了部门编号和部门名称部门编号(DepID)是主码学历编码表(education)保存了学历编号和学历名称学历编号(EduID)是主码,关系表中的主码与外来码(续)员工信息管理系统(PIMS)的例子,数据库基础知识,56,关系表中的主码与外来码(续)员工信息管理系统(PIMS)的例子,数据库基础知识,57,10.1.4 建立一个实例数据库,建立数据库需要借助于数据库管理系统,不同的数据库管理系统其具体操作方法是不同的,以Windows平台上的一个简单的关系型数据库Access为例,建立一个数据库,为编写Java的数据库访问程序提供一个实例环境1启动Office 的Microsoft Access,选择“新建一个Access数据库选项”,在文件名输入栏中输入“PMS.mdb”。该文件代表一个Access数据库,数据库基础知识,58,10.1.4 建立一个实例数据库,PMS数据库窗口出现在Access主窗口中。在数据库窗口的左侧,列出了常用的7类数据库对象。当选中某对象类后,就可以在右窗口中进行有关该对象的操作,如建立、修改,运行等。7类对象的主要含义分别是:表 关系表,可以实现的操作包括表的建立、数据的维护、查询等查询 可以建立一个查询(视图的概念),还可以运行SQL语句窗体 数据库应用界面,可进行简单数据库应用开发报表 报表的制作与打印输出页 可生成基于web页面的数据库应用界面宏 可定义完成特定任务的操作或操作集模块 可定义数据库中使用的公共过程与函数,数据库基础知识,59,10.1.4 建立一个实例数据库,2 在对象栏中选择“表”,再选择“使用设计器创建表”方式,单击工具栏中的“设计”按钮,就会出现表设计窗口。在该窗口中可以定义字段的名称、数据类型、字段说明信息等。分别设计Person表、Department表、Education表,数据库基础知识,60,10.1.4 建立一个实例数据库,数据库基础知识,61,10.1.4 建立一个实例数据库,3建立表之间的联系点击主窗口“工具”菜单中的“关系”选项,打开“关系”视图用鼠标拖动Education表的EduID属性,拉到Person表的Education属性上,在自动弹出的“编辑关系”对话框中,选择实施参照完整性,点击“创建”按钮用同样方法建立Department表中DepID列和Person表中Department列,数据库基础知识,62,10.1.4 建立一个实例数据库,4 为每个表创建数据,数据库基础知识,63,10.1.5 SQL语言简介,SQL语言关系数据库的标准语言,从大型数据库(如Oracle)到微机数据库(如Access)都支持可以实现对数据库的各种操作。例如表及其他数据库对象的定义数据的查询与数据维护对数据库进行控制是非过程化的语言,只需要告诉数据库做什么,而不需要描述怎么做语句都是独立执行的,无上下文联系本身不区分大小写,数据库基础知识,64,SQL语言简介(续)SQL关键字,数据库基础知识,65,在SQL语言中,对数据库中数据的操作可分为读写两种读操作(查询)通过SELECT语句实现,该语句的执行不会改变数据库中的数据可以返回一行或多行数据也可能没有返回结果(没有查到满足条件的记录)涉及到写操作的语句共有3个INSERTUPDATEDELETE,SQL语言简介(续)SQL语言的读/写操作,数据库基础知识,66,建表语句定义表中各列的名称及数据类型有关列的数据类型可参考具体数据库的语法手册CREATE TABLE person(id INTEGER PRIMARY KEY,/定义该列为主码 name VARCHAR(10),/列定义,字符型 department INTEGER,/列定义,整型 occupation VARCHAR(10),salary NUMBER,education INTEGER);,SQL语言简介(续)建表语句,数据库基础知识,67,插入语句向指定表插入一条记录,插入的值要与表的定义匹配插入一行数据NSERT INTO table_nameVALUES(value1,value2,.)插入一行数据在指定的字段上INSERT INTO table_name(column1,column2,.)VALUES(value1,value2,.)例如在person表中插入一行INSERT INTO person VALUES(1,张三,1,manager,3500,5);,SQL语言简介(续)插入语句,数据库基础知识,68,修改语句修改指定记录中某列的值,更新表中原有数据其格式为UPDATE table_name SET column_name=new_valueWHERE column_name=some_value例如:将person表中id号为1的人员的工资修改为3700元UPDATE person SET salary=3700/指定对哪列进行修改、如何修改WHERE id=1;/选择要修改的行,SQL语言简介(续)修改语句,数据库基础知识,69,删除语句删除表中的指定的数据其格式为DELETE FROM table_name WHERE column_name=some_value例如删除部门号为4的员工记录DELETE FROM person WHERE department=4;,SQL语言简介(续)删除语句,数据库基础知识,70,查询语句从指定表中取出指定的数据SELECT select_list INTO new_table FROM table_source WHERE search_condition GROUP BY group_by_expression HAVING search_condition ORDER BY order_expression ASC|DESC,SQL语言简介(续)查询语句,数据库基础知识,71,例:查询工资大于2000的员工的姓名及职务SELECT*/“*”号表示输出全部列的值FROM person/指定查询的表,本查询只用到person表WHERE salary2000;/查询条件例:查询员工“张三”的学历,输出学历名SELECT education.nameFROM person,education/该查询用到两个表WHERE person.name=张三 AND person.education=education.eduid;,SQL语言简介(续)查询语句,数据库基础知识,返回,

    注意事项

    本文(java基础学习第10章.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开