zoukankan      html  css  js  c++  java
  • JDBC数据库操作工具类——JdbcUtils

    如果经常使用 JDBC(Java DataBase Connectivity) 连接到数据库,那就把这个功能做成一个工具类,可以在不同的地方重复使用

    例如:创建一张学生表 student

    package class01;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;

    public class Demo01 {
    public static void main(String[] args){
    Connection conn = null;
    Statement statement = null;
    String url = "jdbc:mysql://localhost:3306/db_test";
    String user = "root";
    String pwd = "lemon";
    try {
    conn = DriverManager.getConnection(url,user,pwd);//创建数据库连接
    statement = conn.createStatement();//创建一条 SQL 语句对象
    statement.executeUpdate("create table student (id int primary key auto_increment,name varchar (20) not null,birthday date)");//用户发送 DML 语句,增删改的操作
    System.out.println("创建成功!");
    } catch (SQLException e) {
    e.printStackTrace();
    }finally {//释放资源
    if (statement != null){
    try {
    statement.close();//后开的先关
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    if (conn != null){
    try {
    conn.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }
    }
    }

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40

    在上面的代码中,有很多重复的代码,可以把这些公共的代码抽取出来,创建一个 JdbcUtil 数据库工具类

    一、创建 JdbcUtil 工具类

    1、包含3个方法

    可以把几个字符串定义成常量:用户名,密码,URL,驱动类
    得到数据库的连接getConnection()
    关闭所有打开的资源:close(Connection conn, Statement stmt) 或者close(Connectionconn, Statement stmt, ResultSet rs)
    2、代码

    package jdbcutil;

    import java.sql.*;

    public class JdbcUtils {
    //把用户名、密码、URL、驱动类 这几个字符串定义为常量
    private static final String USER = "root";
    private static final String PWD = "lemon";
    private static final String URL = "jdbc:mysql://localhost:3306/db_test";
    private static final String DRIVER = "com.mysql.jdbc.Driver";

    //注册驱动
    static {//静态代码块,只执行一次
    try {
    Class.forName(DRIVER);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    }

    //得到数据库的连接
    public static Connection getConnection() throws SQLException {
    return DriverManager.getConnection(URL,USER,PWD);
    }

    //关闭所有打开的资源
    public static void close(Connection conn, Statement stm){
    if (stm != null){
    try {
    stm.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    if (conn != null){
    try {
    conn.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }

    //关闭所有打开的资源
    public static void close(Connection conn, Statement stm, ResultSet rs){
    if (rs != null){
    try {
    rs.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    if (stm != null){
    try {
    stm.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    if (conn != null){
    try {
    conn.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    }
    }

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69

    利用创建好的工具类 输出表

    package jdbcutil;

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

    public class Demo01 {
    public static void main(String[] args){
    Connection conn = null;
    Statement stm = null;
    ResultSet rs = null;
    try {
    conn = JdbcUtils.getConnection();
    stm = conn.createStatement();
    rs = stm.executeQuery("select * from student");
    while (rs.next()){
    System.out.println("编号:" + rs.getInt("id") +
    "姓名:" + rs.getString("name") +
    "性别:" + rs.getString("sex") +
    "生日:" + rs.getDate("birthday") +
    "分数:" + rs.getInt("num"));
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }finally {
    JdbcUtils.close(conn,stm,rs);
    }
    }
    }

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    利用工具类向表中插入一条数据

    package jdbcutil;

    import java.sql.Connection;
    import java.sql.SQLException;
    import java.sql.Statement;

    public class Demo01 {
    public static void main(String[] args){
    Connection conn = null;
    Statement stm = null;
    try {
    conn = JdbcUtils.getConnection();
    stm = conn.createStatement();
    stm.executeUpdate("insert into student(name,sex,birthday,num) values ('猛哥','男','1991-10-6',100)");
    } catch (SQLException e) {
    e.printStackTrace(http://www.my516.com);
    }finally {
    JdbcUtils.close(conn,stm);
    }
    }
    }

    ---------------------

  • 相关阅读:
    OpenStack 数据库操作 demo
    python 实现获取电脑IP、主机名、Mac地址
    openvswitch BFD 简介
    Python 获取主机名
    OpenvSwitch完全使用手册
    ovs datapath笔记
    openstack 实用命令
    表示数值的字符串 牛客网 剑指Offer
    反转单词顺序列 牛客网 剑指Offer
    第一个只出现一次字符的位置 牛客网 剑指Offer
  • 原文地址:https://www.cnblogs.com/hyhy904/p/11235436.html
Copyright © 2011-2022 走看看