收藏 分享(赏)

java数据库操作.ppt

上传人:gsy285395 文档编号:4529194 上传时间:2019-01-02 格式:PPT 页数:39 大小:2.85MB
下载 相关 举报
java数据库操作.ppt_第1页
第1页 / 共39页
java数据库操作.ppt_第2页
第2页 / 共39页
java数据库操作.ppt_第3页
第3页 / 共39页
java数据库操作.ppt_第4页
第4页 / 共39页
java数据库操作.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、JDBC,回顾1,java.io包中包含了一系列对输入/输出进行操作的类 File类用于访问文件系统,但只能访问文件(或目录)的属性,而不能进行读/写操作 流是指一连串流动的数据信号,是以先进先出方式发送信息的通道,从流动方向上区分,流可以分为输入流和输出流,从格式上区分,可以分为字节流和字符流 使用FileInputStream类和FileOutputStream类以字节流的方式读写文件,回顾2,FileReader类和FileWriter类配合BufferedReader类和BufferedWriter类可以以字符流的方式对文件进行读/写操作 要从控制台接受输入,需要将System.in对

2、象进行包装,使用如下语句:InputStreamReader isr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(isr); DataInputStream类和DataOutputStream类在读/写数据时可以区分数据类型 绝大部分的IO操作都有可能抛出IOException,本章相关词汇,本章目标,了解JDBC的概念和必要性 了解JDBC驱动程序类型 了解java.sql包 理解JDBC程序的结构 使用JDBC进行数据库编程,数据库访问技术简介,当今企业级应用程序大部分采用了客户机/服务

3、器(C/S)模式; 客户端机器需要与服务器进行通讯,要操作数据库中的数据,执行SQL(Structured Query Language结构化查询语言)语句以及检索查询结果; 在Java中实现这些活动的技术称作JDBC。,数据库编程示意图,关于DBMS,DBMS(DataBase Management System)是指数据库管理系统; 目前DBMS的生产商众多,产品也不尽相同,如: Oracle公司的Oracle系列; Microsoft公司的Access系列和SQL Server系列; Microsoft公司早期的FoxPro; IBM公司的DB2; Sybase公司的Sybase; 还有

4、自由开源的MySQL等等。 这就意味着编程语言要针对不同的DBMS开发不同版本的应用程序,这将是一项非常枯燥的工作。,ODBC,ODBC(Open DataBase Connectivity)指开放式数据库连接,是由Microsoft公司提供的应用程序接口; 它负责连接各种不同产商和类型的DBMS,然后为各种不同的编程语言提供查询、插入、修改和删除数据的功能; 如同在各种不同的DBMS和各种不同的编程语言之间架设了一座通用的桥梁。,JDBC,JDBC(Java DataBase Connectivity)是由Sun Microsystem公司提供的API(Application Program

5、ming Interface应用程序编程接口);它为Java应用程序提供了一系列的类,使其能够快速高效地访问数据库;这些功能是由一系列的类和对象来完成的,我们只需使用相关的对象,即可完成对数据库的操作。,JDBC工作方式示意图,JDBC驱动程序类型,使用JDBC连接数据库可以通过不同的驱动方式来实现,有4种驱动类型: JDBC-ODBC桥驱动 纯Java驱动 本地API部分Java驱动 JDBC网络纯Java驱动 不论采用哪种驱动方式,在程序中对数据库的操作方式基本相同,只是加载不同的驱动程序即可。,java.sql包,java.sql包也是Java内置的包,其中包含了一系列用于与数据库进行通

6、信的类和接口; 如果要使用到这些类和接口的话,则必须显式地声明如下语句:import java.sql.*;,java.sql包中的一些接口,java.sql包中的一些类,JDBC程序访问数据库步骤,步骤详解1:建立数据源,这里以JDBC-ODBC桥驱动方式为例,逐步详细地讲解在Java程序中如何操作数据库,而对于其它驱动方式,只需更换驱动程序即可,其余不变; 首先建立ODBC数据源:【开始】 【设置】 【控制面板】【管理工具】【数据源(ODBC)】 新建数据源,名称可以任意,这里假设已经建立了一个名为myODBC的数据源,连接到SQL Server 2000中的pubs数据库。,步骤详解2:

