# MySQL Table in Jtable integrieren



## mostwanted (31. Mai 2011)

Hello World

Ich verzweifle fast... Nachdem ich endlich den Datenbank-Connect erstellt und positiv getestet habe stehe ich schon wieder an. Mein Ziel: die Daten der SQL Tabelle im Jtable anzeigen. Mehr nicht.

Geht das überhaupt so wie ich das realisieren will?

In der SQL Tabelle gibt es idProduktausprägung, Bezeichnung, Preis und einen Fremdschlüssel. Anzeigen will ich die ersten drei.


```
/*
 * Bearbeitung.java

package Teileverwaltung;

import java.sql.*;

/**
 *
 * @author  __USER__
 */
public class Bearbeitung extends javax.swing.JFrame {

	private Connection mydbconn = null;   
	
	/** Creates new form Bearbeitung */
	public Bearbeitung() {
		
		initComponents();
		
		//DB Connection erstellen
		try {
			 String userName = "root";
			 String password = "root";
			 String url = "jdbc:mysql://localhost/mydb";
			 Class.forName("com.mysql.jdbc.Driver").newInstance();
			 this.mydbconn = DriverManager.getConnection(url, userName, password);
			 System.out.println("Database connection established");
			 } catch (Exception e) {
			   System.err.println("Cannot connect to database server ");
			   e.printStackTrace();
			 }
	}

	/** This method is called from within the constructor to
	 * initialize the form.
	 * WARNING: Do NOT modify this code. The content of this method is
	 * always regenerated by the Form Editor.
	 */
	//GEN-BEGIN:initComponents
	// <editor-fold defaultstate="collapsed" desc="Generated Code">
	private void initComponents() {

		jLabel1 = new javax.swing.JLabel();
		bt_abbrechen = new javax.swing.JButton();
		bt_ausführen = new javax.swing.JButton();
		jScrollPane1 = new javax.swing.JScrollPane();
		jTable1 = new javax.swing.JTable();

		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
		setTitle("Teileverwaltung");

		jLabel1.setText("Hier k\u00f6nnen Sie die Teile bearbeiten oder l\u00f6schen.");

		bt_abbrechen.setText("Abbrechen");
		bt_abbrechen.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				bt_abbrechenActionPerformed(evt);
			}
		});

		bt_ausführen.setText("Ausf\u00fchren");

		jTable1.setModel(new javax.swing.table.DefaultTableModel(
				new Object[][] { { null, null, null, null, null },
						{ null, null, null, null, null },
						{ null, null, null, null, null },
						{ null, null, null, null, null } }, new String[] {
						"id", "Bezeichnung", "Preis", "bearbeiten",
						"löschen" }) 
		
		String selectString = "select * from produktausprägung where Bezeichnung = '"
			 + this.txtBezeichnung.getText() + "'";
			 try {
			  Statement befehl = this.mydbConnection.createStatement();
			  ResultSet resultat = befehl.executeQuery(selectString);
			  int i = 0;
			  while (resultat.next()) {
			   i++;
			   if (i == 1) {
			    this.txtidProduktausprägung.setText(resultat.getString("id_idProduktausprägung"));
			    this.txtBezeichnung.setText(resultat.getString("Bezeichnung"));
			    this.txtPreis.setText(resultat.getString("Preis"));
			   }
			  }					
		
		{
			Class[] types = new Class[] { java.lang.Object.class,
					java.lang.Object.class, java.lang.Object.class,
					java.lang.Boolean.class, java.lang.Boolean.class };

			public Class getColumnClass(int columnIndex) {
				return types[columnIndex];
			}
		});
		jScrollPane1.setViewportView(jTable1);

		javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
				getContentPane());
		getContentPane().setLayout(layout);
		layout.setHorizontalGroup(layout
				.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(
						layout.createSequentialGroup()
								.addGroup(
										layout.createParallelGroup(
												javax.swing.GroupLayout.Alignment.TRAILING)
												.addGroup(
														layout.createSequentialGroup()
																.addGroup(
																		layout.createParallelGroup(
																				javax.swing.GroupLayout.Alignment.LEADING)
																				.addGroup(
																						layout.createSequentialGroup()
																								.addContainerGap()
																								.addComponent(
																										jLabel1)
																								.addPreferredGap(
																										javax.swing.LayoutStyle.ComponentPlacement.RELATED,
																										40,
																										Short.MAX_VALUE))
																				.addGroup(
																						javax.swing.GroupLayout.Alignment.TRAILING,
																						layout.createSequentialGroup()
																								.addContainerGap()
																								.addComponent(
																										bt_abbrechen)
																								.addGap(50,
																										50,
																										50)))
																.addPreferredGap(
																		javax.swing.LayoutStyle.ComponentPlacement.RELATED)
																.addComponent(
																		bt_ausführen)
																.addGap(12, 12,
																		12))
												.addGroup(
														javax.swing.GroupLayout.Alignment.LEADING,
														layout.createSequentialGroup()
																.addContainerGap()
																.addComponent(
																		jScrollPane1,
																		javax.swing.GroupLayout.PREFERRED_SIZE,
																		452,
																		javax.swing.GroupLayout.PREFERRED_SIZE)))
								.addContainerGap(26, Short.MAX_VALUE)));
		layout.setVerticalGroup(layout
				.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
				.addGroup(
						layout.createSequentialGroup()
								.addGap(36, 36, 36)
								.addComponent(jLabel1)
								.addGap(18, 18, 18)
								.addComponent(jScrollPane1,
										javax.swing.GroupLayout.PREFERRED_SIZE,
										93,
										javax.swing.GroupLayout.PREFERRED_SIZE)
								.addGap(63, 63, 63)
								.addGroup(
										layout.createParallelGroup(
												javax.swing.GroupLayout.Alignment.BASELINE)
												.addComponent(bt_abbrechen)
												.addComponent(bt_ausführen))
								.addGap(26, 26, 26)));

		pack();
	}// </editor-fold>
	//GEN-END:initComponents

	private void bt_abbrechenActionPerformed(java.awt.event.ActionEvent evt) {
		this.dispose();
	}

	/**
	 * @param args the command line arguments
	 */
	public static void main(String args[]) {
		java.awt.EventQueue.invokeLater(new Runnable() {
			public void run() {
				new Bearbeitung().setVisible(true);
			}
		});
	}

	//GEN-BEGIN:variables
	// Variables declaration - do not modify
	private javax.swing.JButton bt_abbrechen;
	private javax.swing.JButton bt_ausführen;
	private javax.swing.JLabel jLabel1;
	private javax.swing.JScrollPane jScrollPane1;
	private javax.swing.JTable jTable1;
	// End of variables declaration//GEN-END:variables

}
```

