tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1477
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    marcel_sana marcel_sana ist offline Mitglied
    Registriert seit
    Jul 2004
    Beiträge
    10
    Hallo,

    ich soll ein Program coden, welches *.java files auf SQL Statements durchsucht und dann testet ob es die Tebellen und Spalten auch gibt, auf deutsch ob die Abfrage funktioniert.

    Als erstes, gibt es sowas schon ?
    Wenn nicht dann die nächsten Fragen.

    1. Ein einzeilen Statement kann ich ohne Probleme auslesen, nur wie kann ich erkännen das
    es ein mehrzeiliges statement ist ?

    2. Habt ihr ansatzpunkte wie ich dann das Statement auseinander nehemen kann?

    Ich würde es sonnst duch die zerlegung mit Substring machen.

    Für jede Idee oder anregung wäre ich dankbar, deswegen schon mal Danke für eure Mühen.

    Grüße Marcel
     

  2. #2
    Avatar von schnuffie
    schnuffie schnuffie ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Ober-Roden (Hessen)
    Beiträge
    725
    Du hast schon recht, ein einzeiliges Statement ist leicht zu erkennen. Sind die Statements (z.B. wie bei mir, da ich viel mit StringBuffer + append arbeite) aber auf etliche Zeilen verteilt, bleibt nur das Verwenden von Start- und End-Marken. Bei vorhandenen Java-Dateien könntest Du allerdings nur alle Strings suchen und der Reihe nach einem StringBuffer hinzufügen. Dabei gibt's auch Probleme:
    - nicht jeder String gehört zu einem Statement
    - nicht jedes Statement muß ein String sein (Verwendung von Methodenparametern z.B.)

    Mir ist nichts Sinnvolles aus dem Internet bekannt, was Dein Problem optimal umsetzen könnte.

    Das Problem ist ziemlich schlecht so lösbar:
    Ich würde die vorhandenen Java-Dateien in "mühevoller" Kleinarbeit mit den Start- und Ende-Marken versehen und neue Java-Klassen gleich so schreiben. Damit sind Start und Ende bekannt und Du kannst den Quellcode durchlaufen.

    Das Problem ist komfortabler so lösbar:
    Ich würde eine Methode schreiben, die per Methoden-Parameter das Statement übergeben bekommt - somit ist klar, was das Statement ist.

    Das Testen, ob ein Statement funktioniert geht z.B. bei Oracle recht einfach:
    Code :
    1
    
    desc xxxxxx
    liefert:
    Code :
    1
    2
    3
    4
    
    Name                                     Null?  Typ
    ----------------------------------------- -------- ----------------------------
    KEY                                  NOT NULL VARCHAR2(10)
    VALUE                                            VARCHAR2(100)

    Somit kannst Du vor dem Ausführen prüfen, ob es eine solche Tabelle mit diesen Spalten überhaupt gibt.
     
    CU schnuffie

    Fragliche Fragen stellende Fragensteller sind für verantwortungslose Antworten antwortender verantwortlicher Antworter selbst verantwortlich.

  3. #3
    marcel_sana marcel_sana ist offline Mitglied
    Registriert seit
    Jul 2004
    Beiträge
    10
    @schnuffie Du hast recht, es ist ein sch... Problem alle Statements im Code zu finden.
    Einzeilige und Mehrzeilige sind leicht, auch der vergleich mit der Datenbank klappt.
    Nur eben die mit StringBuffer.

    Den Code zu durchforsten ist sehr müsählig, da ich ihn übernommen habe und es nicht bloß zwanzig Klassen sind.

    Ich habe ein paar Ideen, vileicht könnte mir da jemand beim weiter denken helfen.
    Ich arbeite mit JBuilder. Wenn ich nun die API anzapfe und mir im Debugmodus alle StringBuffer auf Statements durchsuche.

    Geht das, kennt sich jemand aus oder weis wo ich infos zur API finde?

    Oder, es gibt doch auch Tools wie PMD oder FindBugs. Kann man da sich mit reinklinken?
    Haben die eine API?

    Ich danke Euch ...

    Ich bin für jede Idee offen, auch wenn sie noch nicht zuende gedacht ist. Danke!
     

  4. #4
    Avatar von schnuffie
    schnuffie schnuffie ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Ober-Roden (Hessen)
    Beiträge
    725
    Mit dem Debugging ist das auch nicht einfacher. Notfalls könntest Du den Text nach " durchsuchen, ob Dich das aber schneller zum Ziel bringt?

    Wie sieht's aus mit DAO-Pattern?
    Du könntest den ganzen SQL-"Quatsch" aus den Klassen entfernen und eine neue Klasse schreiben, die vielleicht im 1. Step nur eine einzige Methode besitzt: Parameter-Übergabe = ein Statement, return-Wert = ResultSet.

    Jeden gefundenen String prüfst Du auf Statement, wenn ja, ersetzt Du das mit dem Methoden-Aufruf Deines einfachen DAOs.
     
    CU schnuffie

    Fragliche Fragen stellende Fragensteller sind für verantwortungslose Antworten antwortender verantwortlicher Antworter selbst verantwortlich.

Ähnliche Themen

  1. SessionID auf Gültigkeit prüfen
    Von Friesi im Forum PHP
    Antworten: 5
    Letzter Beitrag: 07.04.06, 00:21
  2. Session auf Gültigkeit prüfen
    Von Der nette Mann im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 1
    Letzter Beitrag: 18.12.05, 12:31
  3. Auf gültigkeit prüfen?! (Anfänger)
    Von Ultraflip im Forum PHP
    Antworten: 2
    Letzter Beitrag: 23.01.05, 19:37
  4. Hexcode auf gültigkeit prüfen
    Von asmodis! im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 21.11.03, 15:29