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

MFC Discussion :

Probleme MFC - ODBC


Sujet :

MFC

  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant en propriété intellectuelle
    Inscrit en
    Janvier 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Consultant en propriété intellectuelle
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2008
    Messages : 88
    Par défaut Probleme MFC - ODBC
    Salut tout le monde,

    Voila mon probleme, j'ai une application qui doit ajouter des utilisateur dans une base de donnees, l'admin remplit un formulaire, et lorsqu'il clique sur valider, cela ajoute le mombre a la base de donnee.

    D'une part, l'ajout a la base de donnee par l'interface ODBC que j'ai faite fonctionne en mode console.

    D'autre part, des que je clique sur valider, je recois une serie d'erreur :
    The Memory could not be "read"
    The Memory could not be "written"

    Or les informations sont bien ajouter a la base de donnees.

    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
    void CAddAgent::OnSubmit() 
    {
    	CDialog::UpdateData(); 
    	char * Name = new char[]; 
    	char * ID = new char[]; 
    	char * Location = new char[]; 
    	char * Mail = new char[]; 
    	char * Phone = new char[];
     
    	CProjetApp *pApp=static_cast<CProjetApp *>(AfxGetApp());
     
    	if ((m_ID != _T("")) && (m_Name != _T("")) && 
    		( m_Location != _T("")) && (m_Mail != _T("")) && (m_Phone != _T("")))
    	{
    		strcpy(Name , m_Name);
    		strcpy(ID , m_ID);
    		strcpy(Location , m_Location);
    		strcpy(Mail , m_Mail);
    		strcpy(Phone , m_Phone);
     
    		CTable *ptr = new CAgent_Table(Name, ID, Location, Mail, Phone);
    		pApp->db.addRecord("AGENT", ptr);
    		CDialog::EndDialog(0);
    	}
    	else
    	{
    		CStatic *Label = new CStatic;
    		Label->Create("Every Field must be filled", WS_CHILD | WS_VISIBLE, CRect(200, 5, 400, 20), this, 0x188);
    	}
    }
    D'ou peux venir le probleme ?

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    c'est simple tu exploses la mémoire...
    d'ou tes messages d'erreurs en lecture et ecriture.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char * Name = new char[];
    tu es sensé alloué quoi la ?
    il n'y pas de taille précisée pour l'allocation.
    pour faire un strcpy sur une chaine il faut connaitre la taille de la chaine de départ +1 et allouer de la mémoire en conséquence.
    d'ailleurs pourquoi tu n'utilises pas des objets CString ou string ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant en propriété intellectuelle
    Inscrit en
    Janvier 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Consultant en propriété intellectuelle
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2008
    Messages : 88
    Par défaut
    Je dois utiliser des char parce que l'une des condition pour mon projet est que les interfaces ODBC, et une autre, soit reutilisable par la suite.

    On (responsable projet) m'a dit de faire ca avec des char ....

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    mauvais arguments ou mauvaise explication je ne comprends pas toute ta phrase...
    une CString fournit l'opérateur const char * , je ne vois pas le problème..
    quand on fait du c++ on utilise au maximum les objets string ou CString plutôt que les chaines sauf contraintes spécifiques.
    la je n'en vois pas ...

Discussions similaires

  1. probleme lien ODBC
    Par milielf dans le forum Access
    Réponses: 1
    Dernier message: 29/06/2006, 12h04
  2. [MFC+ ODBC] Help Required PLz
    Par torNAdE dans le forum MFC
    Réponses: 6
    Dernier message: 12/04/2006, 15h37
  3. [MFC] [ODBC] Pb copie de base de donnée..
    Par matth2602 dans le forum MFC
    Réponses: 3
    Dernier message: 17/01/2006, 13h20
  4. [MFC][ODBC][Débutant] CRecordView constructor
    Par lastcheper dans le forum MFC
    Réponses: 18
    Dernier message: 18/08/2005, 10h54
  5. Probleme avec ODBC pour la V8.
    Par chad33 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 04/03/2005, 23h57

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