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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| /* 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>
#include <string>
#include <iostream>
#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=[ydu.mdb];";
/* char szSql[256] = "SELECT * FROM base"; */
/* char szSql[256] = "SELECT * FROM base WHERE CODNIV='00684'"; */
std::string user_req;
std::cout<<"Merci de renseigner sur 5 caractères le groupe que vous souhaitez analyser:"<<std::endl;
if (std::cin>>user_req)
{
std::string requete("SELECT * FROM base WHERE CODNIV =");
requete += "\"" + user_req + "\"";
rc=SQLselect(hSmt,requete.c_str());
}
else
{
std::count<<"Erreur"<<std::endl;
}
/* char szSql[256] = "SELECT * FROM base WHERE CODNIV='00684' and CODPRD='01.006'"; */
int ret1;
int ret2;
int ret3;
int ret4;
int ret5;
/* char CODNIV[128]; */
str::string CODNIV;
char TYPNIV[128];
char CODPRD[128];
int PRODC;
int OBJANNEE;
/* 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);
/* 3 - Execution de la requete (Apres avoir binder les champs de resultats) */
/* rc = SQLBindCol(hStmt, tab_column, tr_type, tr_value, tr_len, len_or_ind); */
rc = SQLBindCol(hStmt, 1, SQL_C_CHAR, CODNIV, 128, (SQLINTEGER*)&ret1);
rc = SQLBindCol(hStmt, 2, SQL_C_CHAR, TYPNIV, 128, (SQLINTEGER*)&ret2);
rc = SQLBindCol(hStmt, 3, SQL_C_CHAR, CODPRD, 128, (SQLINTEGER*)&ret3);
rc = SQLBindCol(hStmt, 4, SQL_C_ULONG, &PRODC, 4, (SQLINTEGER*)&ret4);
rc = SQLBindCol(hStmt, 5, SQL_C_ULONG, &OBJANNEE, 4, (SQLINTEGER*)&ret5);
rc = SQLExecute(hStmt);
/* IMPORTANT : Pour les requetes du style DROP/CREATE/UPDATE... */
/*Vous pouvez utiliser : rc = SQLExecDirectA(hStmt,(unsigned char*)szSql,SQL_NTS); */
/* 4 - Boucle pour afficher les resultats */
while(!(SQLFetch(hStmt) & 0xFFFE))
{
printf("{%s}{%s}{%s}{%i}{%i}\n",CODNIV, TYPNIV, CODPRD, PRODC, OBJANNEE);
}
/* 5 - Liberations et fermeture de la connection a la BDD */
rc = SQLFreeStmt(hStmt, SQL_DROP);
rc = SQLDisconnect(hDbc);
rc = SQLFreeEnv(hEnv);
getch();
return 0;
} |
Partager