Aracılığıyla paylaş


Karmaşık deyimleri işleme

JDBC sürücüsünü indirin

SQL Server için Microsoft JDBC Sürücüsünü kullandığınızda, çalışma zamanında dinamik olarak oluşturulan deyimler de dahil olmak üzere karmaşık deyimleri işlemeniz gerekebilir. Karmaşık deyimler genellikle güncelleştirmeler, eklemeler ve silmeler dahil olmak üzere farklı türde görevler gerçekleştirir. Bu tür deyimler birden çok sonuç kümesi ve çıkış parametresi de döndürebilir. Bu durumlarda, deyimlerini çalıştıran Java kodu, döndürülen nesne ve veri türlerini ve sayısını önceden bilmeyebilir.

Karmaşık deyimleri işlemek için JDBC sürücüsü, uygulamanızın bunları doğru şekilde işleyebilmesi için döndürülen nesneleri ve verileri sorgulamak için birçok yöntem sağlar. Karmaşık deyimleri işlemenin anahtarı, SQLServerStatement sınıfının yürütme yöntemidir. Bu yöntem bir boole değeri döndürür. Değer doğru olduğunda, ifadelerden döndürülen ilk sonuç bir sonuç kümesidir. Değer false ise, döndürülen ilk sonuç bir güncelleştirme sayısıdır.

Döndürülen nesne veya veri türünü bildiğinizde, bu verileri işlemek için getResultSet veya getUpdateCount yöntemini kullanabilirsiniz. Karmaşık deyiminden döndürülen sonraki nesneye veya verilere devam etmek için getMoreResults yöntemini çağırabilirsiniz.

Aşağıdaki örnekte, AdventureWorks2025 örnek veritabanına açık bir bağlantı işleve geçirilir, saklı yordam çağrısını SQL deyimiyle birleştiren karmaşık bir deyim oluşturulur, deyimler çalıştırılır ve ardından döndürülen tüm sonuç kümelerini ve güncelleştirilmiş sayıları işlemek için bir do döngü kullanılır.

public static void executeComplexStatement(Connection con) {
    try (Statement stmt = con.createStatement();) {
        String sqlStringWithUnknownResults = "{call dbo.uspGetEmployeeManagers(50)}; SELECT TOP 10 * FROM Person.Contact";
        boolean results = stmt.execute(sqlStringWithUnknownResults);
        int count = 0;
        do {
            if (results) {
                ResultSet rs = stmt.getResultSet();
                System.out.println("Result set data displayed here.");
            }
            else {
                count = stmt.getUpdateCount();
                if (count >= 0) {
                    System.out.println("DDL or update data displayed here.");
                }
                else {
                    System.out.println("No more results to process.");
                }
            }
            results = stmt.getMoreResults();
        }
        while (results || count != -1);
    }
    // Handle any errors that may have occurred.
    catch (SQLException e) {
        e.printStackTrace();
    }
}

Ayrıca bakınız

JDBC sürücüsüyle komutları kullanma