# problem mit mysql ausgabe.



## Sandman23 (18. Sep 2007)

hi leute, ich habe am wochenende mit java angefangen (arbeite schon seit jahren mit php und seit nen paar monaten mit perl...). Und möchte mich nicht auf eine andere db umstellen, deswegen möchte ich auch in java mysql nutzen...

nun habe ich schon stunden gesucht, bis ich auf euer forum gestoßen bin... und hier habe ich dann endlich mal ein snippet gefunden, welches einzeln auch funktioniert hat (in einer eigenen *.java datei) nun habe ich diese aber in mein bestehendes projekt eingebunden und es scheint nicht zu gehen (in der anderen java datei wurde mir der wert den ich wollte im interpreter angezeigt, diesmal nicht)

nun frage ich mich also, was hier dran falsch ist:


```
public void read(){

      try {
         try {
            try {
               Class.forName("com.mysql.jdbc.Driver").newInstance();
            } catch (InstantiationException e) {
               e.printStackTrace();
            } catch (IllegalAccessException e) {
               e.printStackTrace();
            }
         } catch (ClassNotFoundException e) {
            e.printStackTrace();
         }
         Connection cn = DriverManager.getConnection("jdbc:mysql://localhost/constantwar?user=root&password=");

         Statement state = cn.createStatement();

         ResultSet res = state.executeQuery("SELECT * FROM planet_info");

         while(res.next()){
           System.out.println(res.getString("name"));
           MyGraphics.drawString(res.getString("name"),150,125);
         }
         res.close();
         state.close();
         cn.close();

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

         System.out.println("Could not connect to database!");
      }
   }
```



hier nochmal mein gesamtes projekt (ich weiss, dass das sicher in mehrere dateien gesplittet werden sollte )




```
import java.sql.*;
  import java.applet.*;
  import java.awt.*;
  import java.awt.event.*;

  public class TwoListener extends Applet implements MouseMotionListener, MouseListener
  {
    private int x, y;
    private int top, left;
    
    private int mouse_x, mouse_y, mouse_x2, mouse_y2;
    
    private int width, height;
    
    private Image terrain;
    private Image mountain;
    private Image building;
    private Image lautsprecher;
    
    private Image dbImage;
    private Graphics dbg;
    private Graphics MyGraphics;
    
    String raw = new String();

    public void init() {
      terrain      = getImage(getCodeBase(), "grass.gif");
      mountain     = getImage(getCodeBase(), "rock.png");
      building     = getImage(getCodeBase(), "2.png");
      lautsprecher = getImage(getCodeBase(), "lautsprecher.gif");
      
      addMouseListener(this);
      addMouseMotionListener(this);
    }

    public void read(){

      try {
         try {
            try {
               Class.forName("com.mysql.jdbc.Driver").newInstance();
            } catch (InstantiationException e) {
               e.printStackTrace();
            } catch (IllegalAccessException e) {
               e.printStackTrace();
            }
         } catch (ClassNotFoundException e) {
            e.printStackTrace();
         }
         Connection cn = DriverManager.getConnection("jdbc:mysql://localhost/constantwar?user=root&password=");

         Statement state = cn.createStatement();

         ResultSet res = state.executeQuery("SELECT * FROM planet_info");

         while(res.next()){
           System.out.println(res.getString("name"));
           MyGraphics.drawString(res.getString("name"),150,125);
         }
         res.close();
         state.close();
         cn.close();

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

         System.out.println("Could not connect to database!");
      }
   }


    public void mouseDragged(MouseEvent e) {
      mouse_x2 = e.getX();
      mouse_y2 = e.getY();

      if(mouse_x2 <= 0)
           mouse_x2 = 0;
      if(mouse_y2 <= 1)
           mouse_y2 = 1;
      if(mouse_x2 >= this.getSize().width-1)
           mouse_x2 = this.getSize().width-1;
      if(mouse_y2 >= this.getSize().height-2)
           mouse_y2 = this.getSize().height-2;
           
      repaint();
    }

    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
    public void mouseMoved(MouseEvent e) {}
    public void mousePressed(MouseEvent e) {
      mouse_x = e.getX();
      mouse_y = e.getY();
      repaint();
    }
    public void mouseClicked(MouseEvent e) {}
    public void mouseReleased(MouseEvent e) {
      mouse_x = 0;
      mouse_y = 0;
      mouse_x2 = 0;
      mouse_y2 = 0;
      repaint();
    }
    
    public void update(Graphics g) {
         if(dbImage == null){
               dbImage = createImage(this.getSize().width, this.getSize().height);
               dbg = dbImage.getGraphics();
         }
         
         paint(dbg);

         g.drawImage(dbImage, 0, 0, this);
    }

    public void paint(Graphics g) {
         for(x = 0; x <= 25; x++){
               for(y = 0; y <= 10; y++){
                     if(x % 2 == 0){
                          top  = 0 + (y * 124);   // left
                          left = -64 + (x * 32);  // top
                     } else if(x % 2 == 1) {
                          top  = -62 + (y * 124); // left
                          left = -64 + (x * 32);  // top
                     }

                     g.drawImage(terrain, top, left, this);
               }
         }

         g.drawImage(mountain, 100, 64, this);
         g.drawImage(mountain, 100, 0, this);
         g.drawImage(mountain, 228, 0, this);
         g.drawImage(mountain, 164, 32, this);
         g.drawImage(building, 300, 400, this);
         g.drawImage(lautsprecher, 0, 0, this);

         g.setColor(new Color( 0, 0, 0 ));
         g.drawLine(mouse_x, mouse_y, mouse_x2, mouse_y);
         g.drawLine(mouse_x, mouse_y2, mouse_x, mouse_y);
           
         g.drawLine(mouse_x2, mouse_y2, mouse_x2, mouse_y);
         g.drawLine(mouse_x2, mouse_y2, mouse_x, mouse_y2);
    }
  }
```

danke schonmal für hilfe... möchte für meiner isomap gebäude aus der datenbank auslesen 
wäre nett, wenn ihr mich auch über fehler oder optimierungsmöglichkeiten meines projektes aufklären könntet 
oder auch wie ich den mysql connector einzeln nutzen kann um an beliebigen stellen statements ausführen zu lassen...


----------



## maki (18. Sep 2007)

> nun frage ich mich also, was hier dran falsch ist:


Was passiert denn? Gibt's ne Exception? Wenn ja, was steht drinnen?



> wäre nett, wenn ihr mich auch über fehler oder optimierungsmöglichkeiten meines projektes aufklären könntet icon_smile.gif


An deiner STelle würde ich mir iBatis ansehen, dann kannst du dir denn JDBC Code sparen, hast deine SQL Statements in XML Dateien und noch ein DAO Framework dazu.


----------



## Sandman233 (18. Sep 2007)

ne, gibt keine exception, da steht nix... naja, würd schon gern wissen, wie das mit na normalen mysql verbindung hinhaut und nicht umbedingt auf nen framework zurückgreifen...

oder hat wer nen anderes beispiel, wie ich in nem java applet ne mysql verbindung zustande kriege ^^


----------



## Gast (26. Sep 2007)

Sandman lieber Sandman ...

überlege mal ganz genau, wo, wann und von wem die methode read() aufgerufen wird. 

Richtig, nirgends, der Code in der Methode wird so also auch nicht ausgeführt.

überlege nun mal ganz scharf, wann dein MyGrahics Objekt instanziiert wird.

Richtig, nirgends, MyGraphics ist null. deshalb wirst du auch wenn du die Methode read() aufrufst eine NullPointerException bekommen. 


```
import java.sql.*;
import java.applet.*;
import java.awt.*;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class TwoListener extends Applet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	JPanel pane;

	public void init() {
		pane = new JPanel();
		pane.setLayout(new GridLayout(0, 1));
		this.add(pane);
		read();
		this.setVisible(true);
	}

	public void read() {

		try {
			Class.forName("org.hsqldb.jdbcDriver").newInstance();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		Connection cn = null;
		Statement state = null;
		ResultSet res = null;
		try {
			cn = DriverManager.getConnection(
					"jdbc:hsqldb:hsql://localhost/xdb", "sa", "");

			state = cn.createStatement();

			res = state.executeQuery("SELECT * FROM adressen");

			while (res.next()) {
				JLabel label = new JLabel();
				String str = res.getString("name");
				label.setText(str);
				pane.add(label);
				System.out.println(str);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				res.close();
				state.close();
				cn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			SwingUtilities.updateComponentTreeUI(this);
		}
	}

}
```

Das ist mal ein Beispiel von mir. Ist allerdings eine HSQLDB, dh. der Treiber muß wieder mit einem mysqltreiber ersetzt werden, die Datenbankverbindung, Passwort, username angepasst werden. Und natürlich noch die Query. Wie dein Ergebnis aussehen sollte, war ja leider weniger aus dem Code rauszuraten


----------