Vielen Dank für eure Feedbacks


----------



## Manuela (31. Mai 2011)

Hallo ich mache sowas immer  so:


```
Connection con = DBConnector.getInstance().getConnection();
   Statement stmt = con.createStatement();
 ResultSet r = stmt.stmt.executeQuery("SELECT * FROM ...);

int rows =0;


        while (r.next()) {
                tm.setRowCount(rows + 1);
                tm.setValueAt(r.getString("FLD_NAME"), rows, 0);
                tm.setValueAt(r.getString("FLD_VORNAME"), rows, 1);
                tm.setValueAt(r.getString("FLD_GEBURTSJAHR"), rows, 2);
                tm.setValueAt(r.getString("ID"), rows, 3);

                             rows++;
            }
```


----------



## mostwanted (31. Mai 2011)

Diese Angaben durch meine Abfrage unter dem Code des Jtables ersetzen? Oder ersetzt dieses Beispiel die ganze Tabelle?


----------



## Manuela (31. Mai 2011)

Hallo 
also als 1. 

```
unter deiner class legst du einen Tablemodel an
public class Bearbeitung extends  ...

  public DefaultTableModel tm;

   public Bearbeitung() {
        
        initComponents();

       tm = new DefaultTableModel(new String[]{"Na", "M", "Funktion", "Kostenträger"}, 1) {

            public Class getColumnClass(int columnIndex) {
                  switch (columnIndex) {                
                            case 1: return Integer.class;
                            case 2: return Double.class;
                    default:
                        return String.class;

                }
            }

            ;
        };

    jTable1.setModel(tm);
}
```

Hier wird die Tabelle geladen

```
public void laden() {
        try {
              tm.setRowCount(0);
            Connection con = DBConnector.getInstance().getConnection();
            Statement stmt = con.createStatement();
            int rows = 0;
            ResultSet r  = stmt.executeQuery("Select * from ...");


            }

            while (r.next()) {
                tm.setRowCount(rows + 1);
                tm.setValueAt(r.getString("FLD_NAME"), rows, 0);
                tm.setValueAt(r.getString("FLD_VORNAME"), rows, 1);
                tm.setValueAt(r.getString("FLD_GEBURTSJAHR"), rows, 2);
                tm.setValueAt(r.getString("ID"), rows, 3);

                //      //  //      System.out.println("Name : " + r.getString("FLD_NAME"));
                rows++;
            }
        } catch (SQLException ex) {
            Logger.getLogger(Patientsuche.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
```


----------



## mostwanted (31. Mai 2011)

mhm. Habe so das Gefühl bastle immer tiefer im Quellcode herum aber funktionieren tut gar nichts.


----------



## Manuela (31. Mai 2011)

Hallo,
ich erkenne nicht dein problem,

ich hatte Dir doch gezeigt wie du es machen musst.

Zeig mir mal deinen code.

Gruss Manuela


----------



## mostwanted (31. Mai 2011)

Zu beachten gilt noch das ich das GUI mit Matisse Form gemacht habe (boolean für löschen und ändern). Das ganze soll eine Artikelverwaltung geben.

momentan sieht es so aus:


