//-----------------------------------------------------------------------------
// ExJDBC1.java
//-----------------------------------------------------------------------------

import java.io.*; // pour la fonction lireClavier uniquement
import java.sql.*;

class ExJDBC1 {

    static void ex1(Connection c) throws SQLException {
	String name = lireClavier("entrez le nom : ");
	String texte = 
	    "update personne set age = age + 1 where nom = '"+name+"'";
 	// erreur, tester :
	// "update personne set age = age + 1 where nom = "+name;
	System.out.println(texte);
	Statement s = c.createStatement();
	int n;
	n = s.executeUpdate(texte);
	System.out.println("nombre de lignes traitees : "+n);

	n = s.executeUpdate("update personne set age = age + 1");
	System.out.println("nombre de lignes traitees : "+n);
	s.close();

	lireClavier("Pause programme (entrez return) :");
	Connection c2 = DriverManager.getConnection(
            "jdbc:oracle:thin:waller2_a/AQWzsx34@soracle:1521:dbinfo");
	s = c2.createStatement();
	texte = "insert into t values(42,52)"; 
	System.out.println(texte);
	s.executeUpdate(texte);
	s.close();
	c2.close();
    }

    static void ex2(Connection c) throws SQLException {
	String texte = "select seq.nextval from dual";
	System.out.println(texte);
	Statement s = c.createStatement();
	ResultSet r = s.executeQuery(texte);
	r.next();
	System.out.println(r.getInt(1));
	r.close();
	s.close();
    }

    static void ex3(Connection c) throws SQLException {
	String texte = "select nom, age from personne";
	// String texte = "select nom, age from personne where age < "+24;
	System.out.println(texte);
	Statement s = c.createStatement();
	ResultSet r = s.executeQuery(texte);
	while (r.next())
	    System.out.println(r.getString(1)+", "+r.getInt(2)+" ans");
	r.close();
	s.close();
    }

    static String lireClavier(String message) {
	// Dans cette fonction l'exception est catchee pour ne pas avoir a la 
        // gerer dans le main, et donc mieux voir les exceptions BD. 
	try {
            System.out.print(message);
	    BufferedReader clavier =
		new BufferedReader(new InputStreamReader(System.in));
	    return clavier.readLine();
	} catch (Exception e) {
	    return "erreur dans fonction lireClavier";
	}
    }

    public static void main(String[] args)
	throws SQLException, ClassNotFoundException {

	Class.forName("oracle.jdbc.driver.OracleDriver");
	Connection c = DriverManager.getConnection(
            "jdbc:oracle:thin:waller_a/AQWzsx34@soracle:1521:dbinfo");

	while (true) {
	    System.out.println("-------------------------------");
	    System.out.println("Bienvenue dans ExJDBC1");
	    System.out.println("1 : bases : ");
	    System.out.println("2 : sequence : ");
	    System.out.println("3 : curseur : ");
	    System.out.println("9 : deconnexion");
	    System.out.println("0 : terminer");
	    int n = Integer.parseInt(lireClavier("Entrez votre choix : "));
	    switch (n) {
	    case 1 : ex1(c); break;
	    case 2 : ex2(c); break;
	    case 3 : ex3(c); break;
	    case 9 : c.close(); break;
	    case 0 : return;
	    }
	}
    }
}

//-----------------------------------------------------------------------------
