Accueil > > > EXPORTSQL VIA ODBC : EXEMPLE D'UTILISATION
EXPORTSQL VIA ODBC : EXEMPLE D'UTILISATION
Information sur la source
Description
Dans cet exemple, je montre comment : - se connecter a une bdd de type acces, sqlserver .... via ODBC. - Executer une requete - recuperer les enregistrements. Nota cet exemple est fait pour trois colonnes d'une table
Source
- // Export SQL
- //
- // Description :
- // Permet d'exporter Le contenu d'une table dans un fichier
- //
- // Utilisation :
- // Lien Serveur Odbc, Login et Pwd
- //
- // Créateur : Trinita
- // Date de création : 28/07/2003
- //
- // Date de modification : 29/07/2003
- // Version : 1.0.0
- //
- // Nota : Il faut un link vers la librairie ODBC du Compilateur
- // Attention l'exemple est pour trois colonnes
-
-
- #include <windows.h>
-
- #include <sql.h>
- #include <sqlext.h>
- #include <sqltypes.h>
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- // Les defines
- #define MAIN_LEN 80
- #define EXPORT_FILE "./export.txt"
-
- // Les types SQL
- SQLHENV henv;
- SQLHDBC hdbc;
- SQLHSTMT hstmt;
-
- void main ( )
- {
-
- // Déclaration des variables SQL
- SQLRETURN retcode;
- SQLINTEGER cbville, cbnom, cbprenom;
- SQLCHAR szville[MAIN_LEN+1],sznom[MAIN_LEN+1],szprenom[MAIN_LEN+1];
-
- // Déclaration des variables Standart
- // Exemple de requete
- char requete[1024+1]="select ville,nom, prenom from t_client where nom='test'";
-
- char Serveur[MAIN_LEN+1]=" Le lien ODBC ";
- char Login[MAIN_LEN+1]=" LOGIN USER";
- char Pwd[MAIN_LEN+1]=" PASSWORD USER ";
- FILE *fp;
-
- printf("Début de l'exportation\n");
-
- // Création du fichier vide
- if ( (fp = fopen( EXPORT_FILE, "w")) == NULL)
- {
- printf("Attention le fichier n'existe pas !\n");
- }
- else
- {
- // Ecriture de l'entete pour les colonnes
- fprintf ( fp, "Ville\tNom\tPrenom\n");
- }
-
- // Connexion à la base de données
- retcode=SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
-
- if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
- retcode=SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3,0);
-
- if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
- retcode=SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
- else
- printf("Erreur sur l'instruction SQLAllocHandle !\n");
-
- // Vérification du Lien ODBC, Login Et Pwd
- if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
- retcode=SQLConnect(hdbc, (SQLCHAR*)Serveur, SQL_NTS, (SQLCHAR*)Login, SQL_NTS, (SQLCHAR*)Pwd, SQL_NTS);
- else
- printf("Erreur sur l'instruction SQLSetEnvAttr !\n");
-
- if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
- retcode=SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
- else
- printf("Erreur sur l'instruction SQLConnect !\n");
-
- // Execution de la requete
- if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
- retcode=SQLExecDirect(hstmt, (SQLCHAR*)requete, SQL_NTS);
- else
- printf("Erreur sur l'instruction SQLAllocHandle !\n");
-
- if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
- {
- // Récupération des informations contenu dans les champs des tables
- SQLBindCol(hstmt, 1, SQL_C_CHAR, szville, MAIN_LEN, &cbville);
- SQLBindCol(hstmt, 2, SQL_C_CHAR, sznom, MAIN_LEN, &cbnom);
- SQLBindCol(hstmt, 3, SQL_C_CHAR, szprenom, MAIN_LEN, &cbprenom);
-
- // boucle de parcours des enregistrements de la tables
- while (TRUE)
- {
- retcode = SQLFetch(hstmt);
-
- // tant qu'il y a des données
- if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
- {
- // ouverture du fichier en ajout
- if ( (fp = fopen( EXPORT_FILE, "a+")) == NULL)
- {
- printf("Attention le fichier n'existe pas !\n");
- }
- else
- {
- // Ecriture dans le fichier des enregistrements
- printf("Enregistrement de : %s\t%s\t%s\n", szville,sznom,szprenom);
- fprintf(fp, "%s\t%s\t%s\n", szville,sznom,szprenom);
- }
- fclose ( fp );
- }
- else
- break;
- }
- }
- else
- printf("Erreur sur l'instruction SQLExecDirect !\n");
-
- // Déconnexion
- SQLFreeStmt(hstmt, SQL_DROP);
- SQLDisconnect(hdbc);
- SQLFreeConnect(hdbc);
-
- printf("Fin de l'exportation\n");
- // Pause
- getchar ();
-
- }
// Export SQL
//
// Description :
// Permet d'exporter Le contenu d'une table dans un fichier
//
// Utilisation :
// Lien Serveur Odbc, Login et Pwd
//
// Créateur : Trinita
// Date de création : 28/07/2003
//
// Date de modification : 29/07/2003
// Version : 1.0.0
//
// Nota : Il faut un link vers la librairie ODBC du Compilateur
// Attention l'exemple est pour trois colonnes
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Les defines
#define MAIN_LEN 80
#define EXPORT_FILE "./export.txt"
// Les types SQL
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
void main ( )
{
// Déclaration des variables SQL
SQLRETURN retcode;
SQLINTEGER cbville, cbnom, cbprenom;
SQLCHAR szville[MAIN_LEN+1],sznom[MAIN_LEN+1],szprenom[MAIN_LEN+1];
// Déclaration des variables Standart
// Exemple de requete
char requete[1024+1]="select ville,nom, prenom from t_client where nom='test'";
char Serveur[MAIN_LEN+1]=" Le lien ODBC ";
char Login[MAIN_LEN+1]=" LOGIN USER";
char Pwd[MAIN_LEN+1]=" PASSWORD USER ";
FILE *fp;
printf("Début de l'exportation\n");
// Création du fichier vide
if ( (fp = fopen( EXPORT_FILE, "w")) == NULL)
{
printf("Attention le fichier n'existe pas !\n");
}
else
{
// Ecriture de l'entete pour les colonnes
fprintf ( fp, "Ville\tNom\tPrenom\n");
}
// Connexion à la base de données
retcode=SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
retcode=SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3,0);
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
retcode=SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
else
printf("Erreur sur l'instruction SQLAllocHandle !\n");
// Vérification du Lien ODBC, Login Et Pwd
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
retcode=SQLConnect(hdbc, (SQLCHAR*)Serveur, SQL_NTS, (SQLCHAR*)Login, SQL_NTS, (SQLCHAR*)Pwd, SQL_NTS);
else
printf("Erreur sur l'instruction SQLSetEnvAttr !\n");
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
retcode=SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
else
printf("Erreur sur l'instruction SQLConnect !\n");
// Execution de la requete
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
retcode=SQLExecDirect(hstmt, (SQLCHAR*)requete, SQL_NTS);
else
printf("Erreur sur l'instruction SQLAllocHandle !\n");
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
// Récupération des informations contenu dans les champs des tables
SQLBindCol(hstmt, 1, SQL_C_CHAR, szville, MAIN_LEN, &cbville);
SQLBindCol(hstmt, 2, SQL_C_CHAR, sznom, MAIN_LEN, &cbnom);
SQLBindCol(hstmt, 3, SQL_C_CHAR, szprenom, MAIN_LEN, &cbprenom);
// boucle de parcours des enregistrements de la tables
while (TRUE)
{
retcode = SQLFetch(hstmt);
// tant qu'il y a des données
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
// ouverture du fichier en ajout
if ( (fp = fopen( EXPORT_FILE, "a+")) == NULL)
{
printf("Attention le fichier n'existe pas !\n");
}
else
{
// Ecriture dans le fichier des enregistrements
printf("Enregistrement de : %s\t%s\t%s\n", szville,sznom,szprenom);
fprintf(fp, "%s\t%s\t%s\n", szville,sznom,szprenom);
}
fclose ( fp );
}
else
break;
}
}
else
printf("Erreur sur l'instruction SQLExecDirect !\n");
// Déconnexion
SQLFreeStmt(hstmt, SQL_DROP);
SQLDisconnect(hdbc);
SQLFreeConnect(hdbc);
printf("Fin de l'exportation\n");
// Pause
getchar ();
}
Conclusion
Pour plus d'information je reste à votre dispo...
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
[TECHDAYS2012] OUI J'Y SERAI![TECHDAYS2012] OUI J'Y SERAI! par JeremyJeanson
Bonsoir, Certes, je l'annonce avec un peu de retard, mais je serai effectivement au Techdays demain. Comme l'an dernier, je participerai au programme ATE (Ask The Expert). Si vous avez des questions Workflow, WCF, AppFabric ou plus généralement .net, n'hé...
Cliquez pour lire la suite de l'article par JeremyJeanson TFS INTEGRATION TOOLS - SUIVI DES SYNCHRONISATIONS AVEC REPORTING SERVICESTFS INTEGRATION TOOLS - SUIVI DES SYNCHRONISATIONS AVEC REPORTING SERVICES par vfabing
Afin de s'assurer du bon fonctionnement des différentes synchronisations effectuées par les TFS Integration Tools, 2 rapports sont présents dès l'installation. Il suffit alors d'effectuer les manipulations suivantes pour pouvoir les visualiser : Loca...
Cliquez pour lire la suite de l'article par vfabing CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks
Forum
RE : ARBRE BINAIRERE : ARBRE BINAIRE par pacotheking
Cliquez pour lire la suite par pacotheking
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|