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 |
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 ...
}