JTable Spaltenköpfe haben andere Namen wie in der DB

Status
Nicht offen für weitere Antworten.

Vril

Bekanntes Mitglied
Hallo,

habe ein großes Problem, und zwar soll ein JTable mit Daten aus einer Datenbank gefüllt werden (funktioniert super), jetzt möchte ich den Spaltenköpfen im JTable aber neue Namen geben und nichts funktioniert mehr bzw. folgender Fehler kommt: java.sql.SQLException: Column not found
Code:
class MyTableModel extends AbstractTableModel{
	
	private Connection con = null;
	Statement stmt = null;

	public void init(){
		
		String filename = MyMain.filename;
		try{
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			con = DriverManager.getConnection(
				"jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb);DBQ="+filename);
		} catch (Exception e){
			System.err.println(e);
			new DBfehltDialog();
			System.out.println("Gibts nicht!!!!");
		}
	}
	public String SpaltenNamen[] = {"Eigenschaft", "Wert", "Materialname", "Firmenname", "Materialfarbe", "Nr"};
						
	public Vector Spalten[] = {new Vector(), new Vector(), new Vector(), new Vector(), new Vector(), new Vector()};
	
	public void fetchData(){
		try{
			Statement stmt = con.createStatement();
			ResultSet rs = stmt.executeQuery ("SELECT Eigenschaft, Wert, Materialname, Firmenname, Materialfarbe, Nr FROM test");;
			
			while (rs.next()){
				
				for (int i = 0; i < SpaltenNamen.length; i++)
				  Spalten[i].addElement (rs.getString (SpaltenNamen[i]));
			}
			stmt.close();
		} catch (SQLException e){
			System.err.println("Was soll ich jetzt machen?");
			System.err.println(e);
			new DBfehltDialog();
		}
	}
	

		public String getColumnName(int colum){
		return SpaltenNamen[colum];
	}
	public int getColumnCount(){
		return SpaltenNamen.length-1; //-1 da die letzte Spalte PK, Nr, nicht angezeigt werden soll
	}
	public int getRowCount(){
		return Spalten[0].size();
	}
	public boolean isCellEditable(int row, int col){
		return false;
	}
	public Object getValueAt(int row, int col){
		return Spalten[col].elementAt(row);
	}
	public void setRowSelectionAllowed(boolean status){
		status = false;
	}
	public void setCellSelectionEnabled(boolean status){
		status = false;
		
	}
	public void setSelectionMode (int modus){
	setSelectionMode( ListSelectionModel.SINGLE_SELECTION );

	}
}
Jetzt würde ich gerne anstelle von
Code:
public String SpaltenNamen[] = {"Eigenschaft", "Wert", "Materialname", "Firmenname", "Materialfarbe", "Nr"};
z. B. neue Namen für die Spaltenköpfe im JTable vergeben, wenn ich das so mache bekomme ich die oben besagte Fehlermeldung:
Code:
public String SpaltenNamen[] = {"Species", "Value", "Materialname", "Company name", "Color", "No"};

Also muss anscheinend in der SELECT Anweisung und in SpaltenNamen[] jeweil der gleiche Wert/Name stehen?
Wie mache ich es das ich im JTable andere Spaltennamen vergebe?
 
Code:
class MyTableModel extends AbstractTableModel{ 
    
   private Connection con = null; 
   Statement stmt = null; 

   public void init(){ 
       
      String filename = MyMain.filename; 
      try{ 
         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
         con = DriverManager.getConnection( 
            "jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb);DBQ="+filename); 
      } catch (Exception e){ 
         System.err.println(e); 
         new DBfehltDialog(); 
         System.out.println("Gibts nicht!!!!"); 
      } 
   } 
   public String SpaltenNamen[] = {"Eigenschaft", "Wert", "Materialname", "Firmenname", "Materialfarbe", "Nr"}; 
   public Stirng Kartoffelsalat[] = {"Essig", "Kartoffeln", "Oel", "Zwiebeln", "Geschmacksverstärker", "Anzahl"};                   
   public Vector Spalten[] = {new Vector(), new Vector(), new Vector(), new Vector(), new Vector(), new Vector()}; 
    
   public void fetchData(){ 
      try{ 
         Statement stmt = con.createStatement(); 
         ResultSet rs = stmt.executeQuery ("SELECT Eigenschaft, Wert, Materialname, Firmenname, Materialfarbe, Nr FROM test");; 
          
         while (rs.next()){ 
             
            for (int i = 0; i < SpaltenNamen.length; i++) 
              Spalten[i].addElement (rs.getString (Kartoffelsalat[i])); 
         } 
         stmt.close(); 
      } catch (SQLException e){ 
         System.err.println("Was soll ich jetzt machen?"); 
         System.err.println(e); 
         new DBfehltDialog(); 
      } 
   } 
    

      public String getColumnName(int colum){ 
      return Kartoffelsalat[colum]; 
   } 
   public int getColumnCount(){ 
      return Kartoffelsalat.length-1; //-1 da die letzte Spalte PK, Nr, nicht angezeigt werden soll 
   } 
   public int getRowCount(){ 
      return Spalten[0].size(); 
   } 
   public boolean isCellEditable(int row, int col){ 
      return false; 
   } 
   public Object getValueAt(int row, int col){ 
      return Spalten[col].elementAt(row); 
   } 
   public void setRowSelectionAllowed(boolean status){ 
      status = false; 
   } 
   public void setCellSelectionEnabled(boolean status){ 
      status = false; 
       
   } 
   public void setSelectionMode (int modus){ 
   setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); 

   } 
}
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben