小白JDBC的学习

JDBC是一种用于执行sql语句的API,可以使开发人员操作不同的数据库。下面介绍我对jdbc学习。小白学习过程,大佬勿喷。

一.JDBC使用一般步骤

 1.导入jar包。可以到对应的数据库官网进行下载。复制jar包到目录下,右键add as librar

2.注册驱动 Class.forName("com.mysql.jdbc.Driver");
3.获取数据库的连接对象。 DriverManager.getConnection("url","user","password")

url:指定连接的路径   语法 以mysql为例    jdbc:mysql://ip地址(域名):端口号/数据库名称
      本机  url可以简写jdbc:mysql:///数据库名称

user:数据库的用户名

password:数据库的密码

4.书写sql语句 String sql="  sql语句";

5.创建想数据库发送sql语句的对象

建议先学习createStstement();再学习prepareStstement();由浅入深学习

6.执行sql语句

7.释放资源

close()

二,JDBC工具类(想必我们在学习jdbc的过程中也都已经发现,里面的代码重复率过多,进而导致代码的可读性不强。所以jdbc的工具类对我们学习java有着不可小觑的作用。)

每次使用JDBC的时候都要书写冗长的代码段,不符合复用的理念,于是要单独写一个类,将通用的JDBC操作写到一个类中,便于重复使用和精简代码。

1.传统的jdbc工具类(DBUtil.java)(更换数据库时,要更换加载驱动代码。不同账号时也要修改代码。跨平台型不高,不建议使用)

import java.sql.*;

public class DBUtil {
    public static Connection getcon() {
        Connection con = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql:///b","root","123456");
        } catch (Exception e) {

            e.printStackTrace();
        }
        return con;
    }
public static void close(Connection con, Statement stmt) {
       
            if (stmt != null){
                try {
                    stmt.close();
                } catch (SQLException exception) {
                    exception.printStackTrace();
                }
                if (con != null) {
                    try {
                        con.close();
                    } catch (SQLException exception) {
                        exception.printStackTrace();
                    }
    public static void close(Connection con, Statement stmt , ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException exception) {
                exception.printStackTrace();
            }
            if (stmt != null){
                try {
                    stmt.close();
                } catch (SQLException exception) {
                    exception.printStackTrace();
                }
                if (con != null) {
                    try {
                        con.close();
                    } catch (SQLException exception) {
                        exception.printStackTrace();
                    }
                }

            }
        }
    }
}

 2.标准的jdbc工具类(换数据库时,无需修改代码,只需修改配置文件中的内容即可。建议使用)

1)注册驱动与获取链接

首先创建一个文件,放到项目中,要更换别的连接时,只需修改配置文件即可,无需修改类文件和重新编译。配之文件的内容如下

driver=数据库驱动路径
    url=url连接字符串
    user=用户名
    password=密码

然后就需要将配置文件中键值对中的值取出,并注册了驱动。因为驱动和取出配置文件只需要一次就可以,所以就写入到静态代码块中,在程序运行的开始就处理好了,无需以后再冗余执行。

 

// 特别提醒定义变量时要定义为静态变量
    private static String url;
    private static String user;
    private static String password;
    private static String driver;
    // 我们每次连接数据库时加载驱动静态变量只使用一次,所以推荐使用静态代码注册驱动并给静态变量赋值
    static{
        try {
            // 创建Properties集合类
            Properties pro = new Properties();
            // 获取src路径下文件,使用ClassLoader类加载器
            ClassLoader classLoader = JDBCUtils.class.getClassLoader();
            // URL定位了文件的绝对路径
            URL res = classLoader.getResource("jdbc.properties");
            // 获取字符串路径
            String path = res.getPath();
            // 读取文件
            pro.load(new FileReader(path));
            // 给静态变量赋值
            url = pro.getProperty("url");
            user = pro.getProperty("user");
            password = pro.getProperty("password");
            driver = pro.getProperty("driver");
            // 注册驱动
            Class.forName(driver);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
获取连接

public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url, user, password);
}

2)释放资源

‘由于执行sql语句时分为有无结果集两种情况,所以释放资源时分为两种情况,进而有两种重载形式。

 public static void close(Statement stmt, Connection conn){
        if(stmt != null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if(conn != null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
public static void close(ResultSet rs, Statement stmt, Connection conn){
        if(rs != null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if(stmt != null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if(conn != null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

 

上一篇:Spring data jpa hibernate:查询异常java.sql.SQLException: Column '列名' not found


下一篇:JAVA实训7-常见异常