请描述使用JDBC访问数据库的步骤

本文介绍使用JDBC访问数据库的具体步骤,包括加载驱动类、创建数据库连接对象、创建Statement语句对象、执行SQL命令及处理结果集等核心过程。同时提供了完整的代码示例。

JDBC访问数据库的步骤:

  1. 加载驱动类
		static{
		//1.注册驱动程序--只执行一次即可
		//driverManager直接注册驱动程序,获取connection对象
		try {
			DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
  1. 创建数据库连接对象
public static Connection getConnection(){
		String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC&characterEncoding=UTF-8&useSSL=false";
		String name = "root";
		String password = "123321";
		Connection conn = null;
		try {
			//获取类型从而注册
			//Class.forName("com.mysql.jdbc.Driver");
			//获取Conncetion接口的实例,并不知道实现类,屏蔽实现的细节
			conn = DriverManager.getConnection(url, name, password);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
	}
  1. 创建一个Statement语句对象
Statement stmt = conn.createStatement();
  1. 执行sql命令,除了查询语句其他都用executeUpdate()
String sql = "select * from user";
        try {
            ResultSet rs=stmt.executeQuery(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
  1. 处理结果集:
			while (rs.next()) {
                user.setId(rs.getLong(1));
                user.setUsername(rs.getString(2));
                user.setPassword(rs.getString(3));
                userList.add(user);
            }
  1. 关闭资源。考点:关闭资源的时候要总里往外关闭
    先关闭先关闭结果集,再关闭声明的对象,最后再关闭连接
//关闭操作:对所有打开的资源进行关闭
	public static void close(Connection conn, Statement st, PreparedStatement ps, ResultSet rs){
		try {
			if(rs != null)
				//关闭结果集
				rs.close();
			if(st != null)
				//关闭声明的对象
				st.close();
			if(ps != null)
				//关闭声明的对象
				ps.close();
			if(conn != null)
				//关闭连接
				conn.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

整体代码:

package com.demo;

import com.demo.entity.User;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class DBUtils {

    static {
        //1.注册驱动程序--只执行一次即可
        //driverManager直接注册驱动程序,获取connection对象
        try {
            DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static Connection getConnection() {
        String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC&characterEncoding=UTF-8&useSSL=false";
        String name = "root";
        String password = "123321";
        Connection conn = null;
        try {
            //获取类型从而注册
            //Class.forName("com.mysql.jdbc.Driver");
            //获取Conncetion接口的实例,并不知道实现类,屏蔽实现的细节
            conn = DriverManager.getConnection(url, name, password);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return conn;
    }

    //关闭操作:对所有打开的资源进行关闭
    public static void close(Connection conn, Statement st, PreparedStatement ps, ResultSet rs) {
        try {
            if (rs != null)
                rs.close();
            if (st != null)
                st.close();
            if (ps != null)
                ps.close();
            if (conn != null)
                conn.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static List<User> executeSQL() throws SQLException {

        Connection conn = getConnection();
        Statement stmt = conn.createStatement();
        String sql = "select * from user";
        List<User> userList = new ArrayList<>();
        try {
            ResultSet rs = stmt.executeQuery(sql);
            User user = new User();
            while (rs.next()) {
                user.setId(rs.getLong(1));
                user.setUsername(rs.getString(2));
                user.setPassword(rs.getString(3));
                userList.add(user);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            close(conn, stmt, null, null);
        }
        return userList;
    }

    public static void main(String[] args) throws SQLException {

        List<User> userList = executeSQL();
        userList.forEach(System.out::println);
    }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Otto_1027

蟹蟹你,我会继续努力的~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值