【发布时间】:2022-08-14 14:35:03
【问题描述】:
我正在尝试使用 Azure SSO 凭据和连接属性通过 JDBC 连接与雪花连接。但是我可以使用相同的凭据在浏览器上连接到 Snowflake DB。通过Java代码,我得到了异常。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class SnowFlakeTest {
public static void main(String[] args) throws Exception {
// get connection
System.out.println(\"Create JDBC connection\");
Connection connection = getConnection();
System.out.println(\"Done creating JDBC connection\");
// create statement
System.out.println(\"Create JDBC statement\");
Statement statement = connection.createStatement();
System.out.println(\"Done creating JDBC statement\");
// query the data
System.out.println(\"Query demo\");
ResultSet resultSet = statement.executeQuery(\"SELECT * FROM T_ADHOC.TABLE LIMIT 10\");
System.out.println(\"Metadata:\");
System.out.println(\"================================\");
// fetch metadata
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
System.out.println(\"Number of columns=\"
+ resultSetMetaData.getColumnCount());
for (int colIdx = 0; colIdx < resultSetMetaData.getColumnCount();
colIdx++) {
System.out.println(\"Column \" + colIdx + \": type=\"
+ resultSetMetaData.getColumnTypeName(colIdx + 1));
}
// fetch data
System.out.println(\"nData:\");
System.out.println(\"================================\");
int rowIdx = 0;
while (resultSet.next()) {
System.out.println(\"row \" + rowIdx + \", column 0: \"
+ resultSet.getString(1));
}
statement.close();
}
private static Connection getConnection() throws SQLException {
try {
Class.forName(\"net.snowflake.client.jdbc.SnowflakeDriver\");
} catch (ClassNotFoundException ex) {
System.err.println(\"Driver not found\");
}
// build connection properties
Properties properties = new Properties();
properties.put(\"user\", \"UserId\"); // replace \"\" with your username
properties.put(\"password\", \"Password\"); // replace \"\" with your password
properties.put(\"account\", \"R_E_ACC\"); // replace \"\" with your account name
properties.put(\"db\", \"B_P_DB\"); // replace \"\" with target database name
properties.put(\"schema\", \"T_ADHOC\"); // replace \"\" with target schema name
//properties.put(\"tracing\", \"on\");
// create a new connection
String connectStr = System.getenv(\"SF_JDBC_CONNECT_STRING\");
// use the default connection string if it is not set in environment
if (connectStr == null) {
connectStr = \"jdbc:snowflake://domain.privatelink.snowflakecomputing.com\"; // replace accountName with your account name
}
return DriverManager.getConnection(connectStr, properties);
}
}
创建 JDBC 连接
Exception in thread \"main\" net.snowflake.client.jdbc.SnowflakeSQLException: Incorrect username or password was specified.
at net.snowflake.client.core.SessionUtil.newSession(SessionUtil.java:681)
at net.snowflake.client.core.SessionUtil.openSession(SessionUtil.java:286)
at net.snowflake.client.core.SFSession.open(SFSession.java:461)
at net.snowflake.client.jdbc.DefaultSFConnectionHandler.initialize(DefaultSFConnectionHandler.java:104)
at net.snowflake.client.jdbc.DefaultSFConnectionHandler.initializeConnection(DefaultSFConnectionHandler.java:79)
at net.snowflake.client.jdbc.SnowflakeConnectionV1.initConnectionWithImpl(SnowflakeConnectionV1.java:116)
at net.snowflake.client.jdbc.SnowflakeConnectionV1.<init>(SnowflakeConnectionV1.java:96)
at net.snowflake.client.jdbc.SnowflakeDriver.connect(SnowflakeDriver.java:176)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:189)
at com.apps.sample.SnowFlakeTest.getConnection(SnowFlakeTest.java:87)
at com.apps.sample.SnowFlakeTest.main(SnowFlakeTest.java:18) ```
-
在驱动程序的连接字符串中设置 authenticationator=externalbrowser。 docs.snowflake.com/en/user-guide/…
标签: java jdbc snowflake-cloud-data-platform