JDBC使用方式记录

本文介绍了JDBC(Java Database Connectivity)的基本使用方法,包括如何注册驱动、建立连接、创建Statement和PreparedStatement,以及执行SQL查询并关闭资源。还提到了通过配置文件和工具类来实现数据库连接的更佳实践,旨在降低依赖并提高代码复用。
摘要由CSDN通过智能技术生成

JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

本文使用的时MySQL数据库进行连接。

所用数据库表结构如下:

方式一:(基本使用方式)

步骤:

  1. 注册驱动
  2. 建立连接
  3. 创建Statement / PreparedStatement
  4. 执行查询,得到结果集
  5. 关闭资源

具体代码如下:

import java.sql.*;
/**
 * JDBC使用
 */
public class JdbcDemo1 {

    public static void main(String[] args){

        String url = "jdbc:mysql://localhost:3306/king";
        String user = "root";
        String password = "123456";

        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        
        try {
            //1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");

            //2.建立连接
            connection = DriverManager.getConnection(url, user, password);

            //3.创建statement
            statement = connection.createStatement();

            //4.执行查询 得到结果集
            String sql = "select * from student";
            resultSet = statement.executeQuery(sql);

            //对结果集进行遍历
            while(resultSet.next()){
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                System.out.println(id +" "+ name +" "+ age);
            }

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //5.关闭资源
            try{
                if(resultSet != null){
                    resultSet.close();
                }
            }catch (SQLException s){
                s.printStackTrace();
            }finally{
                resultSet = null;
            }

            try{
                if(statement != null){
                    statement.close();
                }
            }catch (SQLException s){
                s.printStackTrace();
            }finally{
                statement = null;
            }

            try{
                if(connection != null){
                    connection.close();
                }
            }catch (SQLException s){
                s.printStackTrace();
            }finally{
                connection = null;
            }

        }
    }
}

方式二:(配置文件+工具类实现)

流程与方法一大体相同,区别在于通过配置文件降低依赖关系,并抽取出工具类,供后面开发使用。

具体内容如下:

(1)配置文件:

(2)工具类:在工具类的静态代码块部分读取配置文件,然后注册驱动。

import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class JdbcUitls {

    static String driverClass = null;
    static String url = null;
    static String user = null;
    static String password = null;

    static {
        try{
            Properties properties = new Properties();
            InputStream in = JdbcUitls.class.getClassLoader().getResourceAsStream("jdbc.properties");
            properties.load(in);

            driverClass = properties.getProperty("driverClass");
            url = properties.getProperty("url");
            user = properties.getProperty("user");
            password = properties.getProperty("password");

        }catch (Exception e){
            e.printStackTrace();
        }
    }

    //建立数据库连接
    public static Connection getConnection(){
        Connection connection = null;
        try{

            //1.注册驱动
            Class.forName(driverClass);

            //2.建立连接
            connection = DriverManager.getConnection(url, user, password);

        }catch (Exception e){
            e.printStackTrace();
        }
        return connection;
    }

    //关闭资源
    public static void closeResource(ResultSet resultSet, Statement statement, Connection connection){
        closeResultSet(resultSet);
        closeStatement(statement);
        closeConnection(connection);
    }

    private static void closeResultSet(ResultSet resultSet){
        try{
            if(resultSet != null){
                resultSet.close();
            }
        }catch (SQLException s){
            s.printStackTrace();
        }finally{
            resultSet = null;
        }
    }

    private static void closeStatement(Statement statement){
        try{
            if(statement != null){
                statement.close();
            }
        }catch (SQLException s){
            s.printStackTrace();
        }finally{
            statement = null;
        }
    }

    private static void closeConnection(Connection connection){
        try{
            if(connection != null){
                connection.close();
            }
        }catch (SQLException s){
            s.printStackTrace();
        }finally{
            connection = null;
        }
    }
}

测试代码如下:

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

public class JdbcDemoTest {

    public static void main(String[] args){

        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            //建立连接
            connection = JdbcUitls.getConnection();

            //创建statemnet
            statement = connection.createStatement();

            //执行查询 得到结果集
            String sql = "select * from student";
            resultSet = statement.executeQuery(sql);

            //对结果集进行遍历
            while(resultSet.next()){
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                System.out.println(id +" "+ name +" "+ age);
            }

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JdbcUitls.closeResource(resultSet, statement, connection);
        }
    }
}

 

*个人学习过程中的记录,如有问题欢迎批评指正,共同进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值