JDBC的使用

JDBC的使用

使用前需在module-info.java中添加 requires java.sql;
##一般步骤

  • 注册驱动,JDBC4.0后不需要注册
  • 使用DriverManger连接数据库
  • 通过Connection创建SQL语句
  • 通过Statement获取结果集
  • 处理结果集
  • 释放资源
    ###导入包
    ####Eclipse导入jar包
    在导入java.sql时,要先导入mysql-connector-java的jar包,否则无法运行。
    方法如下:
    右键项目包,点击Properties,进入如下界面:

后选择Java Build Path

点击Add External JARS**,找到文件的jar包所在位置导入。
####IDEA导入jar包
快捷键:Ctrl + Alt + Shift + s打开Project Structure

点击Modules,点击Depedencies后,右侧有个+号标志,点击找到jar的位置并且导入。

import java.sql.*;

###加载驱动

String driveName="com.mysql.jdbc.Driver";
Class.forName("driveName");

###使用DricerManger连接数据库

String URL="jdbc:mysql://localhost:3306/数据库名";
String userName="root";
String password="";
jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Chongqing&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&verifyServerCertificate=false&autoReconnct=true&autoReconnectForPools=true&allowMultiQueries=true
Connection conn = DriverManager.getConnection(URL, userName, password);

###通过Connection创建SQL语句
Statement:

Statement stmt = conn.createStatement();
String sql;
sql="SQL语句";
ResultSet rs = stmt.executeQuery(sql);

PreparedStatement:

String sql = "select *from user where username=? and password= ?";//问号表示要执行的目标对象
stmt = conn.prepareStatement(sql);//提前告知执行语句
stmt.set具体类型(第几个问号,替换问号);
stmt.setString(1, usersName);
stmt.setString(2, password);

使用 Statement 对象执行语句: executeQuery、executeUpdate 和execute
execute:用于执行返回多个结果集、多个更新计数或二者组合的语句
executeQuery:用于产生单个结果集的语句
executeUpdate:用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQLDDL(数据定义语言)语句,executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。
##工具类的编写
JBDCutils:

import java.sql.*;
public class DButil {
	static String URL="jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Chongqing&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&verifyServerCertificate=false&autoReconnct=true&autoReconnectForPools=true&allowMultiQueries=true";
	static String userName="root";
	static String password= "";
	/*建立连接(测试成功)*/
	public static Connection getConnection(Connection conn) throws SQLException{
		conn=DriverManager.getConnection(URL,userName,password);
		return conn;
	}
	/*关闭连接(测试成功)*/
	public static void closeConnection(Connection conn) {
		try {
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	/*释放资源(测试成功)*/
	public static void realeaseAll(ResultSet rs, Statement st,Connection conn) {
		if(rs!=null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if(st!=null) {
			try {
				st.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if(conn!=null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

DButils:

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

public class DbUtils {

    private static String driver = null;
    private static String url = null;
    private static String username = null;
    private static String password = null;

    static {
        try {
            InputStream in = DbUtils.class.getClassLoader().getResourceAsStream("db.properties");
            Properties properties = new Properties();
            properties.load(in);
            driver = properties.getProperty("driver");
            url = properties.getProperty("url");
            username = properties.getProperty("username");
            password = properties.getProperty("password");
            //驱动只用加载一次
            Class.forName(driver);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    /**
     * 获取连接
     *
     * @return
     * @throws SQLException
     */
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url, username, password);
    }
    /**
     * 释放连接资源
     *
     * @param conn
     * @param st
     * @param res
     */
    public static void release(ResultSet res, Statement st,Connection conn ) {
        if (res != null) {
            try {
                res.close();
            } catch (SQLException throwable) {
                throwable.printStackTrace();
            }
        }
        if (st != null) {
            try {
                st.close();
            } catch (SQLException throwable) {
                throwable.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException throwable) {
                throwable.printStackTrace();
            }
        }
    }
}

DButils(连接池):

public class DbUtils {

    private static DataSource dataSource;
    //加载配置文件
    static {
        try{
            Properties properties = new Properties();
            InputStream inputProperties = DbUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            properties.load(inputProperties);
            dataSource = DruidDataSourceFactory.createDataSource(properties);

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

    //获取连接
    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }


    /*释放资源*/
    public static void release(ResultSet rs, Statement st, Connection conn) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (st != null) {
            try {
                st.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

}
posted @ 2022-01-07 10:05  稶郗  阅读(103)  评论(0编辑  收藏  举报