《java数据库.ppt》由会员分享,可在线阅读,更多相关《java数据库.ppt(19页珍藏版)》请在课桌文档上搜索。
1、18:52,第1页,第七章,JDBC数据库编程技术,18:52,第2页,知识点:,了解常见的关系型数据库熟悉JDBC的工作原理,掌握JDBC操作数据库所用到的类的使用方法掌握JDBC开发数据库的工作步骤,18:52,第3页,本章主要介绍以下5个部分的内容:,1.关系数据库简介2.JDBC基础3.主要JDBC类4.JDBC编程工作步骤5.实例,18:52,第4页,一、关系数据库简介,(1)关系数据库的特点有哪些?一个数据库由一个或多个表组成,每个表由行,列组成,列代表字段(即属性),行代表记录,表中的记录应该是唯一的,主关键字唯一。(2)对关系数据库的操作有哪些?搜索(查找),连接操作添加,更新
2、,删除记录,18:52,第5页,(3)SQL语句,(1)SELECTALL|DISTINCT|DISTINCTROW|TOP*|talbe.*|table.field1AS alias1,table.field2AS alias2,FROM tableexpression,IN externaldatabaseWHERE(2)更新数据语法:UPDATE 表名SET 新值WHERE 条件(3)DELETE子句的语法:DELETE 表名.*FROM 来源表WHERE条件(4)INSERT 子句的语法:INSETR INTO 目的表或查询(字段1,字段2,)values(数值1,数值2,),18:5
3、2,第6页,二、JDBC基础,JDBC是为Java提供的一个平台无关的数据库标准API,它提供了一个通用的SQL数据库存取机制,该机制为多数关系型DBMS提供统一接口。JDBC分为JDBC API与JDBC驱动程序。前者即一组JDBC类库,使用这个类库可以以一种标准的方法、方便地访问数据库资源(在java.sql类包中)。JDBC为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细节问题。,18:52,第7页,二、JDBC基础,JDBC包含一系列丰富的类,在java.sql包中(JDK.1.1以上).JDBC提供了一种API实现对数据库透明存取的方法,这种存取依
4、据驱动程序来实现,不同的数据库制造尚提供它们不同的驱动程序.JDBC的目标是使应用程序开发人员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。,18:52,第8页,与ODBC相类似,JDBC接口(API)也包括两个层次:面向应用的API:Java API,抽象接口,供应用程序开发人员使用(连接数据库,执行SQL语句,获得结果)。面向数据库的API:Java Driver API,供开发商开发数据库驱动程序用。,JDBC直接在应用程序中加载驱动程序并连接特定的数据库。,二、JDBC基础,18:52
5、,第9页,三、主要JDBC类,(1)Driver类:用来与数据库通信的软件.(2)DriverManager类:是JDBC基础,用来管理和卸载JDBC驱动程序.该类有一个getConnection()方法,用于验证JDBC数据源,并返回Connection对象.(3)Connection类:该类的CreateStatement()方法连接JDBC数据源,返回Statement对象.(4)Statement类:将SQL行为封装起来交给数据库引擎,调用该类的execute(),executeQuery(),executeUpdate()等方法,执行SQL语句,返回resultSet对象.(5)Re
6、sultSet类:封装了一个由SQL查询返回的结果.该类的getString(),getInt()等方法获得一栏数据的存取,next()方法到下一行.,18:52,第10页,四、JDBC编程工作步骤,任何一个JDBC应用程序,都需要以下四个步骤:加载JDBC驱动程序 建立与数据库的连接 进行数据库操作数据集结果分析 关闭相关连接,18:52,第11页,1、加载JDBC驱动程序,在应用程序中,有三种方法可以加载驱动程序:利用System类的静态方法setProperty()System.setProperty(“jdbc.drivers”,“sun.jdbc.odbc.JdbcOdbcDrive
7、r”);利用Class类的静态方法forName()Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);Class.forName(“oracle.jdbc.driver.OracleDriver”);直接创建一个驱动程序对象new sun.jdbc.odbc.JdbcOdbcDriver();,18:52,第12页,2、建立与数据库的连接,利用DriverManager类的静态方法getConnection()来获得与特定数据库的连接实例(Connection实例)。Connection conn=DriverManager.getConnection
8、(source,user,pass);这三个参数都是String类型的,使用不同的驱动程序与不同的数据库建立连接时,source的内容是不同的,但其格式是一致的,都包括三个部分:jdbc:subprotocol:subname 对于JDBC-ODBC Bridge,subprotocol(子协议)为odbc,subname(子名字)则为数据源:“jdbc:odbc:myDSN”。对于其他类型的驱动程序,根据数据库系统的不同subprotocol和subname有不同的格式和内容。,18:52,第13页,3、进行数据库操作,每执行一条SQL语句,都需要利用Connetcion实例conn的cre
9、ateStatement()方法来创建一个Statement实例。Statement mystmt=conn.CreateStatement();Statement的常用方法包括:执行SQL:INSERT,UPDATE 或 DELETE 等语句int executeUpdate(String sql)执行SQL:SELECT语句ResultSet executeQuery(String sql)Statement 中还有其他的方法来执行SQL语句。,18:52,第14页,4、数据集结果分析,一旦执行了SELECT 语句,ResultSet对象rs就包含了满足SQL语句条件的所有行。使用rs.n
10、ext()方法可以下移rs中的行。在行中取得数据可以通过rs.get中的多种方法实现。例如,假定有一个表emps,其中存储了具有name,age 等多个字段的多个记录。如果执行了查询Select*from emps,则下面的代就可以说明如何获得结果:ResultSet rs=stmt.execteQuery(Select*from emps);While(rs.next()String fl=rs.getString(1);/第一列的值 rs.getString(“name”)int f2=rs.getInt(2);/第二列的值 rs.getString(“age”)float f3=rs.g
11、etFloat(3);int f4=getInt(4);,18:52,第15页,5、关闭连接,mystmt.close();/关闭对象(SQL语句对象)rs.close();/关闭对象(结果集对象)con.close();/关闭连接,18:52,第16页,6、整体格式,import java.sql.*;public class JDBCExampleConnection myconn;Statement mystmt;ResultSet myrs;public static void main(String args)tryClass.forname(“xxxxxx”);/驱动程序名/sun
12、.jdbc.odbc.JdbcOdbcDriverCatch(ClassNotFoundException e),18:52,第17页,trymyconn=DriverManager.getConnection(“数据源”,UN,PW);mystmt=myconn.CreateStatement();mystmt.executeUpdate(“insert into xxx(,)values(,)”);myrs=mystmt.executeQuery(“select*from xxx”);while(myrs.next()int xxx1=myrs.getInt(字段1);String xxx
13、2=myrs.getString(字段2“);输出结果;Catch(SQLException e),jdbc:odbc:driver=Microsoft Access Driver(*.mdb);DBQ=XXX.mdb,myrs.close();mystmt.close();myconn.close();,18:52,第18页,五、实例,下面我们通过一个简单的实例介绍如何使用JDBC开发数据库程序。首先使用Access创建一个数据库employees,数据库中建表employee,表结构如下:字段类型长度Name文本20AgeintSalaryfloat 然后通过两个程序对数据库进行存储(UpdateEmp.java),并提取数据(Emp.java)!,18:52,第19页,作业:,参照UpdateEmp.java和Emp.java两个程序,写一个程序,要求能够将张三的年龄改为手工输入的数值,之后显示所有年龄为该数值的所有记录。,