IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mysql(30) : java管理mysql -> 正文阅读

[大数据]mysql(30) : java管理mysql


import java.sql.*;
import java.util.LinkedList;
import java.util.List;

/**
 * @Author: liyue
 * @Date: 2022/03/30/15:09
 * @Description:
 */
public class MysqlInstance {
    /**
     * mysql驱动
     */
    private String driver;

    /**
     * mysql连接地址
     * 示例 jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&allowPublicKeyRetrieval=true&zeroDateTimeBehavior=CONVERT_TO_NULL
     */
    private String url;

    /**
     * mysql账号名
     */
    private String username;

    /**
     * mysql密码
     */
    private String password;

    private Connection conn;

    public MysqlInstance(String driver, String url, String username, String password) {
        this.driver = driver;
        this.url = url;
        this.username = username;
        this.password = password;
        try {
            conn = DriverManager.getConnection(url, username, password);
        } catch (Exception e) {
            System.err.println("连接池获取失败");
            throw new RuntimeException(e);
        }
    }

    public void execute(String sql) {
        try (Statement statement = conn.createStatement();) {
            Class.forName(driver);
            statement.execute(sql);
            System.out.println("执行sql成功,sql:" + sql);
        } catch (Exception e) {
            System.err.println("sql执行失败:" + sql);
            throw new RuntimeException(e);
        }
    }

    public List<List<Object>> query(String sql) {
        List<List<Object>> lists = new LinkedList<>();
        long startTime = System.currentTimeMillis();
        try (PreparedStatement ps = conn.prepareStatement(sql);
             ResultSet rs = ps.executeQuery()) {
            List<Object> titles = new LinkedList<>();
            ResultSetMetaData rsmd = rs.getMetaData();
            final int columnCount = rsmd.getColumnCount();
            // 结果为空时直接返回,方便后续处理。关于如何判空参见下面链接
            boolean rsIsEmpty = !rs.isBeforeFirst();
            if (rsIsEmpty) {
                return lists;
            }
            // 添加列名方便后续处理
            for (int i = 1; i <= columnCount; i++) {
                titles.add(rsmd.getColumnName(i));
            }
            lists.add(titles);
            while (rs.next()) {
                List<Object> list = new LinkedList<>();
                for (int i = 1; i <= columnCount; i++) {
                    list.add((rs.getString(i) == null || rs.getString(i).equals("")) ? "" : rs.getString(i).trim());
                }
                lists.add(list);
            }
        } catch (SQLException e) {
            System.err.println("查询sql失败,sql:" + sql);
            throw new RuntimeException(e);
        }
        long endTime = System.currentTimeMillis();
        System.out.println("查询sql:" + sql + ", 运行时长:" + (endTime - startTime) + " ms, 数据量: " + lists.size());
        return lists;
    }

    @Override
    protected void finalize() throws Throwable {
        close();
        super.finalize();
    }

    public void close() {
        try {
            conn.close();
            System.out.println("连接关闭成功");
        } catch (Exception e) {
            System.err.println("连接关闭失败");
            throw new RuntimeException(e);
        }
    }

    public MysqlInstance() {
    }

    public String getDriver() {
        return driver;
    }

    public void setDriver(String driver) {
        this.driver = driver;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

测试

    public static void main(String[] args) {
        MysqlInstance m1 = new MysqlInstance("com.mysql.cj.jdbc.Driver",
                "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&allowPublicKeyRetrieval=true&zeroDateTimeBehavior=CONVERT_TO_NULL",
                "root","123456");
        System.out.println(m1.query("show tables;"));
        m1.close();


        MysqlInstance m2 = new MysqlInstance("com.mysql.cj.jdbc.Driver",
                "jdbc:mysql://127.0.0.1:3306/sys?useUnicode=true&useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&allowPublicKeyRetrieval=true&zeroDateTimeBehavior=CONVERT_TO_NULL",
                "root","123456");
        System.out.println(m2.query("show tables;"));
        m2.close();
    }

?

mysql驱动

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.18</version>
</dependency>

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 00:08:39  更:2022-04-01 00:11:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:39:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码