## Prepared Statement

Prepared Statements werden bei der Entwicklung von Datenbankanwendungen verwendet. Sie ermöglichen es, in Methoden der für die Datenbankanwendung gewählten Programmiersprache SQL-Anweisungen mit Platzhaltern zu verwenden.

Platzhalter können nur für Werte stehen, nicht jedoch für Namen von Datenbankobjekten wie beispielsweise den Namen einer Tabelle. Als Platzhalter können Sie ein Fragezeichen ? oder einen Variablennamen :input verwenden. Wenn Sie mehrmals denselben Variablennamen verwenden, dann entspricht dieser mehreren Parametern.

Prepared Statements bieten gegenüber einfachen SQL-Anweisungen unter anderem die folgenden Vorteile:

· Sie sind effizienter, weil das Datenbanksystem sie nur einmal parsen muss, auch wenn sie mehrfach verwendet werden (siehe hared SQL).

· Sie sind sicherer, weil sie die SQL-Logik und die vom Benutzer eingegebenen Daten trennen und so die Gefahr verringern, dass ein Benutzer absichtlich ungültige Werte eingibt (SQL Injection). Siehe MaxDB Sicherheitsleitfaden, Benutzereingaben in SQL-Anweisungen überprüfen

Für die folgenden MaxDB-Schnittstellen können Sie Prepared Statements verwenden:

MaxDB-Schnittstellen: PreparedStatements

Schnittstelle | Implementierung
JDBC | Klasse PreparedStatement
ODBC | Methode SQLPrepare
SQLDBC | Klasse SQLDBC_PrepareStatement
PHP | maxdb_prepare
Perl | prepare
Python | Methode prepare, Klasse SAPDB_Prepared

### Beispiel

Prepared Statement für die MaxDB SQLDBC-Schnittstelle:

SQLDBC_PrepareStatement *stmt = conn->createPreparedStatement();

SQLDBC_Retcode rc = stmt->prepare("SELECT * FROM CUSTOMER");

if (rc != SQLDBC_OK) {

// Handle error ...

}

rc = stmt->execute();

if (rc != SQLDBC_OK) {

// Handle error ...

}