Textfragmente aus Quellcode lesen und abspeichern

Senf

Mitglied
Hallo zusammen,

weiss nicht, ob das ein "Anfänger-Thema" ist, aber ich bin jedenfall Anfänger und darum schrieb ich das mal hier rein..

Also, ich möchte bestimmte Textfragmente aus einem Quellcode auslesen (und diesen dann in einer MySql-Tabelle abspeichern, aber zu dem vielleicht später..).

Mit den regular Expressions kam ich dann auch soweit, dass ich alle Zeilen, die in einem bestimmten Muster im Code stehen, auslesen und dann abspeichern konnte (hier: ratings).

Nun habe ich aber das Problem, dass ich nun noch ein zweites Textfragment (hier: dates). Das klappt dann aber mit diesem Ansatz nicht, wieso? 🙂


Java:
  ArrayList<String> ratings = new ArrayList();
        ArrayList<String> dates = new ArrayList();

        //Find Rating & Date
        Pattern patt = Pattern.compile("-</span>.*<br />" + "</b>.*rn:");
        Matcher m = patt.matcher(response);

        while (m.find()) {

            String rating = "";
            String date = "";

            int start = m.start(0);
            int end = m.end(0);
            
            String foundResponse = response.substring(start, end);

            // Ratings
            String[] Tmp = foundResponse.split("-</span> ");
            String[] Tmp2 = Tmp[1].split("<br />");

            rating = Tmp2[0];
            rating = rating.replace("'", "");
            ratings.add(rating);

           // Dates
            Tmp = foundResponse.split("</b>");
            Tmp2 = Tmp[1].split("*rn:");

            date = Tmp2[0];
            date = rating.replace("'", "");
            dates.add(date);


        //Save Rating&Date to DB +++++++++++++++++++++++++++++++++

            String treiber = null, DbUrl = null;
            treiber = "org.gjt.mm.mysql.Driver";
            DbUrl = "jdbc:mysql://localhost:3306/ratings";

            Class.forName(treiber).newInstance();
            Connection cn = DriverManager.getConnection(DbUrl, "user1", "pass1");
            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

            try {
                java.sql.Statement st = cn.createStatement();
                String query = "INSERT INTO booking (datum,bewertung) VALUES ( '"+date+"' , '" +rating+ "' )";
                st.executeUpdate(query);

            } catch (Exception ex) {
                System.out.println(ex);
            }


        }
 
Was klappt nicht?
Das Schreiben in die Datenbank? Weil diese ein Datum erwartet date aber ein String ist?
Tipp: Benutzte PreparedStatements
 
ahhh ok das Problem ist der String.. also es sollte ein Datum à la "11.06.2010" ausgelesen werden. Sind ja nun aber nicht nur Zahlen, wie könnte ich das Problem bewältigen!?


EDIT// hmmm irgendwie bin ich mir noch nicht ganz sicher, kann ich in einem String nicht auch Zahlen haben? Muss ich doch irgendwie..?

Und noch eine Frage: Darf ich zwei Pattern/Matcher erstellen? So könnte das dann ja klappen, habe ich ausprobiert, hat dann aber nicht geklappt (vielleicht wegen dem String-Problem? )

Und NOCH eine Frage: Gibt es irgend eine Abfrage, wo ich z.B. sagen kann "suche mir nach dem muster xx-xx-xxxx" und es gibt mir dann alle diese (hier natürlich daten gemeint) raus?
 
Zuletzt bearbeitet:

Zurück
Oben