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

C++/CLI Discussion :

Visual C++ 2005 EXPRESS pour connecter a une base PostgreSQL


Sujet :

C++/CLI

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 45
    Points : 16
    Points
    16
    Par défaut Visual C++ 2005 EXPRESS pour connecter a une base PostgreSQL
    Bonjour, j'ai developper une application et je l'éxécute avec Visual C++ 2005 EXPRESS. Elle doit se connecté a une base de donnée via PostgreSQL. Donc l'application se lance, je rentre ce qu'il faut dans les case, et la quand je click sur le logon qui permet de me connecté a la base, il me met:

    Une exception non gérée du type 'System.AccessViolationException' s'est produite dans AjoutAdministrateur.exe
    Informations supplémentaires*: Tentative de lecture ou d'écriture de mémoire protégée. Cela indique souvent qu'une autre mémoire est endommagée.

    et puis j'ai le choix entre continuer et quitter, mais dans les 2 cas cela me ferme mon application.Pour l'instant je vous met pas le code mais si vous en avez besion pourquoi pas mais il prend de la place, il faut bien 5 feuilles!

    Merçi de m'aider si vous avez la solution.

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    si tu lances l'application en debug, sur quelle ligne se produit l'exception ?

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 45
    Points : 16
    Points
    16
    Par défaut
    voila mon code principale:

    // AjoutAdministrateur.cpp : main project file.

    #include "stdafx.h"
    #include "FenPrinc.h"
    #include "FenAlerte.h"

    using namespace AjoutAdministrateur;

    [STAThreadAttribute]
    int main(array<System::String ^> ^args)
    {
    // Enabling Windows XP visual effects before any controls are created
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false);

    // Create the main window and run it
    Application::Run(gcnew FenPrinc());
    return 0;
    }
    l'exeception se produit sur le return 0, quand je clic sur connecter, hop j'ai le message que je di précédament.

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    si tu lances en débug, ca s'arrete sur quelle ligne ?
    j'imagine que c'est dans ta form, pas dans le main

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 45
    Points : 16
    Points
    16
    Par défaut
    voila ce que me met visual c++ 2005 express en sortie:

    'AjoutAdministrateur.exe'*: Chargé 'C:\Program Files\ADIMED\AjoutAdministrateur\debug\AjoutAdministrateur.exe', Les symboles ont été chargés.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\ntdll.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\mscoree.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\kernel32.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\advapi32.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\rpcrt4.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\libpq.dll', Le fichier binaire n'a pas été généré avec les informations de débogage.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\comerr32.dll', Le fichier binaire n'a pas été généré avec les informations de débogage.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\msvcrt.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\user32.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\gdi32.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\libeay32.dll', Le fichier binaire n'a pas été généré avec les informations de débogage.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\wsock32.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\ws2_32.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\ws2help.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\libintl-2.dll', Le fichier binaire n'a pas été généré avec les informations de débogage.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\libiconv-2.dll', Le fichier binaire n'a pas été généré avec les informations de débogage.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\krb5_32.dll', Le fichier binaire n'a pas été généré avec les informations de débogage.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\shfolder.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\ssleay32.dll', Le fichier binaire n'a pas été généré avec les informations de débogage.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c\msvcr80d.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c\msvcm80d.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\ole32.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\imm32.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\shlwapi.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.163_x-ww_681e29fb\msvcr80.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\shell32.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\comctl32.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\comctl32.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Culture.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Déchargé 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Culture.dll'
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\assembly\NativeImages_v2.0.50727_32\mscorlib\0a9f0022aae2844794d9c9f54da20d77\mscorlib.ni.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe' (Managé)*: 'C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll' chargé, aucun symbole chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\uxtheme.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\msctf.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe' (Managé)*: 'c:\Program Files\ADIMED\AjoutAdministrateur\debug\AjoutAdministrateur.exe' chargé, symboles chargés.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorjit.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\diasymreader.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\rsaenh.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe' (Managé)*: 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c\msvcm80d.dll' chargé, aucun symbole chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\assembly\NativeImages_v2.0.50727_32\System\4be005078ddab84ca9fdd7afbdb359d1\System.ni.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe' (Managé)*: 'C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll' chargé, aucun symbole chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\assembly\NativeImages_v2.0.50727_32\System.Drawing\cdbc72c3a484554ba5ada3b21de64871\System.Drawing.ni.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\assembly\NativeImages_v2.0.50727_32\System.Windows.Forms\5f148f5f0ff5034a9f039ae48b1ce0a3\System.Windows.Forms.ni.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe' (Managé)*: 'C:\WINDOWS\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll' chargé, aucun symbole chargé.
    'AjoutAdministrateur.exe' (Managé)*: 'C:\WINDOWS\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll' chargé, aucun symbole chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\WinSxS\x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.2600.2180_x-ww_522f9f82\GdiPlus.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\version.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Déchargé 'C:\WINDOWS\system32\version.dll'
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\msctfime.ime', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\oleaut32.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\mswsock.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\dnsapi.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\rasadhlp.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\hnetcfg.dll', Aucun symbole n'a été chargé.
    'AjoutAdministrateur.exe'*: Chargé 'C:\WINDOWS\system32\wshtcpip.dll', Aucun symbole n'a été chargé.
    Exception de première chance à 0x631072fd dans AjoutAdministrateur.exe*: 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0xfeeefeee.
    'AjoutAdministrateur.exe' (Managé)*: 'C:\WINDOWS\assembly\GAC_MSIL\mscorlib.resources\2.0.0.0_fr_b77a5c561934e089\mscorlib.resources.dll' chargé, aucun symbole chargé.
    Une exception de première chance de type 'System.AccessViolationException' s'est produite dans AjoutAdministrateur.exe
    Une exception non gérée du type 'System.AccessViolationException' s'est produite dans AjoutAdministrateur.exe

    Informations supplémentaires*: Tentative de lecture ou d'écriture de mémoire protégée. Cela indique souvent qu'une autre mémoire est endommagée.

    Le thread 'Thread Win32' (0x808) s'est arrêté avec le code 0 (0x0).
    Le thread 'Thread Win32' (0x80c) s'est arrêté avec le code 0 (0x0).
    Le thread 'Thread Win32' (0x814) s'est arrêté avec le code 0 (0x0).
    Le thread 'Thread Win32' (0x844) s'est arrêté avec le code 0 (0x0).
    Le programme '[1392] AjoutAdministrateur.exe: Managé' s'est arrêté avec le code 0 (0x0).
    Le programme '[1392] AjoutAdministrateur.exe: Natif' s'est arrêté avec le code 0 (0x0).

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 45
    Points : 16
    Points
    16
    Par défaut
    j'ai trouvé le morçeau de code qui posait problème, mais je ne voit pas où, le voila:

    ______________________________________________________
    String^ nomtmp;

    nomtmp = gcnew String(PQgetvalue(res, 0, 0));

    this->textBox7->Text = nomtmp;
    PQclear(res);
    //Ferme la connexion à la base de données et libère la mémoire
    PQfinish(conn);

    ______________________________________________________

  7. #7
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    je ne connais pas les api de postgre, mais peut-etre une erreur dans la connexion, la chaine de connexion

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 45
    Points : 16
    Points
    16
    Par défaut
    oui merçi, mais est ce que tu peu être plus précis?merçi sa serait cool

  9. #9
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 45
    Points : 16
    Points
    16
    Par défaut
    voiçi le code qui me permet de me connecter a la base:
    #pragma endregion

    private:
    String^ Informationsconn;


    int FenPrinc::numeroLogin(){

    String^ connstatus;
    String^ requete;
    PGconn *conn;
    PGresult *res;
    String^ tmp="0";
    int nbr=0;



    IntPtr p = System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(this->Informationsconn);
    LPCSTR chaineChar = reinterpret_cast<LPCSTR>(static_cast<void *>(p));
    conn = PQconnectdb(chaineChar);
    System::Runtime::InteropServices::Marshal::FreeHGlobal(p);


    if (PQstatus(conn) != CONNECTION_OK)
    {
    connstatus="PROBLEM DE CONNECTION";
    }else{

    //requete = "select count(*) from utilisateur where nom = '"+nom+"' and prenom = '"+prénom+"'"+" and mot_de_passe = '"+mdp+"'";
    requete = "select count(*)+1 from utilisateur";
    IntPtr p = System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(requete);
    LPCSTR chaineChar = reinterpret_cast<LPCSTR>(static_cast<void *>(p));
    res = PQexec(conn, chaineChar);
    System::Runtime::InteropServices::Marshal::FreeHGlobal(p);

    if (PQresultStatus(res) != PGRES_TUPLES_OK)
    {
    fprintf(stderr, "SELECT failed: %s", PQerrorMessage(conn));
    PQclear(res);
    tmp="0";

    }else{
    tmp= gcnew String(PQgetvalue(res, 0, 0));
    PQclear(res);
    }
    /* Ferme la connexion à la base de données et libère la mémoire */
    PQfinish(conn);
    }
    nbr = Convert::ToInt32(tmp);
    return nbr;
    }

  10. #10
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    PQgetvalue renvoit une valeur cohérente ? qu'est-ce que ca renvoit normalement ?
    y a une valeur dans le débugger ?

  11. #11
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 45
    Points : 16
    Points
    16
    Par défaut
    oui justement je crois que c'est à cette ligne la que sa ne vas pas.

    tmp= gcnew String(PQgetvalue(res, 0, 0));


    voila ce qu'on me dit sur un site:

    PQgetvalue
    Renvoie la valeur d'un seul champ d'une (seule) ligne d'un PGresult. Les numéros de lignes et de colonnes commencent à zéro.

    char* PQgetvalue(const PGresult *res,
    int row_number,
    int column_number);
    Pour les données au format texte, la valeur renvoyée par PQgetvalue est une représentation au format chaîne de caractères terminée par un octet nul de la valeur du champ. Pour les données au format binaire, la valeur est dans la représentation binaire déterminée par les fonctions typsend et typreceive de la donnée. (La valeur est en fait suivie d'un octet zéro dans ce cas aussi mais ce n'est pas réellement utile car la valeur elle même peut contenir des octets nuls.)

    Une chaîne vide est renvoyée si la valeur du champ est nulle. Voir PQgetisnull pour distinguer les valeurs nulles des valeurs de chaîne vide.

    Le pointeur renvoyé par PQgetvalue pointe vers un espace mémoire de la structure PGresult. Il ne faut pas modifier les données vers lesquelles il pointe. Il faut recopier ces données si on souhaite les utiliser après la disparition de la structure PGresult.

Discussions similaires

  1. [MSSQL 2005 EXPRESS] impossible de rattacher une base
    Par b.grellee dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/07/2007, 17h19
  2. Réponses: 11
    Dernier message: 19/02/2007, 09h13
  3. Compilation avec Visual C++ 2005 Express pour avoir un module python
    Par Freyja dans le forum Déploiement/Installation
    Réponses: 6
    Dernier message: 13/07/2006, 12h12
  4. [IDE] - Où trouver des composants pour Visual C# 2005 Express ?
    Par MaTHieU_ dans le forum Visual Studio
    Réponses: 4
    Dernier message: 22/04/2006, 21h50

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