Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Java > Allgemeine Java-Programmierung > sql-scripte einlesen und verarbeiten (mysql)
Antwort
 
Themen-Optionen
Alt 24.04.2005, 13:49   Nach oben    #1
javaphob
Gast
 
Beiträge: n/a
Standard sql-scripte einlesen und verarbeiten (mysql)

Hi zusammen, stehe gerade vor einem kleinen Problem und brauche Rat.



zunächst einmal DB-Anbindungen passen und sind getestet. Ziel war es mehrzeilige SQL-Anweisungen einzulesen und zeile für zeile abzuarbeiten.

das sieht so aus:





Hier der CODE:



void values_actionPerformed(ActionEvent e) {



// das file parsen

String str_insert_stmt ="";

// wir lesen das File zeilenweise ein, voraussetzung: ein Statement in

// einer Zeile, wenn meherere drin sind: Tokenizer

// file muss so heissen und im richtigen pfad liegen (classes/ Project)



try {



BufferedReader reader = new BufferedReader(new FileReader("ins.sql"));



String one_line_stmt = null;



while((one_line_stmt = reader.readLine())!= null) {



str_insert_stmt += one_line_stmt;



// debug



System.out.println(str_insert_stmt);

}

}



catch (Exception exc) {



jTextArea1.setText("EXCEPTION while reading sql File insert.sql, Message: \n" +



exc.getMessage() );

}



try {



Statement stmt1 = this.database1.getJdbcConnection().



createStatement();



boolean done = stmt1.execute(str_insert_stmt);



// feld leer machen



jTextArea1.setText("");



// db meldung ausgeben



if (done) jTextArea1.setText("Insert successfull ");



else jTextArea1.setText("Error while inserting");



}



catch (Exception exc) {



// feld leer machen



jTextArea1.setText("");



//Exception ausgeben



jTextArea1.setText("EXCEPTION while executing SQL statement, Message: \n" +



exc.getMessage() );



}







}





__________________________________________________ _______________________

So sieht das Scriptfile aus (ins.sql)

INSERT INTO sas VALUES ('1001','DVD','Lord','Lord of the Rings II','D',16,50)



INSERT INTO sas VALUES ('1002','DVD','Avia','Aviator','D',20,1







Und hier das was der Java draus macht (JBuilder Meldungen



INSERT INTO sas VALUES ('1001','DVD','Lord','Lord of the Rings II','D',16,50)



INSERT INTO sas VALUES ('1001','DVD','Lord','Lord of the Rings II','D',16,50)INSERT INTO sas VALUES ('1002','DVD','Avia','Aviator','D',20,1



Begrenze ich die Statements mit ; ..gleiches in Grün nur eben mit ; dahinter..



gibt natürlich nen SQL-Syntaxfehler zurück..



thx in advance



 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 24.04.2005, 22:19   Nach oben    #2
sparrow
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 567
Standard

Also wenn ich das richtig verstanden habe versuchst du gaaanz viele SQL-Statements direkt aus einem Text-File lesen und direkt in einem Rutsch von Java an die Datenbankl schicken lassen möchtest.

Das Vorgehen würde ich vermeiden.
Zum einen weiß ich nicht ob Java das überhauüt so kann (habs vorher noch nie probiert), zum anderen entgehen dir garantiert datensätzer in denen ein Fehler auftritt.
Ich würde an deiner Stelle so vorgehen:

Les die Textdatei Zeile für Zeile ein und verpack die Strings in ein Array bzw. einen Vector.

Anschließend läßt du in einer einfachen Schleife Statement für Statement an die Datenbanl senden.

Wahrscheinlich dauert das länger als deine Mehthode, dafür kannst du dir aber ausgeben lassen wenn eine Exceptionen bei einem bestimmten Datensatz auftritt.

Gruß
Sparrow
sparrow ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 25.04.2005, 10:59   Nach oben    #3
`B
Benutzer
 
Benutzerbild von `B
 
Registriert seit: 05.07.2004
Beiträge: 95
Standard

also ich würde das in etwa so lösen ... hab deinen Code mal als Grundlage genommen und ein wenig erweitert ... ich kenne mich allerdings nicht mit den SQL - Befehlen in Java aus, nur in PHP.

void values_actionPerformed(ActionEvent e) {
// Dateiname der Datei wo die Anweisungen drin sind
String lSQL_Anweisungen = "foo.txt";
// Vektor der alle Anweisungen enthält
Vector lListe;

// Befehle einlesen
LineNumberReader f;
try {
f = new LineNumberReader(new FileReader(lSQL_Anweisungen);
while ( (line = f.readLine()) != null) {
// trim(); damit leerzeichen entfernt werden
lListe.addElement(line.trim());
}
f.close();
}
catch ( IOException e ) {
jTextArea1.setText("EXCEPTION while reading sql File insert.sql, Message: \n" + e.getMessage() );
}
// Debugausgabe
for (int i=0; i<lListe.size(); i++) {
System.out.println((String)lListe.elementAt(i));
}
// SQL-Befehle an den Server senden
for (int i=0; i<lListe.size(); ++) {
String sql_anweisung = (String)lListe.elementAt(i);
try {
Statement stmt1 = this.database1.getJdbcConnection().
createStatement();
boolean done = stmt1.execute(sql_anweisung);

// feld leer machen
jTextArea1.setText("");
// db meldung ausgeben
if (done) {
jTextArea1.setText("Command successfull ");
} else {
jTextArea1.setText("Error, command not successfull");
}
} catch (Exception e) {
// feld leer machen
jTextArea1.setText("");
//Exception ausgeben
jTextArea1.setText("EXCEPTION while executing SQL statement, Message: \n" + e.getMessage() );
}
}
}

Liebe Grüße

Florian

P.S.: im anhang findet sich eine txt - Datei welche auch ordentlich eingerückt ist, damit man den Source besser lesen kann.
Angehängte Dateien
Dateityp: txt code.txt (1,5 KB, 4x aufgerufen)
__________________
`B ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Sql Datei einlesen? heohni PHP-Programmierung 5 01.10.2006 19:16
[Linux] LAMP Tutorial - Installation von Apache, MySQL und PHP unter Linux Corvin Tutorials 6 17.04.2006 22:13
MySQL 5.1 kommt in die Beta-Phase Ben Nachrichten 1 02.03.2006 14:31


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:34 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44