```
/*
 * Bearbeitung.java
 
package Teileverwaltung;
 
import java.sql.*;
 
/**
 *
 * @author  __USER__
 */
public class CopyOfBearbeitung extends javax.swing.JFrame {
 
    private Connection mydbconn = null;   
    
    /** Creates new form Bearbeitung */
    public CopyOfBearbeitung() {
        
        initComponents();
       
        //DB Connection erstellen
        try {
             String userName = "root";
             String password = "root";
             String url = "jdbc:mysql://localhost/mydb";
             Class.forName("com.mysql.jdbc.Driver").newInstance();
             this.mydbconn = DriverManager.getConnection(url, userName, password);
             System.out.println("Database connection established");
             } catch (Exception e) {
               System.err.println("Cannot connect to database server ");
               e.printStackTrace();
             }
    }
 
    public DefaultTableModel tm;
    
    public Bearbeitung() {
         
         initComponents();
  
        tm = new DefaultTableModel(new String[]{"ID", "Bezeichnung", "Preis",}, 1) {
  
             public Class getColumnClass(int columnIndex) {
                   switch (columnIndex) {                
                             case 1: return Integer.class;
                             case 2: return Double.class;
                     default:
                         return String.class;
  
                 }
             }
  
             ;
         };
  
     jTable1.setModel(tm);
 }
    
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    //GEN-BEGIN:initComponents
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
 
   
    private void initComponents() {
 
        jLabel1 = new javax.swing.JLabel();
        bt_abbrechen = new javax.swing.JButton();
        bt_ausführen = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
 
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Teileverwaltung");
 
        jLabel1.setText("Hier k\u00f6nnen Sie die Teile bearbeiten oder l\u00f6schen.");
 
        bt_abbrechen.setText("Abbrechen");
        bt_abbrechen.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bt_abbrechenActionPerformed(evt);
            }
        });
 
        bt_ausführen.setText("Ausf\u00fchren");
 
        jTable1.setModel(new javax.swing.table.DefaultTableModel(
                new Object[][] { { null, null, null, null, null },
                        { null, null, null, null, null },
                        { null, null, null, null, null },
                        { null, null, null, null, null } }, new String[] {
                        "id", "Bezeichnung", "Preis", "bearbeiten",
                        "löschen" }) 
        
        public void laden() {
            try {
                  tm.setRowCount(0);
                Connection con = DBConnector.getInstance().getConnection();
                Statement stmt = con.createStatement();
                int rows = 0;
                ResultSet r  = stmt.executeQuery("Select * from produkausprägung");
    
     
                }
     
                while (r.next()) {
                    tm.setRowCount(rows + 1);
                    tm.setValueAt(r.getString("idProduktausprägung"), rows, 0);
                    tm.setValueAt(r.getString("Bezeichnung"), rows, 1);
                    tm.setValueAt(r.getString("Preis"), rows, 2);
     
                    //      //  //      System.out.println("Name : " + r.getString("FLD_NAME"));
                    rows++;
            
            } catch (SQLException ex) {
                Logger.getLogger(Patientsuche.class.getName()).log(Level.SEVERE, null, ex);
            }
        }           
        
        {
            Class[] types = new Class[] { java.lang.Object.class,
                    java.lang.Object.class, java.lang.Object.class,
                    java.lang.Boolean.class, java.lang.Boolean.class };
 
            public Class getColumnClass(int columnIndex) {
                return types[columnIndex];
            }
        });
        jScrollPane1.setViewportView(jTable1);
 
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
                getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(
                        layout.createSequentialGroup()
                                .addGroup(
                                        layout.createParallelGroup(
                                                javax.swing.GroupLayout.Alignment.TRAILING)
                                                .addGroup(
                                                        layout.createSequentialGroup()
                                                                .addGroup(
                                                                        layout.createParallelGroup(
                                                                                javax.swing.GroupLayout.Alignment.LEADING)
                                                                                .addGroup(
                                                                                        layout.createSequentialGroup()
                                                                                                .addContainerGap()
                                                                                                .addComponent(
                                                                                                        jLabel1)
                                                                                                .addPreferredGap(
                                                                                                        javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                                                                                        40,
                                                                                                        Short.MAX_VALUE))
                                                                                .addGroup(
                                                                                        javax.swing.GroupLayout.Alignment.TRAILING,
                                                                                        layout.createSequentialGroup()
                                                                                                .addContainerGap()
                                                                                                .addComponent(
                                                                                                        bt_abbrechen)
                                                                                                .addGap(50,
                                                                                                        50,
                                                                                                        50)))
                                                                .addPreferredGap(
                                                                        javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                                .addComponent(
                                                                        bt_ausführen)
                                                                .addGap(12, 12,
                                                                        12))
                                                .addGroup(
                                                        javax.swing.GroupLayout.Alignment.LEADING,
                                                        layout.createSequentialGroup()
                                                                .addContainerGap()
                                                                .addComponent(
                                                                        jScrollPane1,
                                                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                                                        452,
                                                                        javax.swing.GroupLayout.PREFERRED_SIZE)))
                                .addContainerGap(26, Short.MAX_VALUE)));
        layout.setVerticalGroup(layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(
                        layout.createSequentialGroup()
                                .addGap(36, 36, 36)
                                .addComponent(jLabel1)
                                .addGap(18, 18, 18)
                                .addComponent(jScrollPane1,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        93,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(63, 63, 63)
                                .addGroup(
                                        layout.createParallelGroup(
                                                javax.swing.GroupLayout.Alignment.BASELINE)
                                                .addComponent(bt_abbrechen)
                                                .addComponent(bt_ausführen))
                                .addGap(26, 26, 26)));
 
        pack();
    }// </editor-fold>
    //GEN-END:initComponents
 
    private void bt_abbrechenActionPerformed(java.awt.event.ActionEvent evt) {
        this.dispose();
    }
 
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Bearbeitung().setVisible(true);
            }
        });
    }
 
    //GEN-BEGIN:variables
    // Variables declaration - do not modify
    private javax.swing.JButton bt_abbrechen;
    private javax.swing.JButton bt_ausführen;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration//GEN-END:variables
 
}
```


----------



## Manuela (31. Mai 2011)

Hallo,
ich habe es mit Netbeans gemacht.
1. habe ich nicht getestet.


```
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Test001.java
 *
 * Created on 31.05.2011, 16:59:46
 */



import com.mysql.jdbc.Statement;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.DefaultTableModel;


public class Test001 extends javax.swing.JFrame {
   public DefaultTableModel tm;
    /** Creates new form Test001 */
    public Test001() {
        initComponents();
               tm = new DefaultTableModel(new String[]{"Na", "M", "Funktion", "Kostenträger"}, 1) {
 
            public Class getColumnClass(int columnIndex) {
                  switch (columnIndex) {                
                            case 1: return Integer.class;
                            case 2: return Double.class;
                    default:
                        return String.class;
 
                }
            }
 
            ;
        };
 
    jTable1.setModel(tm);
    
     laden();
        
    }

       public void laden() {
        try {
              tm.setRowCount(0);
 DBConnector co1 = DBConnector.getInstance();
           co1.connect();
            Connection con = co1.getConnection();
            Statement stmt = con.createStatement();
            int rows = 0;
            ResultSet r  = stmt.executeQuery("Select * from ...");
 
 
            while (r.next()) {
                tm.setRowCount(rows + 1);
                tm.setValueAt(r.getString("FLD_NAME"), rows, 0);
                tm.setValueAt(r.getString("FLD_VORNAME"), rows, 1);
                tm.setValueAt(r.getString("FLD_GEBURTSJAHR"), rows, 2);
                tm.setValueAt(r.getString("ID"), rows, 3);
 
                //      //  //      System.out.println("Name : " + r.getString("FLD_NAME"));
                rows++;
            }
        } catch (SQLException ex) {
            Logger.getLogger(Test001.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jTextField1 = new javax.swing.JTextField();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setName("Form"); // NOI18N

        jPanel1.setName("jPanel1"); // NOI18N

        jPanel2.setName("jPanel2"); // NOI18N

        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(fragekatalog.FragekatalogApp.class).getContext().getResourceMap(Test001.class);
        jButton1.setText(resourceMap.getString("jButton1.text")); // NOI18N
        jButton1.setName("jButton1"); // NOI18N

        jButton2.setText(resourceMap.getString("jButton2.text")); // NOI18N
        jButton2.setName("jButton2"); // NOI18N

        jTextField1.setText(resourceMap.getString("jTextField1.text")); // NOI18N
        jTextField1.setName("jTextField1"); // NOI18N

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(33, 33, 33)
                .addComponent(jButton1)
                .addGap(18, 18, 18)
                .addComponent(jButton2)
                .addGap(41, 41, 41)
                .addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 399, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(26, 26, 26)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton1)
                    .addComponent(jButton2)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jTable1.setName("jTable1"); // NOI18N
        jScrollPane1.setViewportView(jTable1);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
                        .addGap(20, 20, 20)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 637, Short.MAX_VALUE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 462, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(28, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Test001().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration

}
```

