Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Java Database Connectivity (JDBC) to interfejs API języka Java służący do nawiązywania połączeń z bazami danych i wykonywania zapytań. Rozwiązania JDBC można użyć w celu nawiązania połączenia z usługą Azure Data Explorer. Ta funkcja jest możliwa przez punkt końcowy zgodny ze standardem TDS platformy Azure Data Explorer, który emuluje usługę Microsoft SQL Server. Punkt końcowy obsługuje usługi TDS w wersji 7.x i 8.0.
Aby uzyskać więcej informacji, zobacz omówienie emulacji SQL Server w usłudze Azure Data Explorer.
Nawiązywanie połączenia za pomocą narzędzia JDBC
W poniższych krokach opisano sposób nawiązywania połączenia z usługą Azure Data Explorer przy użyciu narzędzia JDBC.
Utwórz aplikację z plikami
mssql-jdbc
JAR,adal4j
JAR i wszystkimi ich zależnościami. Poniżej znajduje się lista zależności wymaganych podczas korzystania z7.0.0
wersjimssql-jdbc
i1.6.3
wersji programuadal4j
.mssql-jdbc-7.0.0.jre8.jar adal4j-1.6.3.jar accessors-smart-1.2.jar activation-1.1.jar asm-5.0.4.jar commons-codec-1.11.jar commons-lang3-3.5.jar gson-2.8.0.jar javax.mail-1.6.1.jar jcip-annotations-1.0-1.jar json-smart-2.3.jar lang-tag-1.4.4.jar nimbus-jose-jwt-6.5.jar oauth2-oidc-sdk-5.64.4.jar slf4j-api-1.7.21.jar
Utwórz aplikację, aby użyć klasy sterownika JDBC com.microsoft.sqlserver.jdbc.SQLServerDriver. Możesz nawiązać połączenie za pomocą parametry połączenia następującego formatu. Zastąp
<cluster_name.region>
ciąg nazwą klastra i regionem klastra oraz<database_name>
nazwą bazy danych.jdbc:sqlserver://<cluster_name.region>.kusto.windows.net:1433;database=<database_name>;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.kusto.windows.net;loginTimeout=30;authentication=ActiveDirectoryIntegrated
Uwierzytelnianie użytkownika JDBC
Poniżej przedstawiono przykładowy sposób programowego uwierzytelniania przy użyciu identyfikatora Microsoft Entra z JDBC dla jednostki użytkownika.
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import com.microsoft.sqlserver.jdbc.SQLServerDataSource;
import com.microsoft.aad.msal4j.*;
public class Sample {
public static void main(String[] args) throws Exception {
IAuthenticationResult authenticationResult = futureAuthenticationResult.get();
SQLServerDataSource ds = new SQLServerDataSource();
ds.setServerName("<cluster_DNS>");
ds.setDatabaseName("<database_name>");
ds.setHostNameInCertificate("*.kusto.windows.net"); // Or appropriate regional domain.
ds.setAuthentication("ActiveDirectoryIntegrated");
try (Connection connection = ds.getConnection();
Statement stmt = connection.createStatement();) {
ResultSet rs = stmt.executeQuery("<T-SQL_query>");
/*
Read query result.
*/
} catch (Exception e) {
System.out.println();
e.printStackTrace();
}
}
}
Uwierzytelnianie aplikacji JDBC
Poniżej przedstawiono przykładowy sposób programowego uwierzytelniania przy użyciu identyfikatora Microsoft Entra z JDBC dla jednostki aplikacji.
import java.sql.*;
import com.microsoft.sqlserver.jdbc.*;
import com.microsoft.aad.msal4j.*;
import java.net.MalformedURLException;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class Sample {
public static void main(String[] args) throws Throwable {
// Can also use tenant name.
String authorityUrl = "https://login.microsoftonline.com/<tenant_ID>";
Set<String> scopes = new HashSet<>();
scopes.add("https://<cluster_DNS>/.default");
IConfidentialClientApplication clientApplication = ConfidentialClientApplication.builder("<application_client_ID>", ClientCredentialFactory.createFromSecret("<application_key>")).authority(authorityUrl).build();
CompletableFuture<IAuthenticationResult> futureAuthenticationResult = clientApplication.acquireToken(ClientCredentialParameters.builder(scopes).build());
IAuthenticationResult authenticationResult = futureAuthenticationResult.get();
SQLServerDataSource ds = new SQLServerDataSource();
ds.setServerName("<cluster_DNS>");
ds.setDatabaseName("<database_name>");
ds.setAccessToken(authenticationResult.accessToken());
connection = ds.getConnection();
statement = connection.createStatement();
ResultSet rs = statement.executeQuery("<T-SQL_query>");
/*
Read query result.
*/
}
}