INSERT Vector

Baste

Mitglied
Hi Leute.
Ich erzeuge einen Vector. In den Vector lese ich eine CSV-Datei ein (alle Zeilen und Spalten) und gebe alle Daten in einer Tabelle aus.
Hier mein
Code:
	private TableModel parseCSVAndCreateTableModel(File file) {

		Vector v = new Vector();
		BufferedReader br = null;
		try {
			br = new BufferedReader(new FileReader(file));

			// Überschriften stehen in erster Zeile
			String[] rowItems = br.readLine().split(";");
			Vector header = new Vector(Arrays.asList(rowItems));
			while (br.ready()) {
				rowItems = br.readLine().split(";");
				v.add(new Vector(Arrays.asList(rowItems)));
			}
			DefaultTableModel model = new DefaultTableModel(v, header);
			table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
			return model;

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		return null;
	}

Nun möchte ich, nachdem ich die Daten bearbeitet hab, den Vector in eine MySQL DB importieren. Und hier hab ich keine so richtige Idee wie das statement aussehen soll.
Hätte da jemand ne Idee? Danke.

Code:
Statement stmt = conn.createStatement();
String sql = "INSERT INTO ....";
int anzahl = stmt.executeUpdate(sql);
 
Hi!

Phu ... gute Frage. Spontan würde ich mal sagen, nicht viel drüber nachgedacht und ich nehme an, deine Tabelle sieht für jeden Eintrag eine Spalte vor, mach das ganze über eine for-Schleife, und füg jedes Element einzeln ein ... oder noch besser, über einen Iterator des Vectors.

Wie gesagt, nur eine Spontanidee. Ich hoffe ich hab deine Frage richtig verstanden :p

Gruß
TOM
 
Hi Tom.
Jap, hast meine Frage richtig verstanden. ;)
Oder wäre es einfacher die komplett gefüllte JTable in meine DB zu importieren?
 
Hm ... ich weiß nicht, wenn du nur spezifische Daten aus der Table brauchst, wäre es Overhead alles zu kopieren denk ich mal, oder? Die Frage ist natürlich wie deine DB so aufgebaut ist. Hatte ich recht mit dem, dass für jeden JTable-Eintrag (Spalte) eine eigene Spalte in der DB-Tabelle existiert?

TOM
 
Ja für jede Spalte in der JTable existiert in der DB eine Spalte. (Im CSV-File 10 Spalten --> werden in die 10 Spalten der JTable eingelesen und diese 10 Spalten sollen nun in die DB importiert werden) Ne Idee?
 
Mal nebenbei, das Einlesen von Platte klappt, soll aber eben nicht das Ziel sein. ;)

Code:
Statement stmt = conn.createStatement();
String sql = "LOAD DATA LOCAL INFILE 'd:/Mappe4.csv' INTO TABLE `test` FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n' ";
rs = stmt.executeQuery(sql);
 
Jo, also wenns zweckmässig ist, würde ich schon die ganze JTable in die DB kopieren. Zu deinem Statement ... uuuh ... da hast mich am falschen Fuß erwischt, ich hab leider noch noch nicht soviel mit SQL und Java zu tun gehabt. Aber die Syntax ... hm ... is nicht wirklich SQL, oder (wenn ich falsch lieg, verweis ich auf den Vorgänger dieses Satezs :-) ). Du versucht da ein File direkt einzulesen? Wenn das gehen würde, wozu brauchst du dann noch die JTable? Wenn das wirklich geht, also du das File direkt in die DB spielen kannst, per SQL, dann exportier doch einfach die JTable in ein entsprechendes File, und benutz den Befehl den du grad angegeben hast ... . Nur ne Idee, HIER bin ich mir wirklich nicht sicher, ob ich die Frage richtig verstanden hab :-)

Gruß
TOM
 
Mit
Code:
"LOAD DATA LOCAL INFILE 'd:/Mappe4.csv' INTO TABLE `test` FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n' ";
lädst du das angegebene File (in meinem Fall Mappe4.csv) von der Platte in die entsprechende Table (bei mir test). Außerdem definierst du wie die Spalten und so getrennt werden sollen, z.B. mit Semikolon.
 
Zurück