Ch12-Java数据库编程接口v3.ppt
《Ch12-Java数据库编程接口v3.ppt》由会员分享,可在线阅读,更多相关《Ch12-Java数据库编程接口v3.ppt(61页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、JDBCJDBC JavaJava数据库编程接口数据库编程接口教材第教材第12章章12.1 JDBC概述概述n在在Java程序中,程序中,连接数据接数据库采用采用JDBC(Java DataBase Connectivity)技)技术。JDBC是是由由Sun公公司司提提供供的的与与平平台台无无关关的的数数据据库连接接标准准,它它将将数数据据库访问封封装装在在少少数数几几个个方方法法内内,使使用用户可可以以极极其其方方便便地地查询数数据据库、插插入入新新的的数数据据、更改数据。更改数据。nJDBC是一种是一种规范,目前各大数据范,目前各大数据库厂商基本都提厂商基本都提供供JDBC驱动程序,使得程
2、序,使得Java程序能独立运行于各程序能独立运行于各种数据种数据库之上之上。12.1 JDBC概述概述Java applicationJDBC Driver ManagerJDBC APIJDBC Driver(数据库厂家提供)JDBC Driver APIDBMS JDBC驱动程序类型驱动程序类型SUN定定义的的JDBC驱动程序程序类型:型:nType1:JDBC-ODBC桥作作为JDK1.1后的一部分,是后的一部分,是sun.jdbc.odbc包的一部分包的一部分Application-JDBC-ODBC Bridge(Type1 jdbc driver)-JDBC-ODBC Librar
3、y-ODBC Driver-Database通通过ODBC驱动程序提供程序提供JDBC访问,缺点是必,缺点是必须加加载到目到目标机器上,并且机器上,并且ODBC-JDBC转换影响效率。适用于快影响效率。适用于快速的原型系速的原型系统,没有提供,没有提供JDBC驱动的数据的数据库如如Access。nType2:Java to Native API利用开利用开发商提供的本地商提供的本地库来直接与数据来直接与数据库通信。通信。Application-JDBC Driver(Type2 jdbc driver)-Native Database library-Database比比Type1性能略好。性
4、能略好。JDBC驱动程序类型驱动程序类型nType3:Java to netApplication-Jdbc Driver(Type3 jdbc driver)-java middleware-JDBC Driver-Database具有最大的灵活性,通常由那些非数据具有最大的灵活性,通常由那些非数据库厂商厂商提供,是四种提供,是四种类型中最小的。型中最小的。nType4:Java to native dababaseApplication-Jdbc driver(type4 jdbc driver)-database engine-database最高的性能,通最高的性能,通过自己的本地自己
5、的本地协议直接与数据直接与数据库引擎通信,具引擎通信,具备在在Internet装配的能力。装配的能力。JDBC的工作过程的工作过程JDBC的工作的工作过程程n与与数数据据源源建建立立连接接:通通过DriverManager类建建立立与与数数据据源源的的连接接,这个个连接接作作为数数据据操操作作的的起起点点,也也是是连接会接会话事事务操作的基操作的基础;n向向数数据据库发出出SQL命命令令:通通过Statement类或或者者PreparedStatement类向向数数据据源源发送送SQL命命令令,然然后再后再调用用类中的中的execute方法来方法来执行行SQL命令;命令;n处理理数数据据源源返
6、返回回的的结果果:对于于DDL/DML操操作作,返返回回被被修修改改的的记录数数,对于于查询操操作作,返返回回结果果集集ResultSet,通通过遍遍历结果果集集可可以以获得得所所需需的的查询结果。果。数据库连接数据库连接n每个每个JDBC应用程序至少要有一个用程序至少要有一个JDBC驱动程序版程序版本,本,JDBC驱动程序是程序是Driver接口接口类的的实现。nDriver类是是驱动程序厂家程序厂家实现的接口,的接口,Driver使使DriverManager和和JDBC应用程序用程序层可以独立于具可以独立于具体的数据体的数据库系系统。应用程序JDBCOracle驱动程序MySQL驱动程序
7、JDBC功能结构图功能结构图JDBC API(类)类)njava.sql.DriveManager 负责装装载、拆除、拆除驱动程序,程序,负责连接接驱动程序。程序。njava.sql.Connection 实现对某一数据某一数据库的的连接功能(建立接功能(建立连接)。接)。njava.sql.Statement 在一个在一个给定的定的连接中作接中作为执行行SQL语句的容器。句的容器。njava.sql.ResultSet保存保存SQL语句句执行行结果果 njava.sql.PreparedStatement用于用于执行行预编译的的SQL声明声明njava.sql.CallableStateme
8、nt用于用于执行数据行数据库中存中存储过程的程的调用用12.2 JDBC开发一般步骤开发一般步骤n本节首先介绍数据库编程的一般过程,然后通过几个有代表性的实例介绍数据库编程方法。JDBC开发一般步骤:n加载驱动程序;n连接数据库;n建立与执行SQL语句;n对返回结果集进行操作;n关闭对象资源。12.2 JDBC开发一般步骤开发一般步骤n加加载驱动程序程序 要连接数据库,首先要加载JDBC驱动程序。加载JDBC驱动程序的语句如下:Class.forName(JDBC驱动程序名);或 Class.forName(JDBC驱动程序名).newInstance();例如,要加载JDBC-ODBC桥驱动
9、程序,使用以下语句;Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);使用JDBC-ODBC桥驱动程序,可以通过ODBC数据源连接数据库。12.2 JDBC开发一般步骤开发一般步骤n连接数据接数据库 加载了JDBC驱动程序后,便可以连接数据库了。连接数据库使用以下语句;Connection 连接变量=DriverManager.getConnection(数据库URL,用户帐号,用户密码);数据库URL由三部分组成:jdbc:subProtocol:subName即主通信协议、子通信协议和子名称。例如 Connection conn=DriverMan
10、ager.getConnection(“jdbc:odbc:myDB”,“li”,“1234”);如果连接成功,对数据库的任何操作都可以通过conn来进行了。12.2 JDBC开发一般步骤开发一般步骤n建立与建立与执行行SQL语句句 要对连接的数据库进行查询、更改或添加数据,可通过SQL语句并创建相关对象(Statement,PreparedStatement 或CallableStatement)。建立Statement对象。执行SQL语句需要建立Statement对象变量。通过Connetion对象createStatemnet()方法创建该对象的语句如下:Statement stmt=c
11、onn.createStatement();执行SQL语句。建立上述对象之后,有3种方法执行SQL语句,分别是:executeQuery(String sql);/执行select的SQL查询语句,该语句返回单个 ResultSet 对象。executeUpdate(String sql);/执行insert、delete、update更新语句,以及DDL语句,该语句返回整数。execute(String sql);/执行给定的 SQL 语句,该语句可能返回多个结果。例如:stmt.executeUpdate(insert into employee values(2020,翟建设,男,746
12、);String sql=SELECT*FROM employee WHERE sex=男”;ResultSet rs=stmt.executeQuery(sql);12.2 JDBC开发一般步骤开发一般步骤n对返回返回结果集果集进行操作行操作 ResultSet对象。用来保存查询的所有结果数据。通过Statement对象的executeQuery()方法,返回一个ResultSet对象,例如:String sql=SELECT*FROM employee WHERE sex=男”ResultSet rs=stmt.executeQuery(sql);ResultSet对象以类似表中记录的组织
13、方式来组织查询到的结果。使用下列的循环语句对查询结果逐行处理。while(rs.next()/对每行每行记录进行行处理,例如:理,例如:System.out.println(rs.getInt(1)+t+rs.getString(2);12.2 JDBC开发一般步骤开发一般步骤n关关闭对象,象,释放放资源源 对数据库操作完成后,应该使用对象的close()方法将操作数据库的对象资源关闭。其句型是:对象名.close()例如,要关闭前面建立的对象资源,使用以下语句:rs.close();stmt.close();conn.close();12.3 JDBC开发实例开发实例例:查询数据库 假定对数
14、据库myDB.mdb已经建立了数据源myDB,myDB.mdb中有一个表employee。该实例利用JDBC-ODBC桥驱动程序,访问Access数据库myDB.mdb,显示表中所有职员的no(编号)、name(姓名)、sex(性别)和salary(工资)。import java.sql.*;class Query public static void main(String args)try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundException ce)System.out.println(SQLExc
15、eption:+ce.getMessage();1 1 查询数据库查询数据库1查询数据库(续)查询数据库(续)try Connection con=DriverManager.getConnection(jdbc:odbc:myDB);Statement stmt=con.createStatement();String sqlstr=select*from employee;ResultSet rs=stmt.executeQuery(sqlstr);while(rs.next()System.out.println(编号号+rs.getString(no)+t +姓名姓名 +rs.getS
16、tring(name)+t +性性别 +rs.getString(sex)+t +工工资 +rs.getFloat(salary);rs.close();stmt.close();catch(SQLException e)System.out.println(SQLException:+e.getMessage();2插入记录插入记录假定假定对数据数据库myDB.mdb已已经建立了数据源建立了数据源myDB,myDB.mdb中有一个中有一个表表employee,该实例利用例利用JDBC-ODBC桥驱动程序,程序,访问Access数据数据库myDB.mdb,在表中插入,在表中插入2条条记录,其数
17、据分,其数据分别为:2001,邢雪花,女,邢雪花,女,650和和2020,翟建,翟建设,男,男,746。import java.sql.*;class Insert1 public static void main(String args)try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundException ce)System.out.println(SQLException:+ce.getMessage();2插入记录(续)插入记录(续)try Connection con=DriverManager.get
18、Connection(jdbc:odbc:myDB,li,1234);Statement stmt=con.createStatement();String sqlstr=insert into employee values(2001,邢雪花邢雪花,女女,650);stmt.executeUpdate(sqlstr);stmt.executeUpdate(insert into employee values(2020,翟建翟建设,男男,746);stmt.close();con.close();catch(SQLException e)System.out.println(SQLExcep
19、tion:+e.getMessage();3修改记录修改记录该实例利用例利用JDBC-ODBC桥驱动程序程序访问Access数据数据库myDB.mdb,修改表中,修改表中2条条记录,将,将name为翟建翟建设的的记录的的no改改为3000,将,将no值为2001记录中的中的salary改改为900。import java.sql.*;class Update1 public static void main(String args)try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundException ce)Sy
20、stem.out.println(SQLException:+ce.getMessage();try Connection con=DriverManager.getConnection(jdbc:odbc:myDB,li,1234);Statement stmt=con.createStatement();String sql=update employee set no=3000+where name=翟建翟建设;stmt.executeUpdate(sql);sql=update employee set salary=900+where no=2001;stmt.executeUpda
21、te(sql);stmt.close();con.close();catch(SQLException e)System.out.println(SQLException:+e.getMessage();3修改记录(续)修改记录(续)4.4.删除记录删除记录 该实例利用例利用JDBC-ODBC桥驱动程序,程序,访问Access数据数据库mdDB.mdb,删除除employee表中表中no值为1004的的记录。import java.sql.*;class Delete public static void main(String args)try Class.forName(sun.jdbc.
22、odbc.JdbcOdbcDriver);catch(ClassNotFoundException ce)System.out.println(SQLException:+ce.getMessage();4.4.删除记录(续)删除记录(续)try Connection con=DriverManager.getConnection(jdbc:odbc:myDB,li,1234);Statement stmt=con.createStatement();String sql=delete from employee where no=1004;stmt.executeUpdate(sql);st
23、mt.close();con.close();catch(SQLException e)System.out.println(SQLException:+e.getMessage();5.5.建立表建立表 该实例利用例利用JDBC-ODBC桥驱动程序程序访问Access数据数据库mdDB.mdb,建立,建立表表student,其中有,其中有s_num(学号)、(学号)、s_name(姓名)和(姓名)和score(成(成绩)3列数据。列数据。给表中表中输入一条入一条记录,其数据,其数据为:9901,张学学军,85。import java.sql.*;class Create public sta
24、tic void main(String args)try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundException ce)System.out.println(SQLException:+ce.getMessage();5.5.建立表(续)建立表(续)try Connection con=DriverManager.getConnection(jdbc:odbc:myDB,li,1234);Statement stmt=con.createStatement();String sql=create tab
25、le student(s_num char(4),s_name char(6)null,score int);stmt.executeUpdate(sql);sql=insert into student(s_num,s_name,score)values(9901,张学学军,85);stmt.executeUpdate(sql);stmt.close();con.close();catch(SQLException e)System.out.println(SQLException:1+e.getMessage();6.6.删除表删除表 该实例利用例利用JDBC-ODBC桥驱动程序程序访问A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Ch12 Java 数据库 编程 接口 v3
限制150内