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

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的增删改查_第1张图片

一、使用IDEA创建工程目录

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

MySql+IDEA简单实现JDBC的增删改查_第2张图片

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

二、jar包的导入

选择你的工程,右键选择NEW–Directory,新建lib目录,用于存放jar包。建好之后,选中lib目录,将已经下载好的jar包复制进去。
MySql+IDEA简单实现JDBC的增删改查_第6张图片
上图中左边的目录里有经过相同操作后建立的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,却希望看到数据库中某条信息被删除,那是做不到的哟。请注意,代码的有效性与软件的版本有很大关系,博主所用的版本并非最新版本,望诸位同道注意。

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

你可能感兴趣的:(JAVA)