gpt4 book ai didi

java - java中的动态雪花jdbc连接

转载 作者:行者123 更新时间:2023-12-01 16:16:01 24 4
gpt4 key购买 nike

我试图在 java 中创建动态 JDBC 连接来连接到雪花。

我陷入了困境,如何将参数从我的属性文件传递到雪花连接文件

请查看附件代码

package com.cisco.export.utils;


import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

import com.cisco.config.Configuration;



public class SFDbConnection {

public Connection getConnection(Configuration config) throws SQLException{
Connection connection=null;
try {
System.out.println(config.getProp("sf.driverclass"));
System.out.println(config.getProp("sf.url"));
System.out.println(config.getProp("sf.account"));
System.out.println(config.getProp("sf.username"));
System.out.println(config.getProp("sf.password"));
System.out.println(config.getProp("sf.warehouse"));
System.out.println(config.getProp("sf.db"));
System.out.println(config.getProp("sf.schema"));
System.out.println(config.getProp("sf.role"));




Class.forName(config.getProp("sf.driverclass"));
String connectStr = "jdbc:snowflake://mysnowflakeaccount.us-east-1.snowflakecomputing.com";
connection = DriverManager.getConnection()


} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return connection;
}

有人可以帮助我如何使 getConnection() 内的参数动态化吗?

感谢您的帮助。

谢谢,尼基尔

最佳答案

Snowflake JDBC 驱动程序接受连接属性 via the connection-string或通过 java.util.Properties class object .

使用 connection string 中的属性:

String sfAccount = config.getProp("sf.account");
String sfUsername = config.getProp("sf.username");
String sfPassword = config.getProp("sf.password");
String sfWarehouse = config.getProp("sf.warehouse");
String sfDatabase = config.getProp("sf.db");
String sfSchema = config.getProp("sf.schema");
String sfRole = config.getProp("sf.role");

String connectionString =
String.format("jdbc:snowflake://%s.snowflakecomputing.com/?role=%s&warehouse=%s&db=%s&schema=%s",
sfAccount,
sfRole,
sfWarehouse,
sfDatabase,
sfSchema
);

return DriverManager.getConnection(connectionString, sfUsername, sfPassword);

com.cisco.config.Configuration 类不是已知的公共(public) API 类型,但如果它可以转换为 java.util.Properties 对象,则您可以可以通过吗when building a connection 。这是直接转换:

java.util.Properties props = new java.util.Properties();

String connectionString =
String.format(
"jdbc:snowflake://%s.snowflakecomputing.com",
config.getProp("sf.account")
);

props.setProperty("user", config.getProp("sf.username"));
props.setProperty("password", config.getProp("sf.password"));
props.setProperty("role", config.getProp("sf.role"));
props.setProperty("warehouse", config.getProp("sf.warehouse"));
props.setProperty("db", config.getProp("sf.db"));
props.setProperty("schema", config.getProp("sf.schema"));

return DriverManager.getConnection(connectionString, props);

关于java - java中的动态雪花jdbc连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62389398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com