eigene sql-queries parsen

  • VB.NET

Es gibt 42 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    kannst du genauer beschreiben was du willst? O.o

    Ansonsten musst du dir vielleicht einen Interpreter schreiben, wenn ich es ansatzweise richtig verstehe... Dazu brauchst du dann deinen Input, Abfragen und Funktionen die anhand des Inputs gerufen werden... und evtl. RegEx
    RegEx wäre hier angebracht, um den Text zwischen den Apostrophen ausgelesen zu kriegen. Da mit Stringfunktionen rumzuhampeln ist hier Fummelarbeit.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    [VB 2008] RegEx Tutorial - Blutige Anfänger und Fortgeschrittene

    +Online Regex Tester ist relativ zielführend.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    such dir am besten mal nen Artikel über Interpreterbau raus, da dies ja schon eher an soetwas grenzt wenn nicht sogar voll zutrifft. Mit Regex alleine ist es hier garantiert nicht getan. Ohne Konzept wird das Vorhaben kläglich scheitern.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Natürlich wird er mit den Ergebnissen, die er aus Regex bekommt, auch später was anfangen müssen... kann er ja dann halt mit Streamreader/writer arbeiten oder was auch immer.

    @filmee24: Wer ist diresen? Achte bitte mal ein wenig auf Rechtschreibung. So, das man's versteht.

    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Hast du schonmal mit Sql gearbeitet?
    Da können queries rauskommen die verschachtelt, kompliziert, und sehr lang sind.
    Etwas in eine Datei schreiben ist danach der kleinste Aufwand. Erst musst du wissen was.
    Und wenn er von sql redet verstehe ich darunter, dass es nicht nur bei einfachen dingen wie "insert hallo" bleibt.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Hab hier mal ein kleines Beispiel zurechtgebastelt. Bitte erst verstehen, dann nutzen!

    Filtert aus

    Quellcode

    1. create 'file.txt'

    file.txt raus.

    VB.NET-Quellcode

    1. Dim Dateiname As String = Regex.Match(Command, "create '([^']+)").groups(1).value


    btw worum geht es hier jetzt? Willst du was in SQL machen oder komplett eigene, frei erfundene, wie SQL-Queries aussehende Kommandos parsen? Und wofür? Willst du selbst was machen, oder in der Datenbank was?
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    So wie ich das verstehe will er eine Art "SQL-Sprache" selbst nachbauen. Was bei so einfachen Sachen wie du gezeigt hast ne Arbeit von ein paar Zeilen ist wird das natürlich später relativ komplex.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Natürlich, mein Codeschnipsel war nur ein Beispiel, wie er das ganze grundsätzlich anpacken kann. Später muss er dann halt noch verschiedene Argumente kombinieren, Verschachtelungen bedenken, ungültige Syntax ablehnen, etc.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Ja, musste RegEx halt mehrmals drüberjagen, Command anpassen und das Ergebnis zur Weiterverarbeitung speichern. Die eigentlichen Kommandos musst du dann aber auch noch bedenken, denn vielleicht willst du die Datei ja löschen, oder verschieben, etc.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Da wirds kompliziert, denn hier musst du vielleicht beginnen, logisch zu prüfen. bei create wäre vllt. noch der Inhalt wichtig, bei einer Verschiebung noch der Zielpfad, während der Inhalt nicht bedacht werden muss.

    Hierfür kannst du verschiedene Klassen anlegen, welche du nach dem richtungsweisenden Parameter auslegst, für create z.B.

    VB.NET-Quellcode

    1. Public Class Create
    2. Public filename as String
    3. Public content as String
    4. End Class


    Kannste in ein Select Case packen, und die Werte, die in der Klasse vorhanden sind, ausführen (falls korrekt).

    Pseudo

    VB.NET-Quellcode

    1. Select Case Parameter
    2. Case Create
    3. Dim blubb as new Create
    4. blubb.filename = Regex(Filename)
    5. ...
    6. Prüfen(blubb) 'Richtigkeit prüfen
    7. Ausführen(blubb)
    8. Case Move
    9. ...
    10. Case Delete
    11. ...
    12. End Select


    Wobei das natürlich eine sehr einfache Variante ist, um nur ein Kommando auszuführen, also das

    Quellcode

    1. create 'file.txt' write 'bla' delete 'fileold.txt'

    geht hier nicht, da man sich nur nach einem (dem ersten, was auch immer) Kommando mit seinen Parametern richtet.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Lukas“ ()

    ähm, ihr redet jetzt schon 17 posts lang über "sql parsen", aber was soll das eiglich bedeuten?

    Parsen ist eine Umwandlung von üblicherweise string in einen anneren Typ. ZB Integer.Parse, Date.Parse und so Sachen.

    Man kann auch in komplexe Datenstrukturen parsen, das gibts auch.

    aber einfach so parsen ist Nonsens.
    wassn ein Syntax-Parser? Erstellt der nicht auch eine ziemlich komplexe Datenstruktur, die dann zB. von einem Interpreter weiterverarbeitet werden muß?

    Also um die Korrektheit von Sql zu checken wäre imo am einfachsten, die queries abzufahren und zu gucken, obne Exception kommt.
    Darauf wäredann wirklich Verlass.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()