410 likes | 670 Views
JDBC 基本概念与应用. 杨颂. 讲课内容. JDBC 基本概念 如何通过 JDBC 访问数据库. JDBC 基本概念. JDBC 为 java 开发者使用数据库提供了统一的编程接口,它由一组 java 类和接口组成。是 java 程序与数据库系统通信的标准 API 。 JDBC API 使得开发人员可以使用纯 java 的方式来连接数据库,并执行操作。. JDBC 的结构. 程序包 主要的类 Jdbc 的几种类型. JDBC 的两个程序包. Java.sql (核心 API ) Javax.sql (扩展 API )
E N D
JDBC 基本概念与应用 杨颂
讲课内容 • JDBC基本概念 • 如何通过JDBC访问数据库
JDBC基本概念 • JDBC为java开发者使用数据库提供了统一的编程接口,它由一组java类和接口组成。是java程序与数据库系统通信的标准API。JDBC API 使得开发人员可以使用纯java的方式来连接数据库,并执行操作。
JDBC的结构 • 程序包 • 主要的类 • Jdbc的几种类型
JDBC的两个程序包 • Java.sql(核心API) • Javax.sql (扩展API) • Jdbc网站:http://java.sun.com/products/jdbc
Java.sql(核心API) • 这个宝中的类主要针对基本的数据库变成服务,如生成连接、执行语句以及准备语句和运行批处理查询等。 • Java.sql包同时还提供了一些高级的处理,比如批处理更新、事务隔离和可滚动结果集等。
Javax.sql (扩展API) • 它主要为数据库方面的高级操作提供了接口和类。如连接管理、分布式事务和行集等。
JDBC常用接口 • Driver接口 • DriverManager接口 • Connection接口 • Statement接口 • Result接口
Driver接口 • Driver接口由数据库厂家提供,对于java开发者而言,只需要使用Driver接口就可以了。 • 在编程中要连接数据库,必须先装载特定厂商的数据库驱动程序。不同的数据库有不同的装载方法。
装载驱动 • 装载JDBC-ODBC驱动: Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); • 装载MS SQL Server驱动: Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);
装载驱动 • 装载MySql驱动 Class.forName(“org.gjt.mm.mysql.Driver”); • 装载Oracle驱动 Class.forName(“oracle.jdbc.driver.OracleDriver”);
DriverManager接口 • DriverManager是JDBC的管理层,作用于用户和驱动程序之间。 • DriverManager跟踪可用的驱动程序,并在数据库和相应的驱动程序之间建立连接。 • DriverManager处理驱动程序登陆时间限制、跟踪消息的显示等。
Connection接口 • Connection与特定数据库的连接(会话),在连接上下文中执行 SQL 语句并返回结果。 • DriverManager的getConnection()方法建立在JDBC URL中定义的数据库Connection连接上: Connection con= DriverManager.getConnection(url,login,password);
Statement接口 • 用于执行静态 SQL 语句并返回它所生成结果的对象。 • 一般情况下使用connection.createStatement()方法可以得到Statement实例。
Statement接口 • 三种Statement对象: Statement、PreparedStatement和CallableStatement。 • 常用的Statement方法: execute():运行语句,返回是否有结果集。 executeQuerty():运行查询语句,返回ResultSet结果集。 executeUpdate():运行更新操作,返回更新的行数。
ResultSet接口 • Statement执行SQL语句时返回ResultSet结果集。 • ResultSet提供的检索不同类型字段的方法,常用的有: getString():获得在数据库里是varchar、char等数据类型的对象。 getFloar():获得杂数据库里是Float类型的对象。
ResultSet接口 • getDate():获得在数据库里面是Date类型的数据。 • getBoolean():获得在数据库里面是Boolean类型的数据。 • getObject():在Sql中无对应类型,获得序列化对象。
JDBC的几种类型 • 数据库厂商一般会提供一组API访问数据库。流行的数据库如Oracle、SQL Server、Sybase、Informix都提供了专用的API。
JDBC的几种类型 • Type 1 JDBC-ODBC桥 • Type 2 部分java部分本机驱动程序 • Type 3 中间数据访问服务器 • Type 4 纯java驱动程序
Type 1 JDBC-ODBC桥 • JDBC Type 1 驱动程序基于 JDBC-ODBC 桥。它是把JDBC操作翻译成对于的ODBC调用。 • 优点:可以访问所有ODBC可以访问的数据库。 • 缺点:执行效率低。
Type 2 部分java部分本机驱动程序 • JDBC Type 2 驱动程序依靠特定于操作系统的库(共享库)来与 RDBMS 通信。应用程序将装入这种 JDBC 驱动程序,而驱动程序将使用共享库来与 数据库 服务器通信。
Type 3 中间数据访问服务器 • JDBC Type 3 驱动程序将应用程序与中间件服务器连接,中间件服务器将应用程序的JDBC调用映射到适当的数据库驱动程序上。 • WebLogic的驱动池就是属于type3类型。
Type 4 纯java驱动程序 • Type 4 驱动程序是仅用于 Java 的 JDBC 驱动程序,它直接连接到数据库服务器。
JDBC object, interface model Driver Manager Driver Register Provide JVM Driver Layer Application Layer Connection Execute Result Statement ResultSet Extends Extends Prepared Statement Callable Statement
JDBC的使用 • 程序写作步骤 • 使用实例
JDBC 之程序写作步骤 1.注册并载入特定的 Database Driver Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); 2.利用 Driver Manager 建立DB Connection Connection conn = DriverManager.getConnection(“jdbc:odbc:myDB”, “user”,”pw”); 3.利用 Connection对象执行 SQL 语句并返回它所生成结果的对象。 Statement stmt = conn.createStatement( );
JDBC 之程序写作步骤 4.利用 Statement 执行 SQL Statement 必要时取得 ResultSet reference ResultSets rs = stmt.executeQuery(“Select * from Book”); 5.利用 ResultSet 读取相关资料 rs.getXXX(“fieldName”); 6.依序关闭使用之对象及连接; ResultSet Statement Connection
连接数据库JDBC-ODBC 连接数据库 Connection con = null; try { //调用JDBC-ODBC 驱动程序 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //建立连接 con = DriverManager.getConnection("jdbc:odbc:MS Access Database;DBQ=.\\database\\Company.mdb"); Statement stmt = con.createStatement();
连接数据库JDBC-ODBC //利用 Statement 执行 SQL Statement 并保存到ResultSet 中。 ResultSet rst = stmt.executeQuery("SELECT chCompanyName FROM Company;"); //处理结果集 while (rst.next()) {System.out.println(rst.getString("chCompanyName")); } } catch (Exception e) { e.printStackTrace(); }
不同数据库厂商的JDBC驱动的使用 • Microsoft Access Database • Microsoft SQL Server • MySQL Database • Oracle Database • Sybase Database
Microsoft Access Database 语法: //调用JDBC-ODBC 驱动程序 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //建立连接 con = DriverManager.getConnection("jdbc:odbc:MS Access Database;DBQ=.\\database\\Company.mdb");
Microsoft SQL Server 语法: Class.forName("net.sourceforge.jtds.jdbc.Driver "); Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://host:port/database","user","password"); or Connection con = DriverManager.getConnection("jdbc:jtds:sybase://host:port/database","user","password");
MySQL Database 语法: Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql://host:port/database","user","password");
Oracle Database 语法: Class.forName("oracle.jdbc.driver.OracleDriver"); Connection con = DriverManager.getConnection("jdbc:oracle:thin:@host:port:databse","user","password");
Sybase Database • 语法: Class.forName("com.sybase.jdbc2.jdbc.SybDriver").newInstance(); DriverManager.getConnection("jdbc:sybase:Tds:IP地址:2638?ServiceName="+数据库名称,"账号","密码");