【J2EE十三个规范】数据层之JDBC

时间:2021-05-14 09:07:10
【学习概要】     在上篇博客中,介绍了两个Web层的规范,本篇博客,继续J2EE十三个规范的学习,下面要介绍的便是数据层的JDBC。 【学习笔记】    一.什么是JDBC
    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
   二.JDBC的优势
    1.有了JDBC API,就不必为Sybase数据库专门写一个程序,为Oracle数据库又专门写一个程序等等。程序员只要用JDBC API写一个程序就行,它可以向相应数据库发送SQL调用。同时,将java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序。
    2.JDBC可扩展了java的功能。用java和JDBC API可以发布含有applet的网页,而改applet使用的信息可能来自远程数据库。企业也可以用JDBC通过Intranet将所有支援镰刀一个或多个内部数据库中,即使他们之间所用的操作系统不同。
    3.java和JDBC的结合,使得信息传播变得容易和经济。企业可以继续使用他们安装好的数据库,并能便捷地存取信息,即使信息在不同的数据库管理系统上。
   三.JDBC的用途
    简单地说,JDBC可做以下四件事:     1.使得连接到数据库     2.创建SQL或MySQL语句     3.执行SQL或MySQL的查询数据库     4.查看和修改结果记录    四.JDBC的架构
    JDBC API支持两层和三层处理模型进行数据库访问,但在一般的JDBC体系结构由两层组成:
    1.JDBC API:提供了应用程序对JDBC的管理连接。
    2.JDBC Driver API:支持JDBC管理到驱动器连接。

    以下是一种结构图,它显示了JDBC驱动程序和Java应用程序的位置:

【J2EE十三个规范】数据层之JDBC

五.JDBC的创建
    创建JDBC应用程序有以下6个步骤:
    1.导入数据包 . 需要包括含有需要进行数据库编程的JDBC类的包。大多数情况下,使用 import java.sql.*  就可以了.     2.注册JDBC驱动程序. 需要初始化驱动程序,可以与数据库打开一个通信通道。     3.打开连接. 需要使用DriverManager.getConnection() 方法创建一个Connection对象,它代表与数据库的物理连接。     4.执行查询 . 需要使用类型声明的对象建立并提交一个SQL语句到数据库。     5.从结果集中提取数据 . 要求使用适当的关于ResultSet.getXXX()方法来检索结果集的数据。     6.清理环境. 需要明确地关闭所有的数据库资源相对依靠JVM的垃圾收集。     下面是一个创建JDBC的完整代码:
//STEP 1. Import required packages
import java.sql.*;

public class FirstExample {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/EMP";

// Database credentials
static final String USER = "username";
static final String PASS = "password";

public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
//STEP 2: Register JDBC driver
Class.forName("com.mysql.jdbc.Driver");

//STEP 3: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);

//STEP 4: Execute a query
System.out.println("Creating statement...");
stmt = conn.createStatement();
String sql;
sql = "SELECT id, first, last, age FROM Employees";
ResultSet rs = stmt.executeQuery(sql);

//STEP 5: Extract data from result set
while(rs.next()){
//Retrieve by column name
int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");

//Display values
System.out.print("ID: " + id);
System.out.print(", Age: " + age);
System.out.print(", First: " + first);
System.out.println(", Last: " + last);
}
//STEP 6: Clean-up environment
rs.close();
stmt.close();
conn.close();
}catch(SQLException se){
//Handle errors for JDBC
se.printStackTrace();
}catch(Exception e){
//Handle errors for Class.forName
e.printStackTrace();
}finally{
//finally block used to close resources
try{
if(stmt!=null)
stmt.close();
}catch(SQLException se2){
}// nothing we can do
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}//end finally try
}//end try
System.out.println("Goodbye!");
}//end main
}//end FirstExample
【学习比较】
    在很早之前,我们就知道了ODBC,而JDBC和ODBC间又有什么样的联系和不同呢。
    目前,Microsoft 的 ODBC API 可能是使用最广的、用于访问关系数据库的编程接口。它能在几乎所有平台上连接几乎所有的数据库。然而,为什么java不使用ODBC呢。答案是可以使用,但不适合直接使用。
    因为ODBC是用C语言接口,从java调用本地C代码再安全性、实现、坚固性和移植性方面都有缺陷。此外,java中没有指针,而ODBC对指针的应用很广泛。
    JDBC API是建立在ODBC基础上的,它保留了ODBC的基本设计特征。它们之间最大的区别在于:JDBC以java风格与优点为基础并进行优化,因此更加易于使用。
【学习感悟】
    对于数据层JDBC的学习,感觉就好像要轻松一些。因为对ODBC有一定的了解,并且对数据库的操作,也是固定的几件事:连接、执行、查询等。不过现在的学习还是很零散的,后面系统的学习与编程相信会更有共鸣。