Show TOC Anfang des Inhaltsbereichs

Hintergrunddokumentation Native SQL  Dokument im Navigationsbaum lokalisieren

In Ausnahmefällen kann es nötig sein, nicht portable SQL-Befehle programmieren zu müssen, die über den OpenJDBC Sprachumfang hinausgehen. Hierzu wird die Hilfsklasse com.sap.sql.NativeSQLAccess zur Verfügung gestellt. Mit Hilfe der statischen Methode NativeSQLAccess.getVendorID(Connection conn) kann der zugrundeliegende Datenbankhersteller ermittelt werden. Diese Methode sollte verwendet werden um sicherzustellen, dass ein nicht portabler SQL-Befehl ausschließlich auf der dafür vorgesehenen Datenbankplattform abgesetzt wird. Die NativeSQLAccess Klasse bietet drei Möglichkeiten, um einen nicht portablen SQL-Befehl abzusetzen.

...

       1.      Mit NativeSQLAccess.createNativeStatement() wird ein Objekt der Klasse java.sql.Statement erzeugt.

       2.      Mit NativeSQLAccess.prepareNativeStatement() wird ein Objekt der Klasse java.sql.PreparedStatement erzeugt.

       3.      Mit NativeSQLAccess.prepareNativeCall() wird ein Objekt der Klasse java.sql.CallableStatement, d.h. der Aufruf einer Stored Procedure erzeugt.

 

Datenbankspezifisches Coding könnte also wie folgt aussehen (sei conn ein bereits vorhandenes Datenbankverbindungsobjekt).

 

import java.sql.PreparedStatement;

import com.sap.sql.NativeSQLAccess;

 

String mssOnlyStmt = "…";

// Sicherstellen der richtigen Ablaufumgebung

if (NativeSQLAccess.getVendorID(conn) !=

    NativeSQLAccess.VENDOR_MS_SQL_SERVER) {

// Fehlerbehandlung

} else {

// Variante 1

    PreparedStatement ps =

   NativeSQLAccess.prepareNativeStatement(

       conn, mssOnlyStmt);

    . . .

// Variante 2

    Statement stmt =

        NativeSQLAccess.createNativeStatement(conn);

    int result = stmt.execute(mssOnlyStmt);

    . . .

// Variante 3

    CallableStatement cs =

        NativeSQLAccess.prepareNativeCall(

            conn, mssOnlyStmt);

    . . .

}

 

 

Ende des Inhaltsbereichs