java基础学习第10章.ppt
《java基础学习第10章.ppt》由会员分享,可在线阅读,更多相关《java基础学习第10章.ppt(71页珍藏版)》请在三一办公上搜索。
1、第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语言编写的类和接口,包含在
2、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与数据库驱动程序具体
3、实现之间的通信,复责载入相应的驱动,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驱动的数据库,使
4、用JDBC-ODBC桥来数据库是常用的方法(通过ODBC驱动器提供数据库连接)通过ODBC API,应用程序可以存取保存在多种不 同数据库管理系统(DBMS)中的数据,而不论 每个DBMS使用了何种数据存储格式和编程接口,8,9,JDBC API提供的重要接口,java.sql.DriverManager 处理驱动的调入并且对产生新的数据库连接提供支持。代表对特定数据库的连接。java.sql.Statement 对一个特定的数据库执行SQL语句。java.sql.ResultSet 控制对一个特定语句的行数据的存取。,10,一个基本的JDBC程序开发包含如下步骤设置环境,引入相应的JDBC类
5、(数据源配置、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桥访问数
6、据库安装 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.Cla
7、ssNotFoundException 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:sq
8、lserver:/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的管理层,作用于用户和驱动程序之间,
9、负责跟踪一个系统可用的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)向数据库
10、发送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.
11、executeUpdate(SQLOrder);,24,(4)对执行SQL语句的结果进行处理,ResultSet类负责存储查询数据库的结果;并提供一系列的方法对数据库进行新增、删除和修改操作。,负责维护一个记录指针(Cursor),记录指针指向数据表中的某个记录,通过适当的移动记录指针,可以随心所欲的存取数据库,加强程序的效率。,25,顺序查询(ResultSet),使用结果集ResultSet的next()方法,可以顺序的查询。一个结果集将游标最初定位在第一行的前面,第一次调用next()方法使游标移动到第一行。next()方法返回一个boolean型数据,当游标移动到最后一行之后返回fal
12、se。使用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对象:Stateme
13、nt 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 返回可滚动
14、的结果集,当数据库变化时,当前结果集同步改变。,28,Concurrency 取值决定是否可以用结果集更新数据库,Concurrency取值:ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表。ResultSet.CONCUR_UPDATETABLE 能用结果集更新数据库中的表。ResultSet的相关方法见,29,public boolean previous():将游标向上移动,移动到结果集第一行之前时返回falsepublic beforeFirst(),isBeforeFirst()public afterLast(),isAfterLast()publ
15、ic 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.
16、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语句更新(
17、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,数据库访问结束,为保证数据库数据的 完整性和释放系统资源,应明确地关闭数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 基础 学习 10
链接地址:https://www.31ppt.com/p-6509715.html