JDBC ile Azure Veri Gezgini'ne bağlanma
Java Veritabanı Bağlantısı (JDBC), veritabanlarına bağlanmak ve sorguları yürütmek için kullanılan bir Java API'sidir. Azure Veri Gezgini'a bağlanmak için JDBC kullanabilirsiniz. Bu işlevsellik, Azure Veri Gezgini'nin Microsoft SQL Server öykünen TDS uyumlu uç noktası tarafından mümkün hale getirilir. Uç nokta, 7.x ve 8.0 TDS sürümlerini destekler.
Daha fazla bilgi için bkz. Azure Veri Gezgini'da SQL Server öykünme hakkında genel bakış.
JDBC ile bağlanma
Aşağıdaki adımlarda Azure Veri Gezgini'a bağlanmak için JDBC'nin nasıl kullanılacağı açıklanmaktadır.
JAR,
adal4j
JAR ve tüm bağımlılıklarıyla bir uygulamamssql-jdbc
oluşturun. sürümü ve sürümümssql-jdbc
kullanılırken7.0.0
gereken bağımlılıkların listesi aşağıdadıradal4j
.1.6.3
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
com.microsoft.sqlserver.jdbc.SQLServerDriver JDBC sürücü sınıfını kullanmak için bir uygulama oluşturun. Aşağıdaki biçimde bir bağlantı dizesi ile bağlanabilirsiniz. değerini küme adınız ve küme bölgenizle ve
<database_name>
veritabanı adınız ile değiştirin<cluster_name.region>
.jdbc:sqlserver://<cluster_name.region>.kusto.windows.net:1433;database=<database_name>;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.kusto.windows.net;loginTimeout=30;authentication=ActiveDirectoryIntegrated
JDBC kullanıcı kimlik doğrulaması
Aşağıda, bir kullanıcı sorumlusu için JDBC ile Microsoft Entra kimliği kullanarak program aracılığıyla kimlik doğrulamasının nasıl yapıldığını gösteren bir örnek verilmiştir.
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();
}
}
}
JDBC uygulama kimlik doğrulaması
Aşağıda, bir uygulama sorumlusu için JDBC ile Microsoft Entra kimliği kullanarak program aracılığıyla kimlik doğrulamasının nasıl yapıldığını gösteren bir örnek verilmiştir.
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.
*/
}
}