Aufbruch zu neuen Ufern: C# 3.0

Die Crux mit SQL und XML

LINQ steht für .Net Language Integrated Query. Gemeint ist damit die Möglichkeit, mit nativen C#- oder VB.Net-Sprachelementen Abfragen gegen relationale, XML-basierte oder auch völlig andere Datenquellen zu schreiben. Um die Tragweite von LINQ zu verstehen, muss man wissen, dass heutzutage die meisten Entwickler größerer Applikationen in zwei oder drei verschiedenen Welten zu Hause sein müssen:

  • Zunächst in der objektorientierten Welt ihrer Programmiersprache wie C#, C++ oder Java.

  • Dann in SQL, der allgemeinen Abfragesprache für relationale Datenbanken, um damit auf die in Oracle-, SQL-Server- oder DB2-Datenbanken abgelegten Informationen zuzugreifen.

  • Wer zudem noch gegen XML-basierte Datenspeicher arbeitet, muss auch noch XPath und XQuery beherrschen.

Problematisch daran ist vor allem, dass die SQL- oder XQuery-Ausdrücke einfach als Text-String in einem C#-Programm stehen. Der Compiler kann die Ausdrücke also weder parsen noch den Anwender bei der Entwicklung unterstützen. Der Test solcher Programme gestaltet sich daher meist mühsam und zeitaufwendig. Der Entwickler kann erst zur Laufzeit durch Fehlermeldungen der Datenbank sehen, ob die SQL-Befehle in seinem Code syntaktisch richtig sind.

Ein weiteres Problem besteht darin, dass die nativen Datentypen in den .NET-Programmiersprachen und die SQL-Datentypen verschieden sind. Parameter und Ergebnisse von SQL-Aufrufen muss das Programm daher oft erst passend umwandeln. Dies geht manchmal ganz einfach, erfordert bisweilen jedoch auch einigen Aufwand, um alle möglicherweise vorkommenden Fälle sauber abzubilden.