Java erreur compilation

ja -  
 Utilisateur anonyme -
bonjour,
j'essaye d'écrire une aplication en java pour interroger une base mysql et lorsque je compile, j'obtiens les erreurs suivantes :

$javac test.java
test.java:33: cannot resolve symbol
symbol : variable conn
location: class test
stat = conn.createStatement();
^
test.java:44: cannot resolve symbol
symbol : variable conn
location: class test
conn.close();
^
2 errors

et j'arrive pas a voir d'où viens les ereurs.
pour info j'utilise j2sdk1.4.2_09
Voici mon code source :

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
class test
{
public static void main (String[] arguments)
{
try
{
//tenter de récupérer le driver Mysql
Class.forName("com.mysql.jdbc.Driver").newInstance();
System.out.println("Chargement du pilote Mysql réussi");
}
catch(Exception e) {
System.err.print("Erreur de chargement du pilote : ");
System.err.println(e.getMessage());
}
try
{
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/test","root","");
}
catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}

Statement stat = null;
ResultSet result = null;

stat = conn.createStatement();
result = stat.executeQuery("SELECT * FROM essai");
try {
while (result.next())
{
System.out.println("#"+result.getInt(2)+"\n");
System.out.println("Libellé :"+result.getString(2)+"\n");
}
} catch (SQLException ex) {}
result.close();
stat.close();
conn.close();
}
}

1 réponse

  1. Utilisateur anonyme
     
    Salut!

    C'est parceque ta Connection n'est pas visible. Cela est dû au fait que tu la déclares dans un try-catch. Déclare là en-dehors du try-catch.

    A ta place, je placerai tout le code dans une seul try et je gérerais l'exception en fonction de son type (voir ci-dessous).

    PS: par convention, en Java, le nom des classes commence par une majuscule ;-)

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.sql.ResultSet;
    
    class Test {
    	public static void main(String[] arguments) {
    		Connection conn = null;
    		Statement stat = null;
    		ResultSet result = null;
    
    		try {
    			//tenter de récupérer le driver Mysql 
    			Class.forName("com.mysql.jdbc.Driver").newInstance();
    			System.out.println("Chargement du pilote Mysql réussi");
    			conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/test", "root", "");
    			stat = conn.createStatement();
    			result = stat.executeQuery("SELECT * FROM essai");
    
    			while (result.next()) {
    				System.out.println("#" + result.getInt(2) + "\n");
    				System.out.println("Libellé :" + result.getString(2) + "\n");
    			}
    
    			result.close();
    			stat.close();
    			conn.close();
    		} catch (SQLException se) {
    			System.out.println("SQLException: " + se.getMessage());
    			System.out.println("SQLState: " + se.getSQLState());
    			System.out.println("VendorError: " + se.getErrorCode());
    		} catch (InstantiationException ie) {
    			System.err.print("Erreur de chargement du pilote : ");
    			System.err.println(ie.getMessage());
    		} catch (Exception e) {
    			//A gérer
    			e.printStackTrace();
    		}
    	}
    }
    


    ;-)
    HackTrack
    0