【J2EE十三个规范】数据层之JDBC-阿里云开发者社区

开发者社区> 数据库> 正文

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

简介:
【学习概要】
    在上篇博客中,介绍了两个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应用程序的位置:


五.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有一定的了解,并且对数据库的操作,也是固定的几件事:连接、执行、查询等。不过现在的学习还是很零散的,后面系统的学习与编程相信会更有共鸣。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章