第6章访问数据库

上传人:E**** 文档编号:91636546 上传时间:2019-06-30 格式:PPT 页数:52 大小:570KB
返回 下载 相关 举报
第6章访问数据库_第1页
第1页 / 共52页
第6章访问数据库_第2页
第2页 / 共52页
第6章访问数据库_第3页
第3页 / 共52页
第6章访问数据库_第4页
第4页 / 共52页
第6章访问数据库_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《第6章访问数据库》由会员分享,可在线阅读,更多相关《第6章访问数据库(52页珍藏版)》请在金锄头文库上搜索。

1、Java Web开发技术教程,第六章 jdbc访问数据库,本章主要内容,JDBC介绍 使用JDBC驱动程序访问数据库 使用javaBean访问数据库 综合实例,JDBC介绍,JDBC(Java Database Connectivity):Java数据库连接,是Java程序与数据库系统通信的标准API。 由一组用Java语言编写的类和接口组成 JDBC可以做三件事 与数据库建立连接 发送SQL语句 处理结果,JDBC总体结构,Java Application,JDBC Manager,Driver A,JDBC-ODBC Bridge Driver ODBC and DB Drivers,JD

2、BC API,JDBC Driver API,JDBC的主要接口,java.sql.DriverManager java.sql.Connection java.sql.Statement java.sql.ResultSet,JDBC的主要接口,java.sql.DriverManager java.sql.Connection java.sql.Statement java.sql.ResultSet,DriverManager类是Java.sql包中用于数据库驱动程序管理的类,作用于用户和驱动程序之间。,Connection是用来表示数据库连接的对象,对数据库的一切操作都是在这个连接的基

3、础上进行的。,JDBC的主要接口,java.sql.DriverManager java.sql.Connection java.sql.Statement java.sql.ResultSet,Statement用于在已经建立的连接的基础上向数据库发送SQL语句的对象。它只是一个接口的定义,其中包括了执行SQL语句和获取返回结果的方法。,JDBC的主要接口,java.sql.DriverManager java.sql.Connection java.sql.Statement java.sql.ResultSet,结果集(ResultSet)用来暂时存放数据库查询操作获得的结果。,JDBC

4、的主要接口,java.sql.DriverManager java.sql.Connection java.sql.Statement java.sql.ResultSet,使用JDBC驱动程序访问数据库,获取相应数据库的jdbc驱动程序,并将它们保存在指定的位置, 然后重新启动tomcat服务; 编写程序的具体步骤 装载驱动程序; 定义所要连接数据库的地址; 建立与数据库的连接; 建立语句对象; 声明并执行SQL语句; 处理返回的结果; 关闭对象;,首先导入java.sql包,首先应该导入java.sql包。语句为: ,编程步骤1装载驱动程序,利用Class.forName()方法加载某一个

5、数据库的驱动程序。 语法:Class.forName(“JDBC驱动程序类”); 方法: 使用JDBC/ODBC桥驱动程序:Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); 使用mySQL的驱动程序: Class.forName(“com.mysql.jdbc.Driver”); 使用SQLServer的驱动程序: Class.forName (“com.microsoft.jdbc.sqlserver.SQLServerDriver”);,编程步骤1装载驱动程序,方法: 使用oracle的驱动程序: Class.forName(“oracle.jd

6、bc.driver.OracleDriver”); 使用DB2的驱动程序: Class.forName(“com.ibm.db2.jdbc.app.DB2Driver”); 经过以上其中之一语句的声明后,驱动程序就会自动地加载。 注意:如果classpath路径中没有找到所需的驱动程序则会抛出 ClassNotFoundException异常。,编程步骤2定义连接数据库地址,通过此步骤,定义要连接的数据库资源 String ODBCURL “ jdbc:odbc:dbName“; String mysqlURL= “jdbc:mysql:/host:port/dbName “; String

7、sqlserverURL “ jdbc:microsoft:sqlserver:/host:1433;DatabaseName=dbName “; String oracleURL= “jdbc:oracle:thin:host:port:dbName “; 不同数据库连接的地址不同,这点需要特别注意,对一些常见的数据库连接地址,要求大家能够掌握。 URL由3部分组成,各个部分用冒号间隔,格式如下:jdbc: 参见附录,编程步骤2定义接数据库地址,JDBC URL的3部分可分解如下: jdbc:JDBC中的协议就是jdbc。 :数据库驱动程序名或数据库连接机制的名称。子协议的典型示例为orac

