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

Interfaces de programmation Oracle Discussion :

[OCILIB] Problème Requete Oracle (Delete & Insert)


Sujet :

Interfaces de programmation Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 2
    Par défaut [OCILIB] Problème Requete Oracle (Delete & Insert)
    Bonjour à tous,

    J'ai un problème avec ocilib, lorsque je souhaite faire une requête INSERT ou DELETE, l'action n'est pas effectuée. L'application ne renvoi aucune erreur.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    	//REQUETE DELETE
     
            //TEST SI OCI CORRECTEMENT INITIALISE
    	if (!OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT)) MessageBox::Show("Problème Oracle");
    	else 
    	{
    		MessageBox::Show("Oracle OK");
    		OCI_Connection *cn;
    		OCI_Statement  *st;
    		OCI_Resultset  *rs;
     
    		char * adresse = "127.0.0.1:1521/XE";
    		char * login = "XXX";
    		char * pwd = "XXX";
     
    		cn = OCI_ConnectionCreate(adresse, login, pwd, OCI_SESSION_DEFAULT);
     
                    //TEST CONNEXION ETABLIE
    		if (cn != NULL)
    		{
    			MessageBox::Show("Connection OK");
    			st = OCI_StatementCreate(cn);
    			OCI_ExecuteStmt(st, "DELETE FROM client");
    			OCI_Commit(cn);
    			OCI_StatementFree(st);
    		}
    		OCI_ConnectionFree(cn);
    	}
    	OCI_Cleanup();
    A savoir que tous les messages OK s'affichent dont la connexion est bonne.
    Seule les requêtes de type Select fonctionnent.
    La requête DELETE FROM client marche parfaitement sous SqlDeveloper.
    J'ai suivi ce super tuto de Vincent Rogier : http://vicenzo.developpez.com/tutoriels/c/ocilib/
    Et j'ai utilisé la librairie A (ansi).
    Par contre je n'ai pas pu trouver où mettre le OCI_API : __sdtcall donc je ne sais pas si ca joue.

    Merci à ceux qui se pencheront sur le problème d'un étudiant un peu perdu.

  2. #2
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Salut,

    il faut toujours avoir une gestion des erreurs soit contextuellement soit de maniere globale.


    Ajoute une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void err_handler(OCI_Error *err)
    {
        printf(
                    "code  : ORA-%05i\n"
                    "msg   : %s\n"
                    "sql   : %s\n",
                    OCI_ErrorGetOCICode(err), 
                    OCI_ErrorGetString(err),
                    OCI_GetSql(OCI_ErrorGetStatement(err))
               );
    }
    et passe le error handler à OCI_Initialize() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        if (!OCI_Initialize(err_handler, NULL, OCI_ENV_DEFAULT)) MessageBox::Show("Problème Oracle");
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 2
    Par défaut
    Salut Vincent,

    Réaction super rapide, merci pour ce super tutoriel pour la connection Oracle.
    Je venais juste de trouver une solution alernative, en remplaçant l'execute par un block de PL/SQL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    OCI_Prepare(st, "begin DELETE FROM client; commit; end;");
    OCI_Execute(st);
    Puis finalement j'ai tester le premier code après avoir fermer sql_dev et miracle ca fonctionne.
    Je pense donc que le fonction Commit(); devait être bloqué par mon sql_dev.

    Merci aussi pour la fonction pour les erreurs

    Bonne soirée.
    Romain

  4. #4
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    you're welcome
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

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

Discussions similaires

  1. Problème requete DELETE
    Par om-player dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/01/2008, 14h28
  2. Problème requete delete
    Par label55 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 20/12/2007, 15h32
  3. Probléme requete d'insertion
    Par pooi1 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 27/06/2007, 14h04
  4. problème requete : DELETE pr0 WHERE num1 in(select ..
    Par pierre.egaud dans le forum Oracle
    Réponses: 10
    Dernier message: 21/11/2006, 11h34
  5. numéro oracle prédéfinie pour insert et delete?
    Par hoaxpunk dans le forum Oracle
    Réponses: 4
    Dernier message: 26/04/2006, 16h24

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