[Erledigt] csv Datenbank

ja das ist deine Datei die Deppen die die erstellt haben haben einfach Scheiße gebaut :wink:
entweder du löscht die 1. Zeile von Hand oder du fügst reader.readRecord(); vor dem readHeaders ein

Danke!!! Also lag das an dieser ***** Datei, dass bei mir nichts geklappt hat, nichtmal System.out.println(). Der CSV Reader glaub ja, dass die erste Zeile die Felder sind, an dennen er sich orientieren muss und da dort Kommentar steht, klappt das nicht.

So ich habe das Programm grafisch gemacht und jetzt habe ich ein Problem.
Ich habe ein TextFeld, ein Button und ein TextArea Feld wo das Ergebnis eingezeigt werden soll. Es funktioniert auch. Das Problem ist aber jetzt, dass ein Interper bzw Name mehrmals in der Datei steht und ich möchte, dass ich im TextFeld nicht nur das erste Ergebnis sehe, sondern alle. Wegen break; sehe ich nur das erste Ergebnis, wenn ich break rausnehme, sehe ich dann das letze. Wie kann man das machen?

Hier mein Code

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import com.csvreader.CsvReader;
public class Main extends JFrame{
	
	private JPanel panel_links, panel_rechts;
	private JTextField field_suche;
	private JButton button_suche;
	private JTextArea field_ergebnis;
	private String c_int, c_int_bem, c_tit, c_jahr, c_bem, o_int, o_int_bem, o_tit, o_jahr, o_bem, art, erf;
	
	public Main() {
		setSize(320, 300);
		setResizable(false);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLayout(new BorderLayout());
		
		panel_links = new JPanel();
		panel_rechts = new JPanel();
		field_suche = new JTextField();
		button_suche = new JButton("Suchen");
		field_ergebnis = new JTextArea(10,20);
		
		button_suche.addActionListener(new buttonListener());
		field_suche.setColumns(20);
		field_ergebnis.setEditable(false);
		
		add(panel_links, BorderLayout.WEST);
		add(panel_rechts, BorderLayout.SOUTH);
		
		panel_links.add(field_suche);
		panel_links.add(button_suche);
		panel_rechts.add(field_ergebnis);
	}
	

	
	public static void main(String[] args) throws IOException  {
		
		new Main().setVisible(true);
		

	}
	class buttonListener implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			try {
					
				CsvReader reader = new CsvReader("datenbank.csv",';');
				
				reader.readHeaders();
				
				while(reader.readRecord())    {
					
					c_int = reader.get("Cover-Interpret");
					
					if(field_suche.getText().equals(c_int))      {
						c_int_bem = (reader.get("CV-Interpret-Bemerkung"));
						c_tit =		(reader.get("Cover-Titel"));
						c_jahr =	(reader.get("CV-Jahr"));
						c_bem =		(reader.get("Cover-Bemerkung"));
						o_int =		(reader.get("Original-Interpret"));
						o_int_bem =	(reader.get("OV-Interpret-Bemerkung"));
						o_tit = 	(reader.get("Original-Titel"));
						o_jahr =	(reader.get("OV-Jahr"));
						o_bem =		(reader.get("Original-Bemerkung"));
						art = 		(reader.get("Art"));
						erf = 		(reader.get("Erfassung"));
						
						field_ergebnis.setText("
"+c_int+"
"+c_int_bem+"
"+c_tit+"
"+c_jahr+"
"+c_bem+"
"
+o_int+"
"+o_int_bem+"
"+o_tit+"
"+o_jahr+"
"+art+"
"+erf);
						break;
						}
				}
				reader.close();
			} catch (Exception e2) {
				// TODO: handle exception
			}
		}
	}
}

Danke

mach mal das hier

field_ergebnis.setText(field_ergebnis.getText()+"
"+c_int+"
"+c_int_bem+"
"+c_tit+"
"+c_jahr+"
"+c_bem+"
"
+o_int+"
"+o_int_bem+"
"+o_tit+"
"+o_jahr+"
"+art+"
"+erf);

Ok scheint zu funktionieren :D, muss ich das verstehen wieso man 2x setText macht?
break; rauszunehmen war richtig oder?

Noch ne Frage, ich habe JTextArea zu TextArea(AWT) geändert, da die AWT automatisch Scrollbalken hat, wieso ist das bei Swings nicht so? Muss man dort etwas zusätzlich machen?

Danke

wieso 2x setText?
ganz einfach in Swing musst du immer eine JScrollPane benutzen

Achso ok, ich teste dann JScrollPane dann später.

Ups da ist ja zuerst setText und dann getText, habe 2x get gelesen. Aber wie bist du nur drauf gekommen :smiley: Bzw wieso muss man das so machen?

na was macht setText?
Das setzt den Text den du mitgibst, dadurch wird der alte überschrieben :wink:

Achso, ich setze Text und hole Text und dann mache ich das so lange bis kein Text mehr kommt und dadurch geht der Text nicht veloren… Du mit deinen genialen Ideen :wink: ich will das auch können :smiley: bzw. solche Ideen haben, naja denke mir fehlt einfach gaaaaaaaaaaaanz viel Erfahrung noch.

abgesehn dass man das ganze eleganter und oopiger loesen koennte, was aber jetzt mal egal ist…

bitte niemals swing und awt mischen, das kann zum teil zu unschoenen nebeneffekten fuehren… also entweder das eine oder das andere !