8、le,它用于连接oracle数据库。 :一种标记数据库的方法。子名称根据子协议的不同而不同,使用子名称的目的是为定位数据库 例如 jdbc:oracle:thin:ip:port:sid,子协议现在是 oracle,子名称现在由四部分构成:包括驱动程序类型thin、数据库服务器的IP地址、提供服务的端口号、数据库的名字,编程步骤3建立与数据库的连接,语法:Connection con=DriverManager.getConnection(url,”登录数据库用户名”,”登录密码”); 例:以mySQL连接数据库book为例,用户名为root,密码为123 String driverStr=“

9、com.mysql.jdbc.Driver“; String connStr=“jdbc:mysql:/localhost:3306/book“; Class.forName(driverStr); Connection conn = DriverManager.getConnection(connStr, “ root “, “ 123 “);,编程步骤4建立语句对象,利用 Connection接口 createStatement() 方法创建语句对象。 例:Statement stmt=con.createStatement(); 语句对象用于执行SQL语句。该对象负责将SQL语句传递给数

10、据库管理系统执行。,编程步骤5声明并执行SQL语句,声明SQL语句,并将该语句通过Statement对象提交给服务器进行执行。 String sql= “ SELECT * FROM book “; /上面的语句用于从book表中查询所有记录。 ResultSet resultSet=stmt.executeQuery(sql); /该语句将sql命令提交给数据库服务器进行执行,并将执行结果存储在ResultSet对象中进行执行。,编程步骤5声明并执行SQL语句,Statement接口主要有如下三个方法: 1. public ResultSet executeQuery(String sql)

11、 throws Exception 以sql语句为参数,执行sql查询语句,返回一个ResultSet结果集(一个二维表)。 例如: Statement stmt=con.createStatement(); Stringsql= “ SELECT * FROM book “; ResultSet rs=stmt.executeQuery(sql);,编程步骤5声明并执行SQL语句,2. int executeUpdate(String sql) 以sql语句为参数,执行sql更新语句及DDL语句,如添加、删除或修改操作,返回被受影响记录的条数。 例如: Statement stmt=con.

12、createStatement(); String sql= “ delete FROM book where bookid= “ + “ 12335 “; ResultSet rs=stmt.executeUpdate(sql); System.out.println(i);,编程步骤5声明并执行SQL语句,3. boolean execute(String sql) 用于执行实现不知道类型的SQL语句,既可以执行查询语句,也可以执行更新语句。 常用于动态的处理未知的SQL语句,事先无法知道该SQL语句的具体类型及执行的返回值。 执行参数部分的SQL语句; 当SQL语句的执行结果是一个Res

13、ultSet结果集时,本方法返回true;并可以通过StatementgetResultSet()方法得到返回的结果集 当SQL语句执行后没有返回的结果集时,该方法返回false,编程步骤6对结果集进行处理,Statement对象负责将SQL语句传递给数据库管理系统执行,返回的是一个ResultSet的对象。 ResultSet对象,称为结果集,是符合条件的所有行的集合。 可以通过(first(), last(), previous(), next(), absolute(int), ) 方法浏览可滚动结果集中的内容 对结果集中的内容进行修改(updateString(col,val), )

14、支持多个结果集,ResultSet 有如下几个方法:,1. boolean next() 用于将 ResultSet定位到下一行。 ResultSet最初是定位在第0行上的,此时应该先调用next()方法将其定位到第1行上,然后才可输出。 当 ResultSet已经到了最后一行时,再调用next()方法,则返回 false。,2. getXXX(),当 ResultSet已经定位在某一行上时,使用 getXxx ()方法得到这一行上单个字段的值。 针对不同的字段类型,调用不同的getXxx ()方法(getString(col), getDate(col), getInt(col),) 例:

15、如果表中的第一个字段,字段名为“name”,是文本型的; 则可以使用getString(1)或 getString(“name”)来得到它的值。 如果表中的第三个字段,字段名为“score”,是数值型的; 则可以使用getFloat(3)或 getFloat(“score”)来得到它的值。,2. getXXX(),显示结果集中所有记录的前两列: while(rs.next() name =rs.getString(1); phone =rs.getString(2); System.out.println(name+“,“+phone); ,编程步骤7关闭打开的资源,rs.close(); /

16、关闭结果集 stmt.close(); /关闭语句对象 con.close(); /关闭连接 注意:资源关闭的顺序和打开的顺序恰恰相反。,编程步骤8异常处理,try catch(SQLException ex) ,例子,import java.sql.* Try Class.forName(“oracle.jdbc.driver.OracleDriver“); String oraURL= “jdbc:oracle:thin:host:port:dbName”; Connection con=DriverManager.getConnection(oraURL, username,password); Statement statement =con.createStatement(); String query = “SELECT name, pwd FROM sometable“; ResultSet resultSet=

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号