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