Java通过JDBC访问数据库

1.工作中难免会和数据库打交道,访问数据库前提就需要和数据库建立连接,才能进行读写操作。

2.Java提供了一个API也就是JDBC(Java Data Base Connectivity),可以为多种关系数据库提供统一访问和操作,它由一组用Java语言编写的类和接口组成。

 

  • 没有jdbc之前
    java开发人员需要维护不同的数据库的驱动程序,如果数据库的底层实现改变,驱动程序可能会随之改变!!

这里写图片描述

  • 有了jdbc之后:
    java开发人员只需维护java应用和一套规范,也就是jdbc接口。数据库厂商提供具体的java驱动程序,数据库厂商的底层实现改变,厂商随之更新驱动程序,而不影响java应用程序!!

这里写图片描述

3.具体步骤

    1. 导入数据包
      需要包括含有需要进行数据库编程的JDBC类的包。大多数情况下,使用 import java.sql.* 就可以了.

    2. 添加JDBC驱动程序包
      添加jar程序驱动包http://www.mysql.com/downloads/connector/j,初始化驱动程序,可以与数据库打开一个通信通道。

    3. 打开数据库连接
      需要使用DriverManager.getConnection() 方法创建一个Connection对象,它代表与数据库的物理连接。

    4. 执行数据库操作
      需要使用类型声明的对象建立并提交一个SQL语句到数据库。

    5. 从结果集中提取数据
      要求使用适当的关于ResultSet.getXXX()方法来检索结果集的数据。

    6. 清理环境
      需要明确地关闭所有的数据库资源相对依靠JVM的垃圾收集。

<----------------------------------------------------------------------------------------------->

编写JDBCUtil类

package com.jdbc.util;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class JDBCUtil {
    
    // 驱动包,数据库url,用户名,密码
    private static String url = null;
    private static String driverClass = null;
    private static String user = null;
    private static String password = null;
    
    static{
        try {
            //读取db.properties文件
            Properties prop = new Properties();
            /**
             * 使用类路径的读取方式
             *  / : 斜杠表示classpath的根目录
             *     在java项目下,classpath的根目录从bin目录开始
             *     在web项目下,classpath的根目录从WEB-INF/classes目录开始
             */
            InputStream in = JDBCUtil.class.getResourceAsStream("/db.properties");
            //加载文件
            prop.load(in);
            //读取信息
            url = prop.getProperty("jdbcUrl");
            driverClass = prop.getProperty("dirverclass");
            user = prop.getProperty("user");
            password = prop.getProperty("password");
            //注册驱动程序
            Class.forName(driverClass);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("驱程程序注册出错");
        }

    }
    
    /**
     * 打开数据库驱动连接
     */
    public static Connection getConnection(){
        try {
            Connection conn = DriverManager.getConnection(url, user, password);
            return conn;
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }

    /**
     * 清理环境,关闭连接(顺序:后打开的先关闭)
     */
    public static void close(Connection conn,Statement stmt,ResultSet rs){
        if(rs!=null)
            try {
                rs.close();
            } catch (SQLException e1) {
                e1.printStackTrace();
                throw new RuntimeException(e1);
            }
        if(stmt!=null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
    }
    //测试
    public static void main(String[] args) {

        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        conn=JDBCUtil.getConnection();
        try {
             stmt=conn.createStatement();
             //sql语句
             String sql= "SELECT id, name FROM temp";
             rs = stmt.executeQuery(sql);

             //从结果集中提取数据
             while(rs.next()){
                  int id  = rs.getInt("id");
                  String name = rs.getString("name");

                  System.out.print("ID: " + id);
                  System.out.println(", Name: " + name);
             }
           } catch (SQLException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
           }finally{
               JDBCUtil.close(conn, stmt, rs);
           }
      }
}

<----------------------------------------------------------------------------------------------->

配置文件db.properties

user=root
password=
jdbcUrl=jdbc:mysql://localhost:3306/test
dirverclass=com.mysql.jdbc.Driver

原文地址:https://www.cnblogs.com/DanielJing/p/6384615.html