Aracılığıyla paylaş


Güncellenme sayısıyla depolanmış prosedür kullanma

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

Sql Server veritabanındaki verileri saklı yordam kullanarak değiştirmek için, SQL Server için Microsoft JDBC Sürücüsü SQLServerCallableStatement sınıfını sağlar. SQLServerCallableStatement sınıfını kullanarak, veritabanındaki verileri değiştiren saklı yordamları çağırabilir ve etkilenen satır sayısının sayısını döndürebilirsiniz( güncelleştirme sayısı olarak da adlandırılır).

SQLServerCallableStatement sınıfını kullanarak saklı yordama yapılan çağrıyı ayarladıktan sonra execute veya executeUpdate yöntemini kullanarak saklı yordamı çağırabilirsiniz. executeUpdate yöntemi saklı yordamdan etkilenen satır sayısını içeren bir int değeri döndürür, ancak yürütme yöntemi döndürmez. execute yöntemini kullanıyorsanız ve etkilenen satır sayısını almak istiyorsanız, saklı yordamı çalıştırdıktan sonra getUpdateCount yöntemini çağırabilirsiniz.

Uyarı

JDBC sürücüsünün tetiklenmiş olabilecek tetikleyiciler tarafından döndürülen güncelleştirme sayıları da dahil olmak üzere tüm güncelleştirme sayılarını döndürmesini istiyorsanız lastUpdateCount bağlantı dizesi özelliğini "false" olarak ayarlayın. lastUpdateCount özelliği hakkında daha fazla bilgi için bkz. Bağlantı özelliklerini ayarlama.

Örneğin, aşağıdaki tabloyu ve saklı yordamı oluşturun ve ayrıca AdventureWorks2025 örnek veritabanına örnek veriler ekleyin:

CREATE TABLE TestTable
   (Col1 int IDENTITY,
    Col2 varchar(50),
    Col3 int);  

CREATE PROCEDURE UpdateTestTable  
   @Col2 varchar(50),  
   @Col3 int  
AS  
BEGIN  
   UPDATE TestTable  
   SET Col2 = @Col2, Col3 = @Col3  
END;  
INSERT INTO dbo.TestTable (Col2, Col3) VALUES ('b', 10);  

Aşağıdaki örnekte, AdventureWorks2025 örnek veritabanına açık bir bağlantı işleve geçirilir, UpdateTestTable saklı yordamını çağırmak için yürütme yöntemi kullanılır ve ardından saklı yordamdan etkilenen satırların sayısını döndürmek için getUpdateCount yöntemi kullanılır.

public static void executeUpdateStoredProcedure(Connection con) {
    try(CallableStatement cstmt = con.prepareCall("{call dbo.UpdateTestTable(?, ?)}");) {
        cstmt.setString(1, "A");
        cstmt.setInt(2, 100);
        cstmt.execute();
        int count = cstmt.getUpdateCount();
        System.out.println("ROWS AFFECTED: " + count);
    }
    // Handle any errors that may have occurred.
    catch (SQLException e) {
        e.printStackTrace();
    }
}

Ayrıca bakınız

Saklı yordamlarla ifadeleri kullanma