Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Frage zu Abspeicherung von Daten in einer Datenbank


DennisXX - Sa 13.08.11 19:54
Titel: Frage zu Abspeicherung von Daten in einer Datenbank
Hallo Leute !

Ich habe noch einmal eine Frage an euch. Ich plane, dass die Benutzer meiner Software über ein Textfeld auf der Benutzeroberfläche SQL Statements eingeben können und das diese dann in einer Datenbanktabelle als Textstring abgespeichert werden.

Diese Befehle können so komplex sein, wie man lustig ist. In erster Instanz geht es erst einmal nur darum, diese Befehle in einer Datenbank abzulegen, aus der man sie später wieder bequem laden kann. Ob das nun sinnig ist oder nciht, sei erstmal dahingestellt.

Besteht irgendeine Möglichkeit, bereits im Textfeld zu überprüfen, ob es sich bei der Eingabe des Benutzers um einen gültigen SQL Befehl handelt oder nicht? Also ob der Syntax halbwegs passt und semantisch korrekt ist? Müsste man ein solches Vorhaben evtl. selbst mühselig zu Fuß porgrammieren?

Viele Grüße
Dennis


Th69 - Sa 13.08.11 20:34

Hello again Dennis,

im .NET direkt eingebaut gibt es keinen SQL-Parser.
Aber im Internet mittels "C# SQL Parser" habe ich folgende Implementierung gefunden:
http://www.codeproject.com/KB/dotnet/SQL_parser.aspx (jedoch nur WHERE und ORDER BY)

Verwiesen wird auch immer wieder auf http://www.codeproject.com/KB/database/sharphsql.aspx
Jedoch weiß ich nicht, ob der Source-Code dabei ist...

Kommerziell gibt es noch: http://www.sqlparser.com/sql-parser-dotnet.php

Und dann gibt es noch http://www.antlr.org/ (eine allgemeine Parser-Komponente), wo es verschiedene Grammatiken zum Download gibt: http://www.antlr.org/grammar/list (mehrere SQL Varianten sind dabei)

Einige Datenbanken unterstützen auch das Abschicken eines SQL-Befehls, ohne ihn auszuführen, sondern nur um ihn zu parsen. Beim MS SQL Server muß man "SET NOEXEC ON" vorher angeben, s.a. http://stackoverflow.com/questions/3276035/code-to-validate-sql-scripts (besonders der Beitrag mit dem TSql100Parser [http://msdn.microsoft.com/de-de/library/microsoft.data.schema.scriptdom.sql.tsql100parser.aspx] scheint auch sehr interessant zu sein!!!)

Welches Datenbanksystem benutzt du denn?


DennisXX - So 14.08.11 09:08

Hi Folks !

Thanks for that answering !!!!

Ich nutze den MS SQL Server 2008 von Microsoft.

Greetz
Dennis


Th69 - So 14.08.11 09:26

Guten Morgen Dennis,

dann passt ja mein letzter Vorschlag perfekt für dich.
Es wäre schön, wenn du mir dann Feedback geben könntest, wie gut das funktioniert.
(auf der Arbeit verwenden wir auch den MS SQL Server 2008 - aber dort habe ich nicht soviel Zeit immer alles zu testen...)