IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Accès aux données Discussion :

[DEBUTANT][C#]Recuperer dans une variable le dernier ID Inseré


Sujet :

Accès aux données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Points : 57
    Points
    57
    Par défaut [DEBUTANT][C#]Recuperer dans une variable le dernier ID Inseré
    Bonjour tous le monde, voilà j'ai une petit soucis :

    J'aimerai récupérer dans une variable le résultat d'une requete SELECT qui est sensé me retourné le dernier élément inséré dans ma base.

    je vous met une partie de mon code :

    ConnectionClass.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
            
    // Requete me recupérant le dernier Id_projet inséré
            public static DataTable GetIdLastProjet()
            {
                Connection();
                SQL = "SELECT id_projet FROM projets WHERE ROWNUM = 1 ORDER BY id_projet DESC;";
                cmd = new OracleCommand(SQL, conn);
                cmd.CommandType = CommandType.Text;
                da = new OracleDataAdapter(cmd);
                cb = new OracleCommandBuilder(da);
                ds = new DataSet();
                da.Fill(ds);
                return ds.Tables[0].Rows[0][0].ToString();
            }
    J'obtiens l'erreur : Impossible de convertir implicitement le type 'string' en 'System.Data.DataTable'


    newMission.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string strProjetId = ConnectionClass.GetIdLastProjet();
    J'obtiens l'erreur : Impossible de convertir implicitement le type 'System.Data.DataTable' en 'string'

    Je vous remerci d'avance.

  2. #2
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Tu devrais pas t'y prendre comme ça, utilise plutôt ExecuteScalar pour ce genre de requete.
    Et puis attention, si ton but c'est de récupérer l'ID qui a été généré immédiatement suite à un insert, c'est dangereux.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2004
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 304
    Points : 405
    Points
    405
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public static DataTable GetIdLastProjet()
    {
      //...
      return ds.Tables[0].Rows[0][0].ToString();
    }
    Change DataTable par String et c'est bon

    il est aussi préférable de mofidier la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SQL = "SELECT Max(id_projet) FROM projets;";

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,

    Je crois que l'erreur se trouve au niveau de la définition de ta fonction:
    public static DataTable GetIdLastProjet()
    .
    Tu dis vouloir renvoyer une DataTable alors que tu écris à la fin de de la fonction:
    return ds.Tables[0].Rows[0][0].ToString();
    qui correspond à la première colonne de la première ligne de la première table. Donc ça renvoie une valeur.

    Au lieu de mettre
    return ds.Tables[0].Rows[0][0].ToString();
    Mets plutôt
    .
    Normalement ça devrait marcher.

    Je crois la métthode la plus facile est de faire ce que _Skip a dit.
    Dernière modification par tomlev ; 01/07/2008 à 13h47.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Points : 57
    Points
    57
    Par défaut
    Merci tous le monde sa marche !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recuperer dans une variable un champ de plus de 255 caracteres
    Par hippolaterreur dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 08/09/2009, 16h01
  2. Recuperer dans une variable une formule OleExcel
    Par blondelle dans le forum C++Builder
    Réponses: 0
    Dernier message: 30/05/2008, 19h20
  3. Récupérer contenu de fichier dans une variable
    Par peppena dans le forum Linux
    Réponses: 4
    Dernier message: 15/06/2005, 12h50
  4. Recuperer un champ calculé dans une variable....
    Par vijeo dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 21/12/2004, 14h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo