|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
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...
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Comparez les prix Nouvelle version
|