und dann koppele deinen Datenbank connector aus.



```
public final class Connector {
   
    
    private Connection connection = null;
  
    private  static Connector uniqueInstance = null;
    private static final String treiber = "com.mysql.jdbc.Driver";
    
    public Connector() throws InstantiationException {
        try {
            try {
                Class.forName(treiber).newInstance();
            } catch (IllegalAccessException ex) {
                Logger.getLogger(Connector.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Connector.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
     /**************************************************
                Singleton Muster
   ***************************************************/
   public static Connector getInstance() {
        if (uniqueInstance == null) {
            try {
                uniqueInstance = new Connector();
            } catch (InstantiationException ex) {
                Logger.getLogger(Connector.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return uniqueInstance;
    }
    
     public Connection getConnection() {

          return connection;
    }


      public void connect() {
        try {
String userName = "root";
             String password = "root";
             String url = "jdbc:mysql://localhost/mydb";

   connection = (Connection) DriverManager.getConnection(url, userName, password);     

            }catch (SQLException e) {
             }

}
```


----------



## mostwanted (31. Mai 2011)

Erstmal Danke für deine schnellen Antworten. Leider klappt es nicht - wo ist den jetzt konkret der DB connect (Pw abfrage etc.)?
Wie erwähnt ich will "nur" den ganzen Inhalt einer Tabelle (ID, Bezeichnung, Preis) in einer Tabelle, die in einem GUI integriert ist, anzeigen.


----------



## Manuela (31. Mai 2011)

Hallo,
ich versuche es dir mal zu erklären.

1. Du muß auf die Datenbank einen Select (Resultset absetzen können).
   Dafür mußt du einen einen mysql-Connector haben (ich gehe mal davon aus dass du einen hast).
2. mußt du dich mit der Datenbank verbinden (connect) damit du auch an die Daten kommst.

mit dieser Klasse erstellst du eine Verbindung Zur Datenbank.

```
public final class Connector {
   
    
    private Connection connection = null;
  
    private  static Connector uniqueInstance = null;
    private static final String treiber = "com.mysql.jdbc.Driver";
    
    public Connector() throws InstantiationException {
        try {
            try {
                Class.forName(treiber).newInstance();
            } catch (IllegalAccessException ex) {
                Logger.getLogger(Connector.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Connector.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
     /**************************************************
                Singleton Muster
   ***************************************************/
   public static Connector getInstance() {
        if (uniqueInstance == null) {
            try {
                uniqueInstance = new Connector();
            } catch (InstantiationException ex) {
                Logger.getLogger(Connector.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return uniqueInstance;
    }
    
     public Connection getConnection() {
 
          return connection;
    }
 
 
      public void connect() {
        try {
             String userName = "root";
             String password = "root";
             String url = "jdbc:mysql://localhost/mydb";
 
             connection = (Connection) DriverManager.getConnection(url, userName, password);     
 
            }catch (SQLException e) {
             }
 
}
```


```
DBConnector co1 = Connector.getInstance();
           co1.connect();
```

3. Wenn du eine Verbindung  kannst du den eigendlichen Datenbankinhalt laden

```
Connection con = co1.getConnection(); // hier wird die Instanz der Connector Klasse aufgerufen.
            Statement stmt = con.createStatement();
 
            ResultSet r  = stmt.executeQuery("Select * from ...");
```

4. Laden der Daten in dein jTable.
   Dafür benutzt man ein TableModel 

Deine Daten werden dann in das jTable geschrieben.

```
int rows=0;
            while (r.next()) {
                tm.setRowCount(rows + 1);
                tm.setValueAt(r.getString("FLD_NAME"), rows, 0);
                tm.setValueAt(r.getString("FLD_VORNAME"), rows, 1);
                tm.setValueAt(r.getString("FLD_GEBURTSJAHR"), rows, 2);
                tm.setValueAt(r.getString("ID"), rows, 3);
                 rows++;
            }
```

ich hoffe ich habe mich Verständlich ausgedrückt.

Gruß Manuela


----------



## mostwanted (31. Mai 2011)

Will einfach nicht. Connect bzw. Verbindung hatte ich... Gerade komplett neues Projekt und Class erstellt - fehltanzeige. Auch wenn ich "nur" dein Code nehme und zusammenbaue


----------



## Manuela (1. Jun 2011)

Hallo neuer Versuch,

Mache ein neues Project 
lege eine neue Klasse an mit Namen "Connector"

```
package javaapplication13;
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */



import com.mysql.jdbc.Connection;

import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;


public final class Connector {


    private Connection connection = null;
  
    private  static Connector uniqueInstance = null;
    private static final String treiber = "com.mysql.jdbc.Driver";

    public Connector() {
        try {
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
            } catch (InstantiationException ex) {
                Logger.getLogger(Connector.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(Connector.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Connector.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    /**************************************************
                Singleton Muster
   ***************************************************
   * @return
   */
    public static Connector getInstance() {
        if (uniqueInstance == null) {
                 uniqueInstance = new Connector();
        }
        return uniqueInstance;
    }
 
        public Connection getConnection() {

          return connection;
    }

        public void connect() {
        try {


            connection = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/<NAME DEINER DATENBANK>","root","root");
            System.out.println("Datenbank verbunden");

        }  catch (SQLException e) {
            e.printStackTrace();
        }

    }
   public void disconnect() {
        try {
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

}
```

in deiner Main Klasse schreibst Du folgendes: 

```
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package javaapplication13;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;


public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        try {
            Connector con = Connector.getInstance();
            con.connect();
            Connection co = con.getConnection();
            Statement stmt = co.createStatement();
            ResultSet r = stmt.executeQuery("SELECT * FROM <Tabellenname>");
            while(r.next()){
                System.out.println("Wert kurz="+r.getString("<STALTENNAME>"));
            }
        } catch (SQLException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }


    }

}
```

Das sollte funktionieren.
eine Kleine Frage wie lange Programmierst du schon.

Gruß Manuela


----------



## mostwanted (1. Jun 2011)

Ist mein erstes Java Projekt, programmiere mit Eclipse.

1. Habe neues Projekt gemacht
2. Klasse "Connector" und "Main" neu erstellt
3. Inhalte kopiert und DB / Tabellennamen angepasst

Es klappt wirklich nicht. Was mache ich falsch?


