不同线程的连接无法读取在另一个线程中创建的表格?
创始人
2025-01-09 21:00:54
0

问题的解决方法是使用线程安全的数据库连接池来创建不同线程之间的连接。下面是一个使用HikariCP连接池的代码示例:

// 创建HikariCP连接池
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/test");
config.setUsername("username");
config.setPassword("password");
HikariDataSource ds = new HikariDataSource(config);

// 在不同的线程中使用连接
ExecutorService executor = Executors.newFixedThreadPool(2);
executor.submit(() -> {
    try (Connection conn = ds.getConnection()) {
        // 在第一个线程中创建表格
        Statement stmt = conn.createStatement();
        stmt.executeUpdate("CREATE TABLE IF NOT EXISTS users (id INT PRIMARY KEY, name VARCHAR(255))");
    } catch (SQLException e) {
        e.printStackTrace();
    }
});

executor.submit(() -> {
    try (Connection conn = ds.getConnection()) {
        // 在第二个线程中读取表格
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM users");
        while (rs.next()) {
            System.out.println(rs.getInt("id") + " " + rs.getString("name"));
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
});

executor.shutdown();

在这个示例中,我们使用HikariCP连接池创建了两个不同的线程,并在第一个线程中创建了一个表格,同时在第二个线程中从数据库中读取该表格。注意每个线程都通过连接池获取了数据库连接,并在处理完成后关闭了它们的连接。这样,就可以安全地在不同的线程中使用连接来读取/写入数据库了。

相关内容

热门资讯

aapoker辅助!aapok... 这是一款非常优秀的aapoker辅助 ia辅助检测软件,能够让你了解到aapoker辅助中牌率当中全...
透视辅助!德州私人局怎么透视,... 透视辅助!德州私人局怎么透视,pokerworld修改器(确实有挂)1、德州私人局怎么透视系统规律教...
aapoker发牌机制!aa ... 1、aapoker发牌机制!aa poker下载地址,(aapOKER)竟然是真的有挂,详细教程(有...
透视智能ai!pokerrrr... 透视智能ai!pokerrrr2辅助,epoker透视底牌(一贯存在有挂);1、让任何用户在无需ep...
aapoker辅助工具!aap... 1、aapoker辅助工具!aapoker德州线上扑克辅助工具,(aaPoker)确实是有挂,详细教...
透视脚本!德州透视是真的吗,p... 透视脚本!德州透视是真的吗,pokemmo辅助脚本(总是真的有挂)1、点击下载安装,德州透视是真的吗...
aapoker俱乐部!aapo... aapoker俱乐部!aapoker有手游版吗,(Aapoker)总是是真的有挂,详细教程(有挂辅助...
透视好友!智星菠萝透视,pok... 透视好友!智星菠萝透视,pokemmo修改器手机版(确实真的有挂)pokemmo修改器手机版辅助器中...
aapoker透视辅助!aap... aapoker透视辅助!aapoker辅助工具下载,(AAPOKER)总是有挂,详细教程(有挂详情)...
透视透视!xpoker辅助助手... 透视透视!xpoker辅助助手,pokemmo辅助器手机版下载(原来是有挂);在进入pokemmo辅...