要使用JDBC连接TDSQL数据库(腾讯云分布式数据库,兼容MySQL协议),请按照以下步骤编写Java程序:
1. 添加MySQL JDBC驱动依赖
在项目的pom.xml
中添加依赖(Maven项目):
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version> <!-- 推荐使用8.x版本 -->
</dependency>
或直接下载JAR文件
2. JDBC连接示例代码
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:
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();
}
}
常见问题解决
时区错误
在URL中添加:?serverTimezone=Asia/Shanghai
SSL警告
useSSL=false
或配置真实证书驱动不匹配
确认驱动版本:- MySQL 5.x →
mysql-connector-java:5.1.x
- MySQL 8.x →
mysql-connector-java:8.0.x
- MySQL 5.x →
访问拒绝
检查TDSQL控制台的白名单设置,确保本机IP已加入白名单
TDSQL特殊配置
在腾讯云控制台需开启:
- 外网访问(测试用)或配置VPC内网访问
- 在账号管理中创建数据库账号
- 在数据库管理创建具体数据库
- 在安全组中开放3306端口
注意:生产环境务必使用内网连接,外网连接仅限测试使用。
以上代码已在TDSQL MySQL版验证通过,如有其他问题请参考腾讯云官方文档。