----------



## Manuela (1. Jun 2011)

Hallo,
Zeige mir mal deine Klassen und die Fehlermeldung die du bekommst.

Gruß Manuela


----------



## mostwanted (1. Jun 2011)

Hier die Main Klasse:

ImageShack® - Online Photo and Video Hosting

Fehler: Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	The method getConnection() from the type Connector refers to the missing type Connection

	at javaapplication13.Main.main(Main.java:21)


Hier die Connector Klasse:

ImageShack® - Online Photo and Video Hosting

Fehler: Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	The method getConnection() from the type Connector refers to the missing type Connection

	at javaapplication13.Main.main(Main.java:21)


Wo fülle ich jetzt den Jtable? 

Ich hatte ja anfangs den Code gepostet den ich ursprünglich hatte -  müsste ich nicht einfach unter den jTable auf die DB Tabelle verweisen?


----------



## Manuela (1. Jun 2011)

Hallo,
Kann es sein dass du KEINE LIBARY (Mysql) in deinem Project hast.

Es zeigt einen Fehler in Eclipse bei import com.mysql.jdbc.Connection; 

Also Ohne mysql Libary kann da nichts gehen.

Gruß Manuela


----------



## mostwanted (1. Jun 2011)

Jetzt funktioniert nicht einmal mehr der DB Connect meiner Ursprungsdatei. Connect auf MySQL DB funktionierte. 

Habe MySQL am laufen und das funktioniert.


----------



## Manuela (1. Jun 2011)

Hallo,

schau dir dieses Tutorial an:

YouTube - ‪MySQL Datenbank Java Eclipse JDBC Tutorial‬&rlm;
dass sollte Dir helfen.

Gruß Manuela


----------



## mostwanted (4. Jun 2011)

So. Habe das Tutorial mal durchgespielt und der erste schritt klappt fast einwandfrei.

wie kann ich jetzt das ganze mit 


```
int rows=0;
            while (r.next()) {
                tm.setRowCount(rows + 1);
                tm.setValueAt(r.getString("FLD_NAME"), rows, 0);
                tm.setValueAt(r.getString("FLD_VORNAME"), rows, 1);
                tm.setValueAt(r.getString("FLD_GEBURTSJAHR"), rows, 2);
                tm.setValueAt(r.getString("ID"), rows, 3);
                 rows++;
            }
```

darstellen?

Hier der bisherige sourcecode:


```
import java.sql.*;

public class Abfrage {
	
	public static void main(String[]args){
		
		try{				
				Class.forName("com.mysql.jdbc.Driver").newInstance();
				
				Connection con = DriverManager.getConnection(
						"jdbc:mysql://localhost/mydb","root","root");
				
				con.setReadOnly(true);
				Statement stmt = con.createStatement();
				ResultSet rs = stmt.executeQuery("Select * from produktausprägung");
				
				while (rs.next()){
					
					System.out.println(rs.getInt(+1)+" "+rs.getString(2)+rs.getString(3));
				}
				
				rs.close();
				stmt.close();
				con.close();
				
		}catch(Exception e){
			System.out.println("*** Fehlermeldung *** -> "+e);
		}
}
}
```


----------



## CrossForum (5. Jun 2011)

Vielleicht hilft dir das dort, läuft auf das selbe raus.

Live Suche in JTable - Entwickler-Forum


----------



## Manuela (5. Jun 2011)

Hallo,
ich habe dir den Kompletten Lösungsweg aufgezeigt.
Ich weiß nicht mehr was ich dir erklären kann das du das verstehst.

Das aus dem Video scheint ja jetzt zu funktionieren.
wenn du jetzt in dein Frame eine JTable einfügst und dann kannst du die Daten laden.

Gruß Manuela.

PS.: Kann jemand anders Ihm das weiter erklären, denn mein Latein ist zu Ende 
ich habe Ihm schon alles gezeigt, wie es geht???


----------



## mostwanted (6. Jun 2011)

also hier habe ich die abfrage und das GUI zusammengefügt. ich verstehe allerdings immer noch nicht wo und wie ich genau hinbekomme das die daten aus der DB in die jtable vom GUI geschrieben werden.

kann mir bitte jemand weiter helfen?


```
import java.sql.*;

/*
 * artikelverwaltung1.java
 *
 * Created on __DATE__, __TIME__
 */

/**
 *
 * @author  __USER__
 */
public class artikelverwaltung1 extends javax.swing.JDialog {

	/** Creates new form artikelverwaltung1 */
	public artikelverwaltung1(java.awt.Frame parent, boolean modal) {
		super(parent, modal);
		initComponents();
	}

	public class Abfrage {
		
		public static void main(String[]args){
			
			try{				
					Class.forName("com.mysql.jdbc.Driver").newInstance();
					
					Connection con = DriverManager.getConnection(
							"jdbc:mysql://localhost/mydb","root","root");
					
					con.setReadOnly(true);
					Statement stmt = con.createStatement();
					ResultSet rs = stmt.executeQuery("Select * from produktausprägung");
					
					while (rs.next()){
						
						System.out.println(rs.getInt(+1)+" "+rs.getString(2)+rs.getString(3));
					}
					
					rs.close();
					stmt.close();
					con.close();
					
			}catch(Exception e){
				System.out.println("*** Fehlermeldung *** -> "+e);
			}
	}
	}	
	
	
	/** This method is called from within the constructor to
	 * initialize the form.
	 * WARNING: Do NOT modify this code. The content of this method is
	 * always regenerated by the Form Editor.
	 */
	//GEN-BEGIN:initComponents
	// <editor-fold defaultstate="collapsed" desc="Generated Code">
	private void initComponents() {

		jScrollPane1 = new javax.swing.JScrollPane();
		jTable1 = new javax.swing.JTable();

		setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

		jTable1.setModel(new javax.swing.table.DefaultTableModel(
				new Object[][] { { null, null, null, null, null },
						{ null, null, null, null, null },
						{ null, null, null, null, null },
						{ null, null, null, null, null } }, new String[] {
						"ID", "Bezeichnung", "Preis", "bearbeiten", "löschen" }) {
			Class[] types = new Class[] { java.lang.Object.class,
					java.lang.Object.class, java.lang.Object.class,
					java.lang.Boolean.class, java.lang.Boolean.class };

			public Class getColumnClass(int columnIndex) {
				return types[columnIndex];
			}
		});
		jScrollPane1.setViewportView(jTable1);

		javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
				getContentPane());
		getContentPane().setLayout(layout);
		layout.setHorizontalGroup(layout.createParallelGroup(
				javax.swing.GroupLayout.Alignment.LEADING).addGroup(
				javax.swing.GroupLayout.Alignment.TRAILING,
				layout.createSequentialGroup()
						.addContainerGap(29, Short.MAX_VALUE)
						.addComponent(jScrollPane1,
								javax.swing.GroupLayout.PREFERRED_SIZE, 452,
								javax.swing.GroupLayout.PREFERRED_SIZE)
						.addGap(22, 22, 22)));
		layout.setVerticalGroup(layout.createParallelGroup(
				javax.swing.GroupLayout.Alignment.LEADING).addGroup(
				layout.createSequentialGroup()
						.addGap(107, 107, 107)
						.addComponent(jScrollPane1,
								javax.swing.GroupLayout.PREFERRED_SIZE, 93,
								javax.swing.GroupLayout.PREFERRED_SIZE)
						.addContainerGap(135, Short.MAX_VALUE)));

		pack();
	}// </editor-fold>
	//GEN-END:initComponents

	/**
	 * @param args the command line arguments
	 */
	public static void main(String args[]) {
		java.awt.EventQueue.invokeLater(new Runnable() {
			public void run() {
				artikelverwaltung1 dialog = new artikelverwaltung1(
						new javax.swing.JFrame(), true);
				dialog.addWindowListener(new java.awt.event.WindowAdapter() {
					public void windowClosing(java.awt.event.WindowEvent e) {
						System.exit(0);
					}
				});
				dialog.setVisible(true);
			}
		});
	}

	//GEN-BEGIN:variables
	// Variables declaration - do not modify
	private javax.swing.JScrollPane jScrollPane1;
	private javax.swing.JTable jTable1;
	// End of variables declaration//GEN-END:variables

}
```


