Autor Beitrag
DennisXX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133



BeitragVerfasst: Sa 13.08.11 19:54 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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:
www.codeproject.com/...tnet/SQL_parser.aspx (jedoch nur WHERE und ORDER BY)

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

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

Und dann gibt es noch www.antlr.org/ (eine allgemeine Parser-Komponente), wo es verschiedene Grammatiken zum Download gibt: 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. stackoverflow.com/qu...validate-sql-scripts (besonders der Beitrag mit dem TSql100Parser scheint auch sehr interessant zu sein!!!)

Welches Datenbanksystem benutzt du denn?
DennisXX Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133



BeitragVerfasst: So 14.08.11 09:08 
Hi Folks !

Thanks for that answering !!!!

Ich nutze den MS SQL Server 2008 von Microsoft.

Greetz
Dennis
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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...)