7、加载驱动程序,使用Class类的forName方法,将驱动程序类加载到JVM(Java虚拟机)中;对于使用JDBC-ODBC桥的驱动方式,应该加载:sun.jdbc.odbc.JdbcOdbcDriver类 如:Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“);,步骤详解3:获得连接对象,成功加载驱动后,必须使用DriverManager类的静态方法getConnection来获得连接对象;对于使用JDBC-ODBC桥的连接方式,连接字符串的一般形式是:“jdbc:odbc:数据源名称”,如:Connection con =DriverManager.

8、getConnection(“jdbc:odbc:myODBC“, “sa“, “);,步骤详解释4:创建语句对象,一旦成功连接到数据库,获得Connection对象后,必须通过Connection对象的createStatement方法来创建语句对象,才可以执行SQL语句;如:Statement sta = con.createStatement();,步骤详解5:执行SQL语句,使用语句对象来执行SQL语句,有两种情况: 一种是执行DELETE、UPDATE和INSERT之类的数据库操作语句(DML),这样的语句没有数据结果返回,使用Statement对象的executeUpdate方法执

9、行;如:sta.executeUpdate(“INSERT INTO Friends VALUES(田七, 重庆, 456712, 2003-2-25, 7500)“);,步骤详解5:执行SQL语句(续),另一种是执行SELECT这样的数据查询语句(DQL),这样的语句将从数据库中获得所需的数据,使用Statement对象的executeQuery 方法执行;如:ResultSet rs =sta.executeQuery(“SELECT * FROM Friend“);,步骤详解6:关闭资源,当对数据库的操作结束后,应当将所有已经被打开的资源关闭,否则将会造成资源泄漏; Connection

10、对象、Statement对象和ResultSet对象都有执行关闭的close方法; 函数原型都是:void close() throws SQLException 如:rs.close(); /关闭ResultSet对象sta.close(); /关闭Statement对象con.close(); /关闭Connection对象 有可能抛出SQLException异常,必须捕捉; 请注意关闭的顺序,最后打开的资源最先关闭,最先打开的资源最后关闭。,数据库操作示例,import java.sql.*; /导入java.sql包 public class JDBCDemo public stati

11、c void main(String args) String strCon = “jdbc:odbc:myODBC“; /连接字符串String strUser = “sa“; /数据库用户名String strPwd = “; /口令System.out.println(“正在连接数据库.“);try /监控异常Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); /加载驱动程序Connection con;/获得连接对象con = DriverManager.getConnection(strCon, strUser, strPwd);System

12、.out.println(“成功连接到数据库。“);Statement sta = con.createStatement(); /创建语句对象/执行SQL语句String strSql = “DELETE FROM Friends WHERE Name = 郑六“;int count = sta.executeUpdate(strSql);System.out.println(“成功删除“ + count + “行数据。“);sta.close(); con.close(); /关闭所有已经打开的资源 catch (ClassNotFoundException cnfe) cnfe.prin

13、tStackTrace(); catch (SQLException sqle) sqle.printStackTrace(); ,操作结果集,使用Statement对象的executeQuery方法成功执行SELECT语句后,将返回一个包含有结果数据的ResultSet对象,要从该对象中获取数据,将使用到如下方法:,操作结果集示例,try String strCon = “jdbc:odbc:MyODBC“;System.out.println(“正在连接数据库.“);Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“);Connection con;c

