INSERT dans une base de données access

hitle Messages postés 6 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 13 juin 2007 - 13 juin 2007 à 11:16
hitle Messages postés 6 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 13 juin 2007 - 13 juin 2007 à 15:07
Salut,

Je suis actuellement en train de réaliser une application intranet. Pour ce projet j'ai besoin de faire des INSERT dans une base de données de type Access.

Grâce à ce script trouvé sur ce même site j'ai réussi à établir une connexion et ensuite pouvoir lire les données présentes dans la base.

J'ai donc voulu modifier ce script pour ensuite effectuer un INSERT dans la base. Maleresement je n'ais pas réussi à effectuer cette tâche malgrès beaucoup de recherche et d'essais. Sans compter que l'on trouve peu d'aide sur internet en ce qui concerne ce point.

Voici le code que j'ai effectué :

// Connexion et execution de requete sur un base de donnees Microsoft Access
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>


#pragma comment(lib, "odbc32.lib")


int main(int argc, char *argv[])
{
    HENV hEnv;
    HDBC hDbc;
    RETCODE rc;


    int iOut;
    char strOut[256];
    char szDSN[256] = "driver={Microsoft Access Driver (*.mdb)};dbq=[formation_test3.mdb];";
    //char szSql[256] = "SELECT * FROM formation";
    char szSql[256] = "INSERT INTO formation VALUES('', 10, 'inti stage', 20, '12/06/2007', '', 'max dep', 30, 'libelle serv', 40, 'libelle niv7', 50, 'libelle depart', 60, 'libelle salle', '15:00:00', '12/06/2007')";
    //char szSql[256] = "UPDATE formation SET Numero_de_session='10' WHERE Code_stage='3115'";
    //char szSql[256] = "INSET INTO formation VALUES


    // 1 - Connexion a la BDD Access
    rc = SQLAllocEnv(&hEnv);
    rc = SQLAllocConnect(hEnv, &hDbc);
    rc = SQLDriverConnect(hDbc, NULL, (unsigned char*)szDSN, SQL_NTS, (unsigned char*)strOut, 255, (SQLSMALLINT*)&iOut, SQL_DRIVER_NOPROMPT);


    // 2 - Preparation de la requete
    HSTMT hStmt;
    rc = SQLAllocStmt(hDbc,&hStmt);
    rc = SQLPrepare(hStmt,(unsigned char*)szSql, SQL_NTS);
    if(rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) printf("NOK1\n");
    else printf("OK1\n");


    rc = SQLExecDirectA(hStmt,(unsigned char*)szSql,SQL_NTS);
    if(rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) printf("NOK2\n");
    else printf("OK2\n");


    // 5 - Liberations et fermeture de la connection a la BDD
    rc = SQLFreeStmt(hStmt, SQL_DROP);
    rc = SQLDisconnect(hDbc);
    rc = SQLFreeEnv(hEnv);


    printf("\nfin\n");
    getch();


    return 0;
}

Merci par avance pour vos réponses car là je désespère !

4 réponses

Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 décembre 2009 2
13 juin 2007 à 11:51
salut,

as tu essayé d'utiliser la fonction INSERT dans une base de données plus simple et courte, pour vérifier que c'est possible, sans notamment heure ni date car c'est source d'erreurs lorsque la syntaxe n'est pas parfaitement respectée.

par exemple une table toto avec juste deux champs, un integer et un varchar

Loki
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
13 juin 2007 à 12:35
La voix du bon sens ce que dit Loki6, on teste en plusieurs étapes des procédures simple et ensuite seulement on peut y aller.

ciao...
BruNews, MVP VC++
0
Loki6 Messages postés 286 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 27 décembre 2009 2
13 juin 2007 à 12:42
merci pour ce compliment BruNews , par ce temps pourri ça réchauffe le coeur

Loki
0
hitle Messages postés 6 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 13 juin 2007
13 juin 2007 à 15:07
SAlut'


J'ai effectuer ce test et ca fonctionne à merveille. Le problème sur ma requette initiale ne provenée que d'une petite erreur de type :s


Merci
0