----------



## mostwanted (6. Jun 2011)

so. habe gerade nochmals das DB connect angepasst. bin jetzt glaube ich wieder am anfang angelangt... sprich DB connect und GUI an sich funktionieren. leider ohne inhalt der daten aus der DB... 


```
import java.sql.*;

/*
 * artikelverwaltung1.java
 *
 * Created on __DATE__, __TIME__
 */

/**
 *
 * @author  __USER__
 */
public class artikelverwaltung1 extends javax.swing.JDialog {

	
	private Connection mydbconn = null;  
	
	/** Creates new form artikelverwaltung1 */
	public artikelverwaltung1(java.awt.Frame parent, boolean modal) {
		super(parent, modal);

		initComponents();

        //DB Connection erstellen
        try {
             String userName = "root";
             String password = "root";
             String url = "jdbc:mysql://localhost/mydb";
             Class.forName("com.mysql.jdbc.Driver").newInstance();
             this.mydbconn = DriverManager.getConnection(url, userName, password);
             System.out.println("Database connection established");
             } catch (Exception e) {
               System.err.println("Cannot connect to database server ");
               e.printStackTrace();
             }
    }
 	
	
	/** This method is called from within the constructor to
	 * initialize the form.
	 * WARNING: Do NOT modify this code. The content of this method is
	 * always regenerated by the Form Editor.
	 */
	//GEN-BEGIN:initComponents
	// <editor-fold defaultstate="collapsed" desc="Generated Code">
	private void initComponents() {

		jScrollPane1 = new javax.swing.JScrollPane();
		jTable1 = new javax.swing.JTable();

		setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

		jTable1.setModel(new javax.swing.table.DefaultTableModel(
				new Object[][] { { null, null, null, null, null },
						{ null, null, null, null, null },
						{ null, null, null, null, null },
						{ null, null, null, null, null } }, new String[] {
						"ID", "Bezeichnung", "Preis", "bearbeiten", "löschen" }) {
			Class[] types = new Class[] { java.lang.Object.class,
					java.lang.Object.class, java.lang.Object.class,
					java.lang.Boolean.class, java.lang.Boolean.class };

			public Class getColumnClass(int columnIndex) {
				return types[columnIndex];
			}
		});
		jScrollPane1.setViewportView(jTable1);

		javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
				getContentPane());
		getContentPane().setLayout(layout);
		layout.setHorizontalGroup(layout.createParallelGroup(
				javax.swing.GroupLayout.Alignment.LEADING).addGroup(
				javax.swing.GroupLayout.Alignment.TRAILING,
				layout.createSequentialGroup()
						.addContainerGap(29, Short.MAX_VALUE)
						.addComponent(jScrollPane1,
								javax.swing.GroupLayout.PREFERRED_SIZE, 452,
								javax.swing.GroupLayout.PREFERRED_SIZE)
						.addGap(22, 22, 22)));
		layout.setVerticalGroup(layout.createParallelGroup(
				javax.swing.GroupLayout.Alignment.LEADING).addGroup(
				layout.createSequentialGroup()
						.addGap(107, 107, 107)
						.addComponent(jScrollPane1,
								javax.swing.GroupLayout.PREFERRED_SIZE, 93,
								javax.swing.GroupLayout.PREFERRED_SIZE)
						.addContainerGap(135, Short.MAX_VALUE)));

		pack();
	}// </editor-fold>
	//GEN-END:initComponents

	/**
	 * @param args the command line arguments
	 */
	public static void main(String args[]) {
		java.awt.EventQueue.invokeLater(new Runnable() {
			public void run() {
				artikelverwaltung1 dialog = new artikelverwaltung1(
						new javax.swing.JFrame(), true);
				dialog.addWindowListener(new java.awt.event.WindowAdapter() {
					public void windowClosing(java.awt.event.WindowEvent e) {
						System.exit(0);
					}
				});
				dialog.setVisible(true);
			}
		});
	}

	//GEN-BEGIN:variables
	// Variables declaration - do not modify
	private javax.swing.JScrollPane jScrollPane1;
	private javax.swing.JTable jTable1;
	// End of variables declaration//GEN-END:variables

}
```


----------



## Manuela (6. Jun 2011)

Hallo,
so jetzt hast du es geschaft dass ich dir deine Arbeit abgenommen hab.
Ich habe es auch getestet bei mir funktioniert es.

