java:如何用 JDBC 连接 TDSQL 数据库

要使用JDBC连接TDSQL数据库(腾讯云分布式数据库,兼容MySQL协议),请按照以下步骤编写Java程序:

1. 添加MySQL JDBC驱动依赖

在项目的pom.xml中添加依赖(Maven项目):

xml 复制代码
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.28</version> <!-- 推荐使用8.x版本 -->
</dependency>

或直接下载JAR文件


2. JDBC连接示例代码

java 复制代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class TDSQLDemo {
    // TDSQL连接信息(根据实际情况修改)
    private static final String JDBC_URL = "jdbc:mysql://[TDSQL主机]:[端口]/[数据库名]?useSSL=false&serverTimezone=Asia/Shanghai";
    private static final String USER = "your_username";
    private static final String PASSWORD = "your_password";

    public static void main(String[] args) {
        try {
            // 1. 注册JDBC驱动(可选,新版JDBC自动加载)
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 2. 建立连接
            try (Connection conn = DriverManager.getConnection(JDBC_URL, USER, PASSWORD)) {
                System.out.println("连接TDSQL成功!");

                // 3. 创建Statement
                try (Statement stmt = conn.createStatement()) {
                    
                    // 4. 执行SQL查询
                    String sql = "SELECT 1 + 1 AS result";
                    try (ResultSet rs = stmt.executeQuery(sql)) {
                        
                        // 5. 处理结果集
                        while (rs.next()) {
                            System.out.println("查询结果: " + rs.getInt("result"));
                        }
                    }
                    
                    // 示例:插入数据
                    // String insertSQL = "INSERT INTO users(name) VALUES('测试用户')";
                    // int rows = stmt.executeUpdate(insertSQL);
                    // System.out.println("插入行数: " + rows);
                }
            }
        } catch (Exception e) {
            System.err.println("连接TDSQL失败:" + e.getMessage());
            e.printStackTrace();
        }
    }
}

关键参数说明

参数 示例值 说明
[TDSQL主机] tdsqlshard-xxxxxxxx.public.tdsql.tencentcloud.com 控制台获取的访问地址
[端口] 3306 TDSQL实例端口
[数据库名] testdb 创建的数据库名称
useSSL=false 必填 禁用SSL(或配置真实证书)
serverTimezone Asia/Shanghai 必须设置时区避免时区错误

3. 连接池推荐(生产环境)

建议使用连接池管理连接,例如 HikariCP

java 复制代码
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

public class ConnectionPool {
    private static HikariDataSource dataSource;

    static {
        HikariConfig config = new HikariConfig();
        config.setJdbcUrl(JDBC_URL);
        config.setUsername(USER);
        config.setPassword(PASSWORD);
        config.addDataSourceProperty("connectionTimeout", "30000");
        config.addDataSourceProperty("maximumPoolSize", "20");
        dataSource = new HikariDataSource(config);
    }

    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }
}

常见问题解决

  1. 时区错误

    在URL中添加:?serverTimezone=Asia/Shanghai

  2. SSL警告
    useSSL=false 或配置真实证书

  3. 驱动不匹配

    确认驱动版本:

    • MySQL 5.x → mysql-connector-java:5.1.x
    • MySQL 8.x → mysql-connector-java:8.0.x
  4. 访问拒绝

    检查TDSQL控制台的白名单设置,确保本机IP已加入白名单


TDSQL特殊配置

在腾讯云控制台需开启:

  1. 外网访问 (测试用)或配置VPC内网访问
  2. 账号管理中创建数据库账号
  3. 数据库管理创建具体数据库
  4. 安全组中开放3306端口

注意:生产环境务必使用内网连接,外网连接仅限测试使用。

以上代码已在TDSQL MySQL版验证通过,如有其他问题请参考腾讯云官方文档

相关推荐
bmjIjFNC811 小时前
Redis分布式锁进第九十一篇
数据库·redis·分布式
砍材农夫11 小时前
物联网实战:Spring Boot + Netty 搭建 MQTT 统一接入层
java·网络·spring boot·后端·物联网·spring
写代码的小阿帆11 小时前
英语四六级证书审核(SpringBoot+Dify+RPA)
java·spring boot
redaijufeng12 小时前
我在C++中深入理解了继承,收获颇丰
java·c++·算法
承渊政道12 小时前
【MySQL数据库学习】MySQL基本查询(下)
数据库·学习·mysql·leetcode·bash·数据库开发·数据库系统
摇滚侠12 小时前
Spring 零基础入门到进阶 基于注解的声明式事务 65-70
数据库·mysql·spring
≮傷£≯√12 小时前
动态创建combobox
数据库
就叫_这个吧12 小时前
HTML或JSP页面链接CSS,link标签没问题,但不显示样式问题解决
java·前端·css·html·intellij-idea·jsp
阿坤带你走近大数据12 小时前
分别介绍下java主流的开发框架、设计模式与对应编程语言的高级特性
java·开发语言·设计模式
摇滚侠12 小时前
Spring 零基础入门到进阶 基于 XML 的声明式事务 71
xml·数据库·spring