Aracılığıyla paylaş


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.

  1. JAR, adal4j JAR ve tüm bağımlılıklarıyla bir uygulama mssql-jdbc oluşturun. sürümü ve sürümü mssql-jdbc kullanılırken 7.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
    
  2. 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.
    */
  }
}