J2EE技术规范(二)——JDBC

时间:2021-01-28 09:08:16

一、了解JDBC

(1) JDBC是以统一方式访问数据库的API

(2) JDBC提供:

    独立于平台的数据库访问

    位置透明

    对专有数据库的问题时透明的


二、了解JDBC驱动程序

(1) JDBC Drivers是实现数据库操作的类

(2) Drivers分成两类:

  2-层——客户直接和数据库会话

  3-层——客户与代表数据库的中间层(WebLogic Server)会话

其实也就是:两层架构直接与数据库进行处理

三层架构加载数据库的中间层

这些跟.net几乎没什么差别。我们继续来看一个图:

J2EE技术规范(二)——JDBC

我们看这个图有什么想发?

第4种:居于Java特色的。不需要安装软件和客户端;跟位置与平台是没有关系的。,

第1、2、4:都是两层的类型,直接连接到数据库的

第3种:基于NetworkServer集中式的监控,屏蔽丢不同的平台。在1、2、4的基础上,通过webserver来连接的一种资源。是一种特殊的jdbC的类型

三、使用JDBC直接访问数据库

(1) 直接访问数据库由下列组成:

     加载JDBC驱动器类

我们看一下直接连接数据库的示例:

(2) 使用基本的JDBC命令

import java.sql.*;
try{
class.forName("com.pointbase.jdbc.jdbcUniversalDriver");
Connection con=DriverManager.getConnect("jdbc:pointbase;//server:port/MyDatabase");
Statement stmt=con.createStatement();
String sql="select * from mytable";
ResultSet res=stmt.executeQuery(sql);
while(res.next()){
String col1=res.getString("MYCOLUMN1");
int col2=res.getInt("MYCOLUMN2");
}catch(Exception e){...}
}

四、使用多层(Type3)Drivers

要使用多层体系结构,必须至少配置一个连接池(Connection Pool和一个数据源(DataSource)

J2EE技术规范(二)——JDBC

五、连接池Connection

连接池:

    消除频繁建立连接所需的负载

    是用于管理数据库连接的管理对象

    提供可共享,安全的连接

J2EE技术规范(二)——JDBC

六、数据源Data Sources

Data Sources是:

    从连接池中提供连接的被管理的工厂对象

    绑定到JNDI并使用管理控制台配置

J2EE技术规范(二)——JDBC


七、我们通过数据源Data Sources访问数据库

(1) 使用DataSource:

    先在JNDI中查找到它

    然后从DataSource获得一个连接

使用数据源连接数据库的示例:

import java.sql.*;import javax.sql.*;import javax.naming.*;...
try{

context ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup("TestDataSource");
Connection con=ds.getConnection();
Statement stmt=con.createStatement();
String sql="SELECT * FROM MYTABLE";
ResultSet res=stmt.executeQuery(sql);
While(res.next()){
String col1=res.getString("MYCOLUM1");
...
}
con.close();
}catch(Exception e){...}

八、Statements和Prepared Statements

(1) Statement对象含有与数据库交互的SQL查询或更新语句

  使用Statement对象查询数据库的示例:

Statement stmt=con.createStatement();
String sql="SELECT * FROM MYTABLE";
ResultSet res=stmt.excuteQuery(sql);

使用PreparedStatement对象查询数据库的示例:

String sql="SELECT * FROM MYTABLE WHERE COL1=? AND COL2=?";
PreparedStatement pStatement=con.prepareStatement(sql);
pStatement.setString(1,searchVariableString);
pStatement.setInt(2,searchVariableInt);
ResultSet rs=pStatement.executeQuery();

这只是初步了解,还需要应用到项目当中去呀。