更新时间:2024-01-16 GMT+08:00
分享

通过JDBC方式连接

前提条件

  • 用户需要具备以下技能:
    • 熟悉计算机基础知识。
    • 了解java编程语言。
    • 了解JDBC基础知识。
  • 下载官方ClickHouse的JDBC驱动
  • 通过JDBC连接HTAP数据库,代码中的JDBC链接格式如下:

    jdbc:clickhouse://<instance_ip>:<instance_port>/<database_name>

    参数

    说明

    <instance_ip>

    请替换为实例的IP地址。

    说明:
    • 如果通过弹性云服务器连接,“instance_ip”是实例的“读写内网地址”。您可以在该实例“基本信息”页面的“网络信息”区域查看。
    • 如果通过公网连接,“instance_ip”为该实例已绑定的“弹性公网IP”,即读写公网地址。您可以在该实例““基本信息”页面的“网络信息”区域查看。

    <instance_port>

    请替换为实例的数据库端口,默认为8123。

    说明:

    您可以在该实例“基本信息”页面的“网络信息”区域查看。

    <database_name>

    请替换为连接实例使用的数据库名。

代码示例

代码示例如下(连接HTAP数据库的java代码),其他语言,可以参考ClickHouse官方文档

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
public class JDBCTest {
    static final String IP = "*.*.*.*"; //实例的IP地址
    // 认证使用用户名和密码直接写在代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放,使用时解密),确保安全。
    // 本示例中以用户名和密码保存在环境变量中为例,运行本示例前请先在环境变量中设置环境变量EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV(环境变量名称请根据自身情况进行设置)。
    static final String USER =System.getenv("EXAMPLE_USERNAME_ENV"); //用户名
    static final String PASS = System.getenv("EXAMPLE_PASSWORD_ENV"); //密码
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        String url = "jdbc:clickhouse://" + IP + ":8123";
        try {
            Class.forName("ru.yandex.clickhouse.ClickHouseDriver");
            conn = DriverManager.getConnection(url, USER, PASS);
            stmt = conn.createStatement();
            String sql = "show databases;";
            ResultSet rs = stmt.executeQuery(sql);
            int columns = rs.getMetaData().getColumnCount();
            for (int i = 1; i <= columns; i++) {
                System.out.print(rs.getMetaData().getColumnName(i));
                System.out.print("\t");
            }
            while (rs.next()) {
                System.out.println();
                for (int i = 1; i <= columns; i++) {
                    System.out.print(rs.getObject(i));
                    System.out.print("\t");
                }
            }
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException se) {
            se.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // release resource ....
        }
    }
}
分享:

    相关文档

    相关产品