14、on = DriverManager.getConnection(strCon, “sa“, “);System.out.println(“成功连接到数据库。“);Statement sta = con.createStatement();ResultSet rs = sta.executeQuery(“SELECT * FROM Friends“);System.out.println(“查询到数据如下:“);while (rs.next() /循环将结果集游标往下移动,到达末尾返回false/根据字段名称获得各个字段的值System.out.print(rs.getString(“Name

15、“) + “t“); /获得字符串System.out.print(rs.getString(“Address“) + “t“); /获得字符串System.out.print(rs.getInt(“Telephone“) + “t“); /获得整数System.out.print(rs.getDate(“HireDate“) + “t“); /获得日期型数据System.out.println(rs.getFloat(“Salary“); /获得浮点型数据rs.close(); sta.close(); con.close(); catch (ClassNotFoundException c

16、nfe) cnfe.printStackTrace(); catch (SQLException sqle) sqle.printStackTrace(); ,PreparedStatement接口1,如果要多次执行相似的SQL语句,可以使用PreparedStatemend(预编译语句对象)对象来执行; 通过Connection对象的prepareStatement方法来创建预编译语句对象;PreparedStatement对象会将SQL语句预先编译,这样将会获得比Statement对象更高的执行效率。,PreparedStatement接口2,包含在PreparedStatement对象中

17、的SQL语句可以带有一个或多个参数,使用“?”作为占位符,如:PreparedStatement ps = con.prepareStatement(“UPDATE Friends SET Address = ? WHERE Name = ?“); 在执行SQL语句之前,必须使用PreparedStatement对象中的setX方法设置每个“?”位置的参数值;如:ps.setString(1, “长沙“);ps.setString(2, “王五“);,PreparedStatement接口3,设置好每个参数的值之后,就可以使用PreparedStatement对象的executeUpdate和

18、executeQuery方法来执行SQL语句,这一点和Statement对象很相似:,PreparedStatement对象示例,String strCon = “jdbc:odbc:MyODBC“; System.out.println(“正在连接数据库.“); Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); Connection con; con = DriverManager.getConnection(strCon, “sa“, “); System.out.println(“成功连接到数据库。“);PreparedStatement ps

19、; /使用带参数的SQL语句创建PreparedStatement对象 ps = con.prepareStatement(“UPDATE Friends SET Address = ? WHERE Name = ?“); /设置SQL语句中的参数值 ps.setString(1, “长沙“); ps.setString(2, “王五“); int count = ps.executeUpdate(); /执行命令System.out.println(“成功更新了“ + count + “行数据。“); ps.close(); /关闭资源 con.close();,纯Java驱动方式连接数据库

20、,使用JDBC-ODBC桥方式连接数据库,其性能完全取决于数据源(ODBC)的性能,并且无法脱离Microsoft的平台,这样将带来不便; 大部分DBMS产商都为自己的产品开发了纯Java的驱动程序,我们只需要加载相应的驱动,就可以直接连接到数据库,而无需通过ODBC桥连接; 鉴于DBMS产品太多,这里只针对当今比较流行的SQL Server 2000和Oracle 9i进行介绍。,下载驱动程序包,要使用纯Java驱动,首先必须获得相应数据库的驱动程序包; 根据数据库的类型,登录对应产商的官方网站,一般都可以免费获得; 下载后,复制到本地磁盘,并将完整路径设置到classpath环境变量中,如

21、用开发工具开发程序,还需在开发环境中设置路径。,纯Java驱动连接SQL Server2000,使用纯Java驱动连接到SQL Server 2000数据库,加载驱动程序应改成如下语句:Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver“); 连接字符串应如下格式:“jdbc:microsoft:sqlserver:/服务器名或IP:1433;databaseName=数据库名“ 如:Connection con = DriverManager.getConnection(“jdbc:microsoft:sqlserver:/

22、127.0.0.1:1433;databaseName=pubs“, “sa“, “);,纯Java驱动连接SQL Server2005,使用纯Java驱动连接到SQL Server 2005数据库,加载驱动程序应改成如下语句:Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver“); 连接字符串应如下格式:“jdbc:sqlserver:/服务器名或IP:1433;databaseName=数据库名“ 如:Connection con = DriverManager.getConnection(“jdbc:sqlserver:

23、/127.0.0.1:1433;databaseName=pubs“, “sa“, “sa“);,纯Java驱动连接MySQL,使用纯Java驱动连接到MySQL 5.0数据库,加载驱动程序应改成如下语句:Class.forName(“com.mysql.jdbc.Driver“); 连接字符串应如下格式:“jdbc:mysql:/服务器名或IP:3306/数据库名“ 如:Connection con = DriverManager.getConnection(“jdbc:mysql:/127.0.0.1:3306/test“, “root“, “root“);,纯Java驱动连接Oracle

24、,使用纯Java驱动连接到Oracle 9i数据库,加载驱动程序应改成如下语句:Class.forName(“oracle.jdbc.driver.OracleDriver“); 连接字符串应如下格式:“jdbc:oracle:thin:服务名或IP:1521:数据库名“ 如:Connection con = DriverManager.getConnection(“jdbc:oracle:thin:127.0.0.1:1521:test“, “scott“, “tiger“);,总结,JDBC是使用Java程序操作数据库的技术; 使用 Class类的forName 方法可以将驱动程序加载到 Java 解释器中; 使用DriverManager类的getConnection方法获得Connection对象,从而建立与数据库的连接;使用Connection对象的createStatement方法创建语句对象,以便执行SQL语句; 使用Statement对象的executeQuery或executeUpdate方法执行SQL语句,并使用ResultSet对象来操作结果数据; PreparedStatement接口允许创建预编译的SQL语句,并使得在后续阶段可以指定语句的参数。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > Java

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报