```
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package javaapplication14;
import java.sql.*;
import javax.swing.table.DefaultTableModel;

/*
 * artikelverwaltung1.java
 *
 * Created on __DATE__, __TIME__
 */

/**
 *
 * @author  __USER__
 */
public class artikelverwaltung1 extends javax.swing.JDialog {


    private Connection mydbconn = null;
    public DefaultTableModel tm;
    /** Creates new form artikelverwaltung1 */
    public artikelverwaltung1(java.awt.Frame parent, boolean modal) {
        super(parent, modal);

        initComponents();

         tm = new DefaultTableModel(new String[]{"Name", "M/T", "Funktion", "Kostenträger"}, 1){};

        jTable1.setModel(tm);
        //DB Connection erstellen
        try {
             String userName = "root";
             String password = "root";
             String url = "jdbc:mysql://localhost/deineDB";
             Class.forName("com.mysql.jdbc.Driver").newInstance();
             this.mydbconn = DriverManager.getConnection(url, userName, password);
             System.out.println("Database connection established");

             Statement stmt = mydbconn.createStatement();
             ResultSet r = stmt.executeQuery("SELECT * From ");
             int rows =0;
             while(r.next()){
                tm.setRowCount(rows + 1);
                tm.setValueAt(r.getInt(1), rows, 0);
                tm.setValueAt(r.getString(2), rows, 1);
                tm.setValueAt(r.getString(3), rows, 2);
                tm.setValueAt(r.getString(4), rows, 3);

                //      //  //      System.out.println("Name : " + r.getString("FLD_NAME"));
                rows++;

             }

             } catch (Exception e) {
               System.err.println("Cannot connect to database server ");
               e.printStackTrace();
             }
    }





    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    //GEN-BEGIN:initComponents
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
                new Object[][] { { null, null, null, null, null },
                        { null, null, null, null, null },
                        { null, null, null, null, null },
                        { null, null, null, null, null } }, new String[] {
                        "ID", "Bezeichnung", "Preis", "bearbeiten", "löschen" }) {
            Class[] types = new Class[] { java.lang.Object.class,
                    java.lang.Object.class, java.lang.Object.class,
                    java.lang.Boolean.class, java.lang.Boolean.class };

            public Class getColumnClass(int columnIndex) {
                return types[columnIndex];
            }
        });
        jScrollPane1.setViewportView(jTable1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
                getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(
                javax.swing.GroupLayout.Alignment.LEADING).addGroup(
                javax.swing.GroupLayout.Alignment.TRAILING,
                layout.createSequentialGroup()
                        .addContainerGap(29, Short.MAX_VALUE)
                        .addComponent(jScrollPane1,
                                javax.swing.GroupLayout.PREFERRED_SIZE, 452,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(22, 22, 22)));
        layout.setVerticalGroup(layout.createParallelGroup(
                javax.swing.GroupLayout.Alignment.LEADING).addGroup(
                layout.createSequentialGroup()
                        .addGap(107, 107, 107)
                        .addComponent(jScrollPane1,
                                javax.swing.GroupLayout.PREFERRED_SIZE, 93,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(135, Short.MAX_VALUE)));

        pack();
    }// </editor-fold>
    //GEN-END:initComponents

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                artikelverwaltung1 dialog = new artikelverwaltung1(
                        new javax.swing.JFrame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }

    //GEN-BEGIN:variables
    // Variables declaration - do not modify
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration//GEN-END:variables

}
```
ich würde dir raten ein Buch über Java zulesen kann hilfreich sein.

viel spass dabei Manuela


----------



## mostwanted (6. Jun 2011)

erstmal vielen herzlichen dank! habe es zum laufen gebracht! super!

noch ganz kurz:

verstehe ich das richtig das der obere teil eigentlich ausreichen würde? in der unteren code hälfte wird die tabelle die ich mittels matisse form erstellt habe implementiert (jTable1.setModel....; null; null; etc.). brauche ich das jetzt überhaupt noch? ich habe da eben noch 2 boolean in der tabelle modelliert die jetzt nicht mehr dargestellt werden.

nochmals viele dank für deine super hilfe! 


```
import java.sql.*;
import javax.swing.table.DefaultTableModel;
 
/*
 * artikelverwaltung1.java
 *
 * Created on __DATE__, __TIME__
 */
 
/**
 *
 * @author  __USER__
 */
public class artikelverwaltung1 extends javax.swing.JDialog {
 
 
    private Connection mydbconn = null;
    public DefaultTableModel tm;
    /** Creates new form artikelverwaltung1 */
    public artikelverwaltung1(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
 
        initComponents();
 
         tm = new DefaultTableModel(new String[]{"ID", "Bezeichnung", "Preis"}, 1){};
 
        jTable1.setModel(tm);
        //DB Connection erstellen
        try {
             String userName = "root";
             String password = "root";
             String url = "jdbc:mysql://localhost/mydb";
             Class.forName("com.mysql.jdbc.Driver").newInstance();
             this.mydbconn = DriverManager.getConnection(url, userName, password);
             System.out.println("Database connection established");
 
             Statement stmt = mydbconn.createStatement();
             ResultSet r = stmt.executeQuery("SELECT * From produktausprägung");
             int rows =0;
             while(r.next()){
                tm.setRowCount(rows + 1);
                tm.setValueAt(r.getInt(1), rows, 0);
                tm.setValueAt(r.getString(2), rows, 1);
                tm.setValueAt(r.getString(3), rows, 2);
           
                System.out.println("idProduktausprägung : " + r.getString("idProduktausprägung"));
                System.out.println("Bezeichnung : " + r.getString("Bezeichnung"));
                System.out.println("Preis : " + r.getString("Preis"));
             
                rows++;
 
             }
 
             } catch (Exception e) {
               System.err.println("Cannot connect to database server ");
               e.printStackTrace();
             }
    }
 
 

    private void initComponents() {
 
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        
    
 
        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        
 
        jTable1.setModel(new javax.swing.table.DefaultTableModel(
                new Object[][] { { null, null, null, null, null },
                        { null, null, null, null, null },
                        { null, null, null, null, null },
                        { null, null, null, null, null } }, new String[] {
                        "ID", "Bezeichnung", "Preis", "bearbeiten", "löschen" }) {
            Class[] types = new Class[] { java.lang.Object.class,
                    java.lang.Object.class, java.lang.Object.class,
                    java.lang.Boolean.class, java.lang.Boolean.class };
 
            public Class getColumnClass(int columnIndex) {
                return types[columnIndex];
            }
        });
        jScrollPane1.setViewportView(jTable1);
 
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
                getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(
                javax.swing.GroupLayout.Alignment.LEADING).addGroup(
                javax.swing.GroupLayout.Alignment.TRAILING,
                layout.createSequentialGroup()
                        .addContainerGap(29, Short.MAX_VALUE)
                        .addComponent(jScrollPane1,
                                javax.swing.GroupLayout.PREFERRED_SIZE, 452,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(22, 22, 22)));
        layout.setVerticalGroup(layout.createParallelGroup(
                javax.swing.GroupLayout.Alignment.LEADING).addGroup(
                layout.createSequentialGroup()
                        .addGap(107, 107, 107)
                        .addComponent(jScrollPane1,
                                javax.swing.GroupLayout.PREFERRED_SIZE, 93,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(135, Short.MAX_VALUE)));
 
        pack();
    }// </editor-fold>
    //GEN-END:initComponents
 
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                artikelverwaltung1 dialog = new artikelverwaltung1(
                        new javax.swing.JFrame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }
 
    //GEN-BEGIN:variables
    // Variables declaration - do not modify
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration//GEN-END:variables
 
}
```


----------



## Manuela (7. Jun 2011)

Hallo,
für das anzeigen deiner Boolean Kästchen ist das TableModel zuständig.


```
tm = new DefaultTableModel(new String[]{"Na", "M", "Funktion", "Kostenträger"}, 1) {
 
            public Class getColumnClass(int columnIndex) {
                  switch (columnIndex) {                
                            case 1: return Integer.class;
                            case 2: return Double.class;
                            case 3: return Boolean.class;
                    default:
                        return String.class;
 
                }
            }
 
            ;
        };
```

aber ich kann dir nur Raten kauf dir ein Buch ich kann dir dass nur Empfehlen denn dir fehlt die Grundlagen.  Ich habe mir das Doppelband von "Core Java 2" Band1 Grundwissen, Band2 Expertenwissen damals zugelegt und ich benutze es auch heute noch.

denn deine nächsten Fragen sind wie kann ich denn meine Daten die ich geändert habe auch abspeichern, neuladen der Daten usw... 

Gruß Manuela


----------



## mostwanted (7. Jun 2011)

ja aber nochmals zu meiner frage: 

funktion erster Teil: connect, db daten holen und anzeigen


```
import java.sql.*;
import javax.swing.table.DefaultTableModel;
 
/*
 * artikelverwaltung1.java
 *
 * Created on __DATE__, __TIME__
 */
 
/**
 *
 * @author  __USER__
 */
public class artikelverwaltung1 extends javax.swing.JDialog {
 
 
    private Connection mydbconn = null;
    public DefaultTableModel tm;
    /** Creates new form artikelverwaltung1 */
    public artikelverwaltung1(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
 
        initComponents();
 
         tm = new DefaultTableModel(new String[]{"ID", "Bezeichnung", "Preis"}, 1){};
 
        jTable1.setModel(tm);
        //DB Connection erstellen
        try {
             String userName = "root";
             String password = "root";
             String url = "jdbc:mysql://localhost/mydb";
             Class.forName("com.mysql.jdbc.Driver").newInstance();
             this.mydbconn = DriverManager.getConnection(url, userName, password);
             System.out.println("Database connection established");
 
             Statement stmt = mydbconn.createStatement();
             ResultSet r = stmt.executeQuery("SELECT * From produktausprägung");
             int rows =0;
             while(r.next()){
                tm.setRowCount(rows + 1);
                tm.setValueAt(r.getInt(1), rows, 0);
                tm.setValueAt(r.getString(2), rows, 1);
                tm.setValueAt(r.getString(3), rows, 2);
           
                System.out.println("idProduktausprägung : " + r.getString("idProduktausprägung"));
                System.out.println("Bezeichnung : " + r.getString("Bezeichnung"));
                System.out.println("Preis : " + r.getString("Preis"));
             
                rows++;
 
             }
 
             } catch (Exception e) {
               System.err.println("Cannot connect to database server ");
               e.printStackTrace();
             }
    }
```

funktion zweiter teil: mir nicht ganz klar da ich diesen teil ja mit dem Matisse Form erstellt habe (siehe zeile 11 bis 19) hier zeige ich ja nochmals eine tabelle? 


```
private void initComponents() {
 
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        
    
 
        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        
 
        jTable1.setModel(new javax.swing.table.DefaultTableModel(
                new Object[][] { { null, null, null, null, null },
                        { null, null, null, null, null },
                        { null, null, null, null, null },
                        { null, null, null, null, null } }, new String[] {
                        "ID", "Bezeichnung", "Preis", "bearbeiten", "löschen" }) {
            Class[] types = new Class[] { java.lang.Object.class,
                    java.lang.Object.class, java.lang.Object.class,
                    java.lang.Boolean.class, java.lang.Boolean.class };
 
            public Class getColumnClass(int columnIndex) {
                return types[columnIndex];
            }
        });
        jScrollPane1.setViewportView(jTable1);
 
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
                getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(
                javax.swing.GroupLayout.Alignment.LEADING).addGroup(
                javax.swing.GroupLayout.Alignment.TRAILING,
                layout.createSequentialGroup()
                        .addContainerGap(29, Short.MAX_VALUE)
                        .addComponent(jScrollPane1,
                                javax.swing.GroupLayout.PREFERRED_SIZE, 452,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(22, 22, 22)));
        layout.setVerticalGroup(layout.createParallelGroup(
                javax.swing.GroupLayout.Alignment.LEADING).addGroup(
                layout.createSequentialGroup()
                        .addGap(107, 107, 107)
                        .addComponent(jScrollPane1,
                                javax.swing.GroupLayout.PREFERRED_SIZE, 93,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(135, Short.MAX_VALUE)));
 
        pack();
    }// </editor-fold>
    //GEN-END:initComponents
 
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                artikelverwaltung1 dialog = new artikelverwaltung1(
                        new javax.swing.JFrame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }
 
    //GEN-BEGIN:variables
    // Variables declaration - do not modify
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration//GEN-END:variables
```


----------

