www.wikidata.de-de.nina.az
SQLJ ist ein mittlerweile veralteter Arbeitstitel fur Bestrebungen Java und SQL zusammenzufuhren SQLJ Teil 0 definiert die Moglichkeit SQL Statements in Java Programme einzubinden Teil 0 wurde mittlerweile als Teil 10 Object Language Bindings SQL OLB des Standards ISO IEC 9075 der Datenbanksprache SQL ubernommen Die Teile 1 und 2 beschreiben den umgekehrten Weg namlich Java Klassen Routines and Types in SQL Statements anzusprechen Teil 1 und 2 wurden als SQL Teil 13 SQL Routines and Types Using the Java Programming Language in SQL standardisiert Im Folgenden steht der Begriff SQLJ als Synonym fur SQLJ Part 0 Mit SQLJ ist Embedded SQL fur Java definiert Im Gegensatz dazu stellt JDBC eine API bereit Inhaltsverzeichnis 1 Format 2 Vor und Nachteile 3 Beispiele und Vergleich mit JDBC 4 WeblinksFormat BearbeitenDie eingebettete SQL Anweisungen haben das folgende Format sql lt context gt lt SQL Anweisung gt Sie beginnen mit der Zeichenfolge sql konnen mehrere Zeilen umfassen und enden mit einem Semikolon Sie konnen Java Variablen x und Ausdrucke y z enthalten Vor und Nachteile BearbeitenSQLJ bietet mehrere Vorteile die Programmierung ist im Vergleich zu JDBC wesentlich einfacher da SQLJ direkt auf Variablen des umgebenden Java Codes zugreifen kann im Falle von SQLJ fur IBMs DB2 besteht eine bessere Authentifizierungskontrolle da Benutzerrechte nicht auf Basis von Tabellen sondern auf Basis von gebundenen SQLJ Profilen Packages gepruft werden damit ist eine programmorientierte Berechtigung moglich Der SQLJ Translator uberpruft die Syntax und Semantik von SQL Anweisungen Es besteht so die Moglichkeit die Anweisungen gegen das Datenbankschema zu prufen wobei SQL Fehler fruhzeitig entdeckt und behoben werden konnen Im Gegensatz hierzu werden bei Verwendung von JDBC Fehler erst zur Laufzeit erkannt Nachteile sind SQLJ Programme mussen mittels eines Praprozessors in Java Quelltext transformiert werden die SQLJ Syntax wird von vielen Entwicklungsumgebungen nicht erkannt SQLJ wird durch gangige Persistenz Frameworks wie Hibernate nicht unterstutzt Der Praprozessor versteht Stand Anfang 2006 noch keine Elemente der Java Syntax die mit den Versionen 1 4 assert und 5 0 Generische Typen Extended For Loop u a eingefuhrt wurden Der Praprozessor ladt unter Umstanden Klassen von denen die zu ubersetzende Klasse abhangt Dadurch werden ggf Klasseninitialisierer ausgefuhrt was u U Nebenwirkungen auslost oder die Ubersetzungszeit verlangert Beispiele und Vergleich mit JDBC BearbeitenDie folgenden Beispiele vergleichen SQLJ Syntax mit JDBC Aufrufen JDBC SQLJAbfragePreparedStatement stmt conn prepareStatement SELECT LASTNAME FIRSTNAME SALARY FROM DSN8710 EMP WHERE SALARY BETWEEN AND stmt setBigDecimal 1 min stmt setBigDecimal 2 max ResultSet rs stmt executeQuery while rs next lastname rs getString 1 firstname rs getString 2 salary rs getBigDecimal 3 Zeile drucken rs close stmt close sql private static iterator EmployeeIterator String String BigDecimal EmployeeIterator iter sql ctx iter SELECT LASTNAME FIRSTNME SALARY FROM DSN8710 EMP WHERE SALARY BETWEEN min AND max while true sql FETCH iter INTO lastname firstname salary if iter endFetch break Zeile drucken iter close Abfrage die genau eine Zeile liefertPreparedStatement stmt conn prepareStatement SELECT MAX SALARY AVG SALARY FROM DSN8710 EMP rs statement executeQuery if rs next Fehler nichts gefunden maxSalary rs getBigDecimal 1 avgSalary rs getBigDecimal 2 if rs next Fehler mehr als ein Treffer rs close stmt close sql ctx SELECT MAX SALARY AVG SALARY INTO maxSalary avgSalary FROM DSN8710 EMP INSERTPreparedStatement stmt conn prepareStatement INSERT INTO DSN8710 EMP EMPNO FIRSTNME MIDINIT LASTNAME HIREDATE SALARY VALUES CURRENT DATE stmt setString 1 empno stmt setString 2 firstname stmt setString 3 midinit stmt setString 4 lastname stmt setBigDecimal 5 salary stmt executeUpdate stmt close sql ctx INSERT INTO DSN8710 EMP EMPNO FIRSTNME MIDINIT LASTNAME HIREDATE SALARY VALUES empno firstname midinit lastname CURRENT DATE salary Weblinks BearbeitenIBM Redbook DB2 for z OS and OS 390 Ready for Java Abgerufen von https de wikipedia org w index php title SQLJ amp oldid 238531369