love li fang fang forever

Java Web的数据库操作链接过程细节

• _posts

迁移源地址为:《Java Web的数据库操作链接过程细节》

一、JDBC技术

1、JDBC简介

       JDBC是Java程序与数据库系统通信的标准API,它定义在JDK的API中,通过JDBC技术,Java程序可以非常方便地与各种数据库交互,JDBC在Java程序与数据库系统之间假期了一座桥梁。

       JDBC由一组用Java语言编写的类和接口组成,它对数据库的操作提供了基本方法,但由于数据库种类跟多且多有不同,所以对数据库的细节操作由数据库厂商进行实现,且厂商需要提供数据库的驱动程序,下图为Java程序与数据库相交互的示意图:

2、JDBC连接数据库的过程

l  下载驱动包

      在JDK中,不包含数据库的驱动程序,使用JDBC操作数据库需要实现下载数据库厂商提供的驱动包,并导入到开发环境中。

l  注册数据库驱动

      连接数据库前,需要将数据库厂商提供的数据库驱动注册到JDBC的驱动管理器中,一般是通过将数据库驱动类加载到JVM来实现的,例如连接MYSQL数据库:

              Class.forName(“com.mysql.jdbc.Driver”);

l  构建数据库连接URL

      URL由数据库厂商制定,不同数据库它的URL有所区别,但都符合一个基本的格式,即“JDBC协议+IP地址或域名+端口+数据库名称”,例如MYSQL数据库为”jdbc:mysql://localhost:8080/test”。

      前两步中不同数据库有所差别,不同数据库连接请参考这篇文章:

      http://blog.csdn.net/zhai56565/article/details/8959184

l  获取Connection对象

      通过驱动管理器获得数据库的连接Connection,只有创建此对象后才可以对数据库进行操作,方法如下:

      DriverManager.getConnection(url , username , password);

       下面是一个完整的连接数据库的例子:

  1. try {  
  2.   
  3.                     //加载数据库驱动,注册到去送管理器  
  4.   
  5.                     Class.forName("com.mysql.jdbc.Driver");  
  6.   
  7.                     String url = "jdbc:mysql://localhost:8080/test";  
  8.   
  9.                     String username = "admin";  
  10.   
  11.                     String password = "123456";  
  12.   
  13.                     Connection conn = DriverManager.getConnection(url , username , password);  
  14.   
  15.                     if (conn != null)   
  16.   
  17.                            System.out.println("数据库连接成功!");  
  18.   
  19.                     else  
  20.   
  21.                            System.out.println("数据库连接失败!");  
  22.   
  23.                     //完成后记得关闭数据库连接  
  24.   
  25.                     conn.close();  
  26.   
  27.              } catch (ClassNotFoundException e) {  
  28.   
  29.                     e.printStackTrace();  
  30.   
  31.              } catch (SQLException e) {  
  32.   
  33.                     e.printStackTrace();  
  34.   
  35.              }  
  36. </OL></DIV>


     

    二、JDBC API

           JDBC是Java程序操作数据库的标准,它由一组用Java语言编写的类和接口组成,Java通过JDBC可以对多种关系数据库进行统一访问。下面介绍主要类和接口的作用,详细方法请参考J2SE的API。

    1、 Connection接口

           与特定数据库的连接会话,只有获得特定数据库的连接对象才能访问数据库,操作数据库中的数据表、视图和存储过程等。

    方法声明

    说明

    Close()

    立即释放Connection对象的数据库连接占用的JDBC资源

    Commit()

    提交事务,并释放Connection对象当前持有的所有数据库锁

    createStatement()

    创建Statement对象来将SQL语句发送到数据库

    PreparedStatement

    将参数化的SQL语句预编译并存储在PreparedStatement对象中

     

    2、DriverManager类

           主要作用与用户及驱动程序之间,它是JDBC中的管理层,通过它可以管理数据库厂商提供的驱动程序,并建立应用程序与数据库之间的连接。

    方法声明

    说明

    getConnection(String url)

    根据指定数据库连接URL,建立Connection

    getConnection(String url , Properties info)

    根据指定数据库连接URL及数据库连接属性信息建立数据库连接Connection,参数info为数据库连接属性

    getConnection(url,un,pwd)

    根据指定数据库连接URL,用户名和密码连接数据库

    getDrivers()

    获取当前DriverManager中已加载的所有驱动程序

    3、 Statement接口

          Statement接口封装了执行SQL语句和获取查询接口的基本方法。

    方法声明

    说明

    AddBatch(String sql)

    将SQL语句添加到Statement对象的当前命令列表中,用于SQL命令的批处理

    clearBatch()

    清空Statement对喜爱那个的命令列表

    Close()

    立即释放Statement对象的数据库和JDBC资源,而不是等待该对象自动关闭时执行

    Execute(String sql)

    执行指定的SQL语句,若SQL返回结果,该方法返回true,否则返回false

    executeBatch()

    将一批SQL命令提交给数据库执行,返回更新计数组成的数据

    executeQuery(String sql)

    执行查询类型的sql语句,该方法返回查询所获取的结果集ResultSet

    executeUpdate(String sql)

    执行SQL语句中DML类型(insert、update、delete)的SQL语句,返回更新所影响的行数

    getConnection()

    获取生成Statement对喜爱那个的Connection对象

    4、PreparedStatement接口

           Statement接口封装了JDBC执行SQL语句的方法,但在实际开发过程中,SQL语句往往需要将程序中的变量做查询条件参数等。使用Statement接口进行操作过于繁琐且存在安全缺陷。而PreparedStatement接口继承与Statement接口,且对带有参数SQL语句的执行操作进行了扩展。应用于PreparedStatement接口中的SQL语句可以使用占位符”?”来代替SQL语句中的参数,然后再对其进行赋值。

    方法声明

    说明

    setBinaryStream(int x , InputStream s)

    将输入流s作为SQL语句中的参数值,x为参数位置索引

    setBoolean(int x , Boolean b)

    将布尔值b作为SQL语句中的参数值,x为参数位置索引

    SetByte

    ……

    setInt

    ……

    等等。。。。。。

    ……

    5、ResultSet接口

           ResultSet对象封装了数据查询的结果集,它包含了符合SQL语句的所有行,针对Java中的数据类型提供了一套getXXX()的方法,通过这些方法可以获取每一行中的数据。ResultSet还提供了光标的功能,通过光标可以自由定位到某一行中的数据。

    方法声明

    说明

    Absolute(int row)

    光标移动到ReulstSet对象的给定行编号

    afterLast()

    光标移动到最后一行后,如果结果集中不包含任何行,则该方法无效

    beforFirst()

    立即释放ResultSet对喜爱那个的数据库和JDBC资源

    deleteRow()

    删除当前行

    First()

    光标移动到第一行

    getString(String columnLable)

    以String的方式获取ResultSet对象当前行中指定列的值,参数为列名称

    getBinaryStream(String colunmLable)

    你懂得

    getInt(String columnLable)

    你懂得

    isClosed()

    判断ResultSet对喜爱那个是否已关闭

    Last()

    移动到最后一行

    Next()

    移动到下一行,若新行无效则返回false

    Previous()

    移动到上一行,若新行无效则返回false