Java访问数据库

首先简介一下JDBC:

JDBC:Java DataBase Connection.

JDBC:Java数据库连接。它是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问.

它由一组用Java语言编写的类和接口组成。 

JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。 

一、Java访问数据库的原理:

举个例子来讲:Oracle、SQLServer、MySQL、DB2等数据库可以类比为“水厂”,Connection类比为“水厂放水到小区的阀门”,Statement类比为“小区放水到家中的阀门”,ResultSet类比为“家中放水的阀门”。 

因此,当Java连接数据库的时候,先要打开水厂的阀门(Connection),然后打开小区的阀门(Statement),接着打开家中的阀门(ResultSet),这样水才能流到家中(数据库才能与用户端进行连接)。这之后,

才能使用水(JavaApp来操作结果集,进行增删改查CRUD)。 

同样的,连接关闭的原则:“先开后关,后开先关”,也就是:先关家里的阀门,再关小区的阀门,最后关水厂的阀门。如果直接先关掉小区的阀门而不先关家里的阀门,那可能会影响到小区其他家庭的使用。 

          JDBC访问数据库的步骤: 
            1.加载数据库驱动类 
            2.获得数据库连接 
            3.获得数据库操作句柄 
            4.获得结果集(查询) 
            5.处理结果集 
            6.关闭结果集 
            7.关闭操作句柄 
            8.关闭数据库连接 

二、导入数据库驱动程序(MySQL为例)和JUnit单元测试类

 导入数据库驱动程序的步骤: 
        工程名上点击右键 -> Build Path -> Configure Build Path -> 在Libraries中,点击Add External JARs -> 进入MySQL的解压包里的mysql-connector-java-5.1.36-bin.jar。可以去MySQL官网下载,注意

        之后可以在Window->Open Perspective->MyEclipse Database Explorer里 new一个新的MySQL Connector/J。(其它数据库类似,也需导入各自的数据库驱动程序)

导入JUnit的步骤: 
        工程名上点击右键 -> Build Path -> Add Libraries -> 选择JUnit,点击Next -> 选择JUnit 4,单击Finish -> 导入成功。 

这两步完成之后,接下来就可以写代码了。 

三、JDBC处理的步骤:

1.建表 / 建序列 / 初始化数据 
  (使用 PL/SQL Developer 工具完成) 
  Table:dept 
  
2.实体类/POJO/JavaBean/封装类  
  Class:Dept 
  
3.导入 数据库驱动程序 到工程  
  ojdbc6.jar  (Oracle11g) 
  ojdbc14.jar (Oracle10g) 
  
4.新建数据库工具类: 
  4.1 获取数据库连接的方法 
  4.2 关闭数据库连接的方法  
  
5.新建dao类封装对数据库的所有操作 (增删改查 - CRUD) 

四,下面贴出代码:使用实体类封装数据库表

实体类(pojo类):其作用是用来封装表中的一条数据。(或:用来封装类的属性和方法)。 

表中的一条记录:对应于一个实体。 

写实体类:必须写三部分:属性、默认构造方法(无参构造方法)、setter和getter方法。其他方法:用到才写,不用就不写。

package com.gm.pojo;  

  

import java.io.Serializable;  

  

/** 

 * 实体类(pojo类) 

 *  

 * @author XiangdongLee 

 *  

 */  

public class Dept implements Serializable {  

    private static final long serialVersionUID = 1L;  

    private Integer deptno;  

    private String dname;  

    private String loc;  

  

    public Dept() {  

        super();  

    }  

  

    public Integer getDeptno() {  

        return deptno;  

    }  

  

    public void setDeptno(Integer deptno) {  

        this.deptno = deptno;  

    }  

  

    public String getDname() {  

        return dname;  

    }  

  

    public void setDname(String dname) {  

        this.dname = dname;  

    }  

  

    public String getLoc() {  

        return loc;  

    }  

  

    public void setLoc(String loc) {  

        this.loc = loc;  

    }  

  

}  

五,下面贴出代码:创建数据库工具类,来获得数据库连接与关闭数据库连接(以MySQL为例,其它数据库只需更改drivername,url)

package com.gm.dao;  

  

import java.sql.Connection;  

import java.sql.DriverManager;  

import java.sql.PreparedStatement;  

import java.sql.ResultSet;  

import java.sql.SQLException;  

  

/** 

 * DBUtil:数据库工具类 

 *  

 * @author XiangdongLee 

 *  

 */  

public class DBUtil {  

    /** 

     * 获得数据库连接 

     *  

     * @return 

     */  

    public static Connection getConnection() {  

        Connection conn = null;  

        String driverName = "com.mysql.jdbc.Driver";  

        String url = "jdbc:mysql://localhost:3306/dbmin";  

        String username = "scott";  

        String password = "tiger";  

  

        try {  

            Class.forName(driverName);  

            conn = DriverManager.getConnection(url, username, password);  

        } catch (ClassNotFoundException e) {  

            System.out.println("加载数据库驱动出错...");  

            e.printStackTrace();  

        } catch (SQLException e) {  

            System.out.println("获得数据库连接出错...");  

            e.printStackTrace();  

        }  

        return conn;  

    }  

  

    /** 

     * 关闭数据库连接 

     *  

     * @param conn 

     * @param ps 

     * @param rs 

     */  

    public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {  

        // 关闭原则:先开后关,后开先关  

        if (rs != null) {  

            try {  

                rs.close();  

            } catch (SQLException e) {  

                e.printStackTrace();  

            }  

        }  

  

        if (ps != null) {  

            try {  

                ps.close();  

            } catch (SQLException e) {  

                e.printStackTrace();  

            }  

        }  

  

        if (conn != null) {  

            try {  

                conn.close();  

            } catch (SQLException e) {  

                e.printStackTrace();  

            }  

        }  

    }  

  

    public static void main(String[] args) {  

        System.out.println(getConnection());  

    }  

}  

接下来就可以创建dao类,来封装数据表的所有操作(增删改查CRUD)

你可能感兴趣的:(java)