bonjour,
je débute en C et j'espère que quelqu'un va pouvoir m'aider :
je dois mettre à jour une base de données access à partir d'un fichier sql de ce type :
-- ============================================================ ;
-- TABLE [t00] ;
-- ------------------------------------------------------------ ;
update t00 set fH=NULL where ((f1='0000520153'));
update t00 set fH=NULL where ((f1='0000530053'));
update t00 set fH=NULL where ((f1='0000560157'));
update t00 set fH=NULL where ((f1='0000580058'));
update t00 set fH=NULL where ((f1='0000580159'));
update t00 set fH=NULL where ((f1='0000600161'));
....
J'ai fait grâce à des recherches sur le net, un petit programme (cf ci dessous) qui m'exécute une requête mise "en dur "pour test
Il faut maintenant que lise mon fichier sql pour en extraire chaque requête et l'exécuter mais je sèche.
#include "stdafx.h"
#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=[test.mdb];";
char szSql[256] = "insert into t17 (f0, f2, fP) values (4850, 'SYNTHON HISPANIA S.L.', 1)";
// 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);
// 3 - Exécution de la requete
rc = SQLExecDirectA(hStmt,(unsigned char*)szSql,SQL_NTS);
// 4 - Liberations et fermeture de la connection a la BDD
rc = SQLFreeStmt(hStmt, SQL_DROP);
rc = SQLDisconnect(hDbc);
rc = SQLFreeEnv(hEnv);
return 0;
}