Probleme mit MYSQL-Connection

k7s5a

Grünschnabel
Hallo!

Ich habe schon auf viele Fragen eine Antwort hier im Forum gefunden aber eben auf diese hier nicht. Deshalb habe ich mich entschlossen das Problem einfach mal zu posten ind er Hoffnung, dass es sich leicht beheben lässt. Ich hoffe nur, dass ich im richtigen Bereich poste :confused:

Also kurz zur Funktion meines Programmes.

Ich möchte ein Porgramm bauen, welches als Event-Handler arbeiten soll. Es soll sich also mit einer MYSQL-Datenbank verbinden (funktioniert) und dann soll er alle X Sekunden gucken, ob es ein neues Event/einen neuen Eintrag in der Datenbank gibt und dann etwas bestimmtes mit diesem Eintrag machen.

Mein Problem ist jetzt folgendes, dass ich zuerst Connecten will und dann bei bestehender Verbindung jede X Sekunden nachgucken möchte, was aber nicht klappt.

Code:
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import javax.swing.*;



public class Timer1 extends JFrame implements ActionListener {
	

Timer myTimer;  // Timer
long summe = 0;


  public static void main(String[] args) {
		
		 try {
	         Class.forName("com.mysql.jdbc.Driver").newInstance();
	         final Connection con = java.sql.DriverManager.getConnection("meineURL", "UserName", "Passwort" );
		
	    Timer1 timer;
	    timer =  new Timer1();
	    timer.setVisible(true);
	    
		  con.close();
	     } catch( Exception ex ) {   System.out.println( ex );   }   
	  }
  
 

  public Timer1 () {
      if(myTimer == null) {
          myTimer = new Timer(1000, this);
          myTimer.start(); }
  }


	public void actionPerformed(ActionEvent e) {
    summe += 1;
    System.out.println(summe);
     try {
    	 Date dt = new Date();
    	 System.out.print("Aktuelle Zeit: ");
         System.out.println(dt.getTime()/1000 );
         long datum = dt.getTime()/1000;
         
     	Statement stmt = con.createStatement(); <----PROBLEM!!
     	ResultSet rs = stmt.executeQuery("SELECT * FROM tabelle WHERE time =" +datum);
     	ResultSetMetaData rsmd = rs.getMetaData(); 
     	int n, nmax = rsmd.getColumnCount();
          while( rs.next() )
        	  
             { 
             for( n=1 ; n<=nmax ; n++ )
                System.out.print( rs.getString( n ) + "--" ) ;
             System.out.println() ;
             }
          
          rs.close();
          stmt.close(); 
         } catch( SQLException ex ) {  System.out.println( ex );   }
	}  



}

An der Stelle wo ich "Problem" hingeschrieben habe taucht der Fehler auf.
Er sagt " con cannot be resolved ".
Das ist für mich ja auch verständlich, da die Definition in einer anderen Public Void drinn ist.
Meine Frage jetzt: Wie schaffe ich es, dass das funktioniert?!
Hoffentlich hat jemand Zeit und Lust mir da zu helfen.

Gruß Fabian
 
Mein Vorschlag:

Java:
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import javax.swing.*;



public class Timer1 extends JFrame implements ActionListener {

    private Timer                       myTimer;  // Timer
    private long                         summe = 0;
    
    private Connection               con;
    private ResultSet                 rs;
    private Statement                stmt;
    private ResultSetMetaData   rsmd;

    public Timer1(){
        try {
            Class.forName("org.firebirdsql.jdbc.FBDriver").newInstance();
            con = java.sql.DriverManager.getConnection("********", "******", "********" );
        
        java.util.Timer timer=new java.util.Timer();
            java.util.TimerTask task = new java.util.TimerTask() {
                public void run() {
                    try{
                        stmt = con.createStatement();
                        rs = stmt.executeQuery("select **********");
                        rsmd = rs.getMetaData();
                        int n, nmax = rsmd.getColumnCount();
                    
                        while( rs.next() ){ 
                            for( n=1 ; n<=nmax ; n++ ){
                                System.out.println( rs.getString( n )) ;
                            }
                        }
                        rs.close();
                        stmt.close();
                    }catch(Throwable e){
                        e.printStackTrace();
                    }
                };
            };
        
            timer.schedule(task,1000,1000);     //beginn in einer Sec und dann jede sec 
        } catch( Exception ex ) {   System.out.println( ex );   }   
    } 

    public static void main(String[] args) {        
        new Timer1();
    }
    
    public void actionPerformed(ActionEvent e) {
    
    }
}
 
Zurück