欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySql+IDEA简单实现JDBC的增删改查

程序员文章站 2022-07-12 22:48:55
...

JDBC

即Java DataBase Connectivity,简称JDBC。它是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。

工作准备

前端IDEA2018,后台MySql。
IDEA下载指导点击链接:https://blog.csdn.net/qq_42781223/article/details/93676239.
本文使用MySql创建数据库,并以此来完成对数据库的各项操作。

使用SQLyog在MySql新建数据库jdbc,新建jdbc表,字符集选用utf-8,核对选择utf-8-general-oi。设置如图:

MySql+IDEA简单实现JDBC的增删改查

一、使用IDEA创建工程目录

1.双击打开IDEA,选择Create New Project,如图:

MySql+IDEA简单实现JDBC的增删改查

进入下一个界面,如图操作:MySql+IDEA简单实现JDBC的增删改查
MySql+IDEA简单实现JDBC的增删改查
MySql+IDEA简单实现JDBC的增删改查
点击finish完成。

二、jar包的导入

选择你的工程,右键选择NEW–Directory,新建lib目录,用于存放jar包。建好之后,选中lib目录,将已经下载好的jar包复制进去。
MySql+IDEA简单实现JDBC的增删改查
上图中左边的目录里有经过相同操作后建立的lib目录及放进去的jar包,注意lib目录和src属同级目录。
至此,准备工作完成,开始正式完成编程。

新建类Demo.java

右键点击src-new-java class,输入类名Demo,完成。

import utill.DButill;

import java.sql.*;

public class Demo {
    //JDBC  JAVA DATABASE CONNECTION
    public static void main(String[] args){
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        try{
            //1.加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.创建连接
            connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jdbc?useSSL=true&characterEncoding=utf-8&user=root&password=000000");

            //3.写sql
            String sql="select * from jdbc";
            //4.得到statement对象
            statement = DButill.getConnection().prepareStatement(sql);
            //5.执行sql  得到结果集
            resultSet = statement.executeQuery();
            //6.处理结果集
            while(resultSet.next()){
                System.out.println(resultSet.getInt(1));
                System.out.println(resultSet.getString(2));
                System.out.println(resultSet.getString(3));
            }
            //7.关闭连接
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }

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

}        

在本例中仅仅是查询操作,但是在JDBC中的增删改查里,有些操作是一样的,那如果每个操作都写一遍自然是可以的,但是效率受损而且代码重复率太高。就以加载驱动、创建连接和关闭连接操作来说,这部分代码是各个操作都用到的相同部分,因此可考虑将它们整理出来,以避免代码的冗杂和重复,同时提高结构化程度。
url的设置里,“jdbc:mysql://127.0.0.1:3306/jdbc?useSSL=true&characterEncoding=utf-8&user=root&password=000000
jdbc是我的数据库表名,user和password都是MySql安装时设置的口令,root为默认口令,设置时请牢记。
以此为出发点,新建DButill.java类,如下:

package utill;

import java.sql.*;

public class DButill {

    public static Connection getConnection() {
        Connection connection = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jdbc?useSSL=true&characterEncoding=utf-8&user=root&password=000000");
            System.out.println("创建连接成功!");
            return connection;
        } catch (Exception e) {
            e.printStackTrace();
        }
        //2.创建连接
        System.out.println("创建连接失败!");
        return null;
    }

    public static void ShutDown(PreparedStatement statement, Connection connection) {

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

        }
    }
}

其中的getConnection()方法用于与建立连接,ShutDown()方法用于关闭资源。
并且在其他类种调用该方法时,要注意使用DButill.getConnection(). 去代替connection,具体使用见代码。
则Demo.java类即可修改为:

JDBC select

import utill.DButill;

import java.sql.*;

public class Demo {
    //JDBC  JAVA DATABASE CONNECTION
    public static void main(String[] args){
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        try{
            //1.加载驱动            //2.创建连接
            DButill.getConnection();
            //3.写sql
            String sql="select * from jdbc";
            //4.得到statement对象
            statement = DButill.getConnection().prepareStatement(sql);
            //5.执行sql  得到结果集
            resultSet = statement.executeQuery();
            //6.处理结果集
            while(resultSet.next()){
                System.out.println(resultSet.getInt(1));
                System.out.println(resultSet.getString(2));
                System.out.println(resultSet.getString(3));
            }
            //7.关闭连接
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            DButill.ShutDown(statement,DButill.getConnection());
        }
    }
}

JDBC insert

新建Insert.java


import utill.DButill;
import java.sql.Connection;
import java.sql.PreparedStatement;

public class Insert {
    public static void main(String[] args){
        Connection connection = null;
        PreparedStatement statement = null;
        //1.注册驱动
        try {
            DButill.getConnection();
            //3.写sql
            String sql="insert into jdbc (username,password) values(?,?)";
            //4.获取statement对象
            statement = DButill.getConnection().prepareStatement(sql);
            statement.setString(1,"xiaohua");
            statement.setString(2,"999");
            statement.executeUpdate();
            //5.执行sql.
            //6.关闭连接
        } catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            DButill.ShutDown(statement,connection);
        }
    }
}

JDBC update

新建Update.java


import sun.security.pkcs11.Secmod;
import utill.DButill;

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

public class Update {
    public static void main(String[] args){
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        //1.注册驱动
        //2.建立连接
        DButill.getConnection();
        //3.写sql语句
        String sql="update jdbc set password='" + 100 + "' where id='" + 3 + "'";
        //4.获取statement对象
        try {
            statement = DButill.getConnection().prepareStatement(sql);
            //5.执行sql,得到结果集
            //resultSet = statement.executeQuery();
            //6.处理结果集
            statement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        //7.关闭statement、connection、resultSet资源
        finally {

            DButill.ShutDown(statement,DButill.getConnection());
        }
    }
}

JDBC delete

新建Delete.java


import utill.DButill;

import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.concurrent.Callable;

public class Delete {
    public static void main(String[] args){
        PreparedStatement statement = null;
        //1.注册驱动
        try {
            DButill.getConnection();
            //3.写sql语句
            String sql ="delete from jdbc where id='" + 5 + "'";
            //4.获取statement对象
            statement = DButill.getConnection().prepareStatement(sql);
            //5.处理sql
            //6.处理结果集
            statement.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        }
        //7.关闭connection、statement、resultSet等资源
        finally {
            DButill.ShutDown(statement,DButill.getConnection());
        }
    }
}

经测试,代码均能正确高效执行。由于这只是简单实现JDBC增删改查操作,并未对整体的交互性做考量,因此在运行时,记得选择要运行的java类。你要是运行着Insert.java,却希望看到数据库中某条信息被删除,那是做不到的哟。请注意,代码的有效性与软件的版本有很大关系,博主所用的版本并非最新版本,望诸位同道注意。

小白新博,望采纳点赞~如有修正意见,望在评论区留言告知,某不胜感激。