Requete de creation de sequence dans un code java

sana24 Messages postés 3 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 12 juin 2011 - 9 juin 2011 à 21:50
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 10 juin 2011 à 09:49
bonsoir à tous,
on oracle je pense que on a pas le champ auto-increment et que la solution est la création d'une sequence.
"create sequence seq_num increment by 1 start with 1 nomaxvalue;"
mon problème comment utiliser ce numero de sequence dans un code java et l'utiliser dans une requete d'insertion.
voici mon code
...
Connect c= new Connect();//class 2 cnx à la BD
c.openconnexion();
c.exec("create sequence seq_num increment by 1 start with 1 nomaxvalue;");
ResultSet rs1=c.exec("insert into Test1 values( seq_num ,'"+nom+"','"+prenom+"')");// seq_num n'est pas reconnu dans la req d'insert

si je met le resultat de la req de sequence dans un ResultSet:
ResultSet res =c.exec("create sequence seq_num increment by 1 start with 1 nomaxvalue;");
alors je ne sait pas comment mettre le contenu du res dans la req d'insertion
merci

4 réponses

cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
9 juin 2011 à 23:09
salut,

deja!! je ne sais pas d'ou tu tiens ta methode exec?!!! de ta connection il te faut dabord ontenir un Statement... depuis lequel tu peu obtenir un Resultset en utilisant la methode executeQuery par exemple

GodConan ;o)
0
sana24 Messages postés 3 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 12 juin 2011
10 juin 2011 à 00:50
:) oui bien sure, voici mon class "connect"
package exercice5;
import java.sql.*;
import java.text.SimpleDateFormat;
public class Connect
{
    private Connection cnx= null;
    private Statement stm = null;
    ResultSet rst = null;
    ResultSet rs2=null;
    public boolean openConnection()
    {
        boolean test=false;
        try
{
            System.out.println ("Try ok");
            Class.forName("oracle.jdbc.OracleDriver").newInstance();
            System.out.println ("Driver ok");
    cnx = DriverManager.getConnection ("jdbc:oracle:thin:@127.0.0.1:1521:BaseM","system","admin");
    System.out.println ("Database connection established");
            test=true;
            return test;
        }
catch (Exception e)
        {
             e.printStackTrace();
             System.out.println ("Erreur de connexion: Cannot connect to database server\n"+e);
             return test;
}
    }
    public boolean closeConnection()
    {
try
        {
            cnx.close();
            System.out.println("fermeture de connexion");
            return true ;
}catch (Exception e)
        {
            System.out.println("Echec de la fermeture de la connexion :"+ e.getMessage());
            return false ;
}
    }
    public ResultSet exec(String sql)
    {
ResultSet rs = null;
try
        {
            stm = cnx.createStatement();
            System.out.println("création de statement ok");
            rs = stm.executeQuery(sql);
            System.out.println("requete exécuté ok");
}catch(Exception e)
        {
            System.out.println("Echec de l'execution de la requete sql55555555 :"+e.getMessage());
}
        return rs ;
    }
    public int update(String sql)
    {
        int i=0;
        try
        {
             stm = cnx.createStatement();
             i =  stm.executeUpdate(sql);
        }catch(Exception e)
        {
            System.out.println("Echec de l'execution de la requete sql :"+e.getMessage());
        }
        return i ;
    }
    public String getDate()
    {
        SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
        java.util.Date d = new java.util.Date();
        return s.format(d);
    }
}



0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
10 juin 2011 à 06:58
sinon un create et un insert sont des update ... ;o) donc utilise ta méthode update...

ensuite un ResultSet se lit par iteration... avec un getString(num de col) par exemple..
et next() pour passer à l enregistrement suivant ...

GodConan ;o)
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
10 juin 2011 à 09:49
Pour récupérer la valeur suivante d'une séquence il fait envoyer cette requête :

SELECT nomSequence.currval 
FROM dual


Ta classe Connect est truffée d'erreurs et de maladresses.
0
Rejoignez-nous