Forums Neueste Beiträge
 

Sql-Statement / Strings / Parsen

28/08/2008 - 22:26 von Oliver Denter | Report spam
Hi,

mein Problem hat nicht unbedingt mit c# und dem .NET-Framework zu tun,
aber ich dachte ich frage erstmal hier nach.

Ich habe eine Oberflàche mit der man sich ein Sql-Statement zusammen
klicken kann, das ganze speicher ich in einer Struktur um diese Struktur
zu speichern, an einer anderen Stelle zu laden um dann das Sql-Statement
wieder zu erzeugen.

Ich habe einen String, ein Sql-Statment, z.B
SELECT Adr.AdressenID FROM Adressen WITH(NOLOCK) AS Adr
INNER JOIN Anschriften AS Ans WITH(NOLOCK) ON Adr.AnschriftenID =
Ans.AnschriftenID
WHERE Adr.AdressenID > 0

Der Anwender hat nun zusàtzlich die Möglichkeit das Sql-Statement von
Hand zu veràndern.
z.B. in
SELECT Adr.AdressenID, Ans.AnschriftenID FROM Adressen WITH(NOLOCK) AS Adr
INNER JOIN Anschriften AS Ans WITH(NOLOCK) ON Adr.AnschriftenID =
Ans.AnschriftenID
WHERE Adr.AdressenID > 0
AND Ans.AnschriftenID > 0

Ich will nun die Unterschiede erkennen, diese ebenfalls speichern um am
Ende aus meiner Struktur und den, durch Anwender erfassten, Änderungen
das 2. Statement wieder erzeugen zu können.

Wie macht man das am besten?
Zuerst habe ich gedacht ich ersetze im zweiten Statement einfach alles
aus dem ersten um so die Differenz übrig zu behalten, ich weiss nicht
warum aber so richtig gefàllt mir das nicht.
Hat jemand von euch eine gute Idee dazu?

OD
 

Lesen sie die antworten

#1 Elmar Boye
30/08/2008 - 18:42 | Warnen spam
Hallo Oliver,

Oliver Denter schrieb:
Ich habe eine Oberflàche mit der man sich ein Sql-Statement zusammen
klicken kann, das ganze speicher ich in einer Struktur um diese Struktur
zu speichern, an einer anderen Stelle zu laden um dann das Sql-Statement
wieder zu erzeugen.

Ich will nun die Unterschiede erkennen, diese ebenfalls speichern um am
Ende aus meiner Struktur und den, durch Anwender erfassten, Änderungen
das 2. Statement wieder erzeugen zu können.

Wie macht man das am besten?
Zuerst habe ich gedacht ich ersetze im zweiten Statement einfach alles
aus dem ersten um so die Differenz übrig zu behalten, ich weiss nicht
warum aber so richtig gefàllt mir das nicht.



Würde mir auch nicht gefallen. Denn ein etwas versierter Anwender
kann Deine SQL Anweisung für alles mögliche mißbrauchen.

Was das Parsen angeht, ist der der SQL Server Parser seit kurzem öffentlich:
<URL:http://blogs.msdn.com/gertd/archive...s.aspx>

damit kannst Du zumindest die Validitàt der Anweisung prüfen
und die Ausgabe normalisieren.
Das der Anwender kein Update, Delete aus einem Select macht,
solltest Du allerdings ebenfalls prüfen.

Gruß Elmar

Ähnliche fragen