begin process at 2012 02 13 06:12:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > IMPORSQL -> IMPORTATION DE FICHIER AVEC UN LIEN ODBC

IMPORSQL -> IMPORTATION DE FICHIER AVEC UN LIEN ODBC


 Information sur la source

Note :
Aucune note
Catégorie :Base de données Niveau :Débutant Date de création :13/06/2003 Date de mise à jour :15/04/2004 22:05:31 Vu / téléchargé :6 900 / 675

Auteur : Trinita16

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Ce programme permet d'importer un fichier dans une base de donnée de type SQL Server ou Acces avec les autres je n'ai pas testé. Pour ce faire il suffit de créer un lien ODBC.

Le format du fichier d'import est décrit dans l'aide ou plus bas  

Version 1.0.2 :
Porter sous le compilateur Dec C++
Controle de la bonne execution de la requete 'Insert' et retour du code erreur

Source

  • Extrait du code l'importation du fichier :
  • /* Lancement de l'importation */
  • void ImportFile ( HWND, char ServeurODBC[MAIN_LEN+1], char LoginAdmin[MAIN_LEN+1], char PwdAdmin[MAIN_LEN+1], char DirFile[MAIN_LEN+1], char NameTable[MAIN_LEN+1], char Colonne[LONG_LEN+1] )
  • {
  • // Déclaration des variables
  • SQLRETURN retcode;
  • char requete[1024+1]="";
  • char buffer[1024+1]="";
  • FILE *fp;
  • // Vérification de la présence du fichier
  • if ( (fp = fopen( DirFile, "rb")) == NULL)
  • {
  • /* Erreur impossible de creer le fichier de sortie */
  • MessageBox(hWndMain,"Attention le fichier n'existe pas !","Erreur",MB_OK|MB_ICONERROR);
  • }
  • else
  • {
  • // Vérification de la présence de colonnes
  • if ( strlen ( Colonne ) !=0 )
  • {
  • // Insertion des valeurs contenu dans le fichier
  • while ( fgets ( buffer, 1024, fp) != NULL )
  • {
  • // Contruction de la requete du type INSERT INTO MaTable (Monchamp1, MonChamp2 ....) VALUES ( MaValeur1, MaValeur2 ...)
  • strcpy ( requete, "INSERT INTO ");
  • strcat ( requete, NameTable);
  • strcat ( requete, " (");
  • strcat ( requete, Colonne);
  • strcat ( requete, ")");
  • strcat ( requete, " VALUES ");
  • strcat ( requete, "(");
  • strcat ( requete, buffer );
  • strcat ( requete, ")");
  • MessageBox(hWndMain,requete,"DEBUG",MB_OK|MB_ICONINFORMATION);
  • // 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);
  • if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
  • retcode=SQLConnect(hdbc, (SQLCHAR*)ServeurODBC, SQL_NTS, (SQLCHAR*)LoginAdmin, SQL_NTS, (SQLCHAR*)PwdAdmin, SQL_NTS);
  • else
  • {
  • MessageBox(hWndMain,"Impossible de se connecter à la base de données","Erreur",MB_OK|MB_ICONERROR);
  • return;
  • }
  • if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
  • retcode=SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
  • if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
  • {
  • retcode=SQLExecDirect(hstmt, (SQLCHAR*)requete, SQL_NTS);
  • if( retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO )
  • {
  • // OK
  • }
  • else
  • {
  • sprintf( Erreur, "Impossible d'executer la requete ! code => %x", SQL_ERROR);
  • MessageBox(hWndMain,Erreur,"Erreur",MB_OK|MB_ICONERROR);
  • break;
  • }
  • }
  • else
  • {
  • MessageBox(hWndMain,"Impossible de se connecter à la base de données","Erreur",MB_OK|MB_ICONERROR);
  • }
  • /* Déconnexion */
  • SQLFreeStmt(hstmt, SQL_DROP);
  • SQLDisconnect(hdbc);
  • SQLFreeConnect(hdbc);
  • }
  • fclose(fp);
  • MessageBox(hWndMain,"Fin de la procédure d'importation","Information",MB_OK|MB_ICONINFORMATION);
  • }
  • }
  • }
Extrait du code l'importation du fichier :

/* Lancement de l'importation */
void ImportFile ( HWND, char ServeurODBC[MAIN_LEN+1], char LoginAdmin[MAIN_LEN+1], char PwdAdmin[MAIN_LEN+1], char DirFile[MAIN_LEN+1], char NameTable[MAIN_LEN+1], char Colonne[LONG_LEN+1] )
{
// Déclaration des variables
SQLRETURN retcode;
char requete[1024+1]="";
char buffer[1024+1]="";
FILE *fp;
	
// Vérification de la présence du fichier
if ( (fp = fopen( DirFile, "rb")) == NULL)
{
/* Erreur impossible de creer le fichier de sortie */
MessageBox(hWndMain,"Attention le fichier n'existe pas !","Erreur",MB_OK|MB_ICONERROR);
}
else
{
// Vérification de la présence de colonnes
if ( strlen ( Colonne ) !=0 )
{
// Insertion des valeurs contenu dans le fichier
while ( fgets ( buffer, 1024, fp) != NULL )
{
// Contruction de la requete du type INSERT INTO MaTable (Monchamp1, MonChamp2 ....) VALUES ( MaValeur1, MaValeur2 ...)
strcpy ( requete, "INSERT INTO ");
strcat ( requete, NameTable);
strcat ( requete, " (");
strcat ( requete, Colonne);
strcat ( requete, ")");
strcat ( requete, " VALUES ");
strcat ( requete, "(");		   		
strcat ( requete, buffer );
strcat ( requete, ")");

MessageBox(hWndMain,requete,"DEBUG",MB_OK|MB_ICONINFORMATION);

// 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);
				
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
retcode=SQLConnect(hdbc, (SQLCHAR*)ServeurODBC, SQL_NTS, (SQLCHAR*)LoginAdmin, SQL_NTS, (SQLCHAR*)PwdAdmin, SQL_NTS);
else
{
MessageBox(hWndMain,"Impossible de se connecter à la base de données","Erreur",MB_OK|MB_ICONERROR);
return;
}
				
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
retcode=SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
				
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode=SQLExecDirect(hstmt, (SQLCHAR*)requete, SQL_NTS);
				  				
if( retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO )
{
  // OK
}
else
{
sprintf( Erreur, "Impossible d'executer la requete ! code => %x", SQL_ERROR);
                        
MessageBox(hWndMain,Erreur,"Erreur",MB_OK|MB_ICONERROR);
break;
}
}				    
else
{
MessageBox(hWndMain,"Impossible de se connecter à la base de données","Erreur",MB_OK|MB_ICONERROR);
}
							
/* Déconnexion */
SQLFreeStmt(hstmt, SQL_DROP);
SQLDisconnect(hdbc);
SQLFreeConnect(hdbc);
				
				
}
fclose(fp);
			
MessageBox(hWndMain,"Fin de la procédure d'importation","Information",MB_OK|MB_ICONINFORMATION);

}
}
} 

 Conclusion

Voici l'aide pour comprendre le fonctionnement :

Contenu de l'aide :
Aide sur Import SQL by ODBC

Groupe "Connexion" :
- Serveur : Indique le nom du lien ODBC.
    Celui ci doit être configuré dans Source de données.
- Login : Indique le login de connexion à la base de donnée.
- Password : Indique le password de connexion à la base de donnée.

Groupe "Fichier à importer" :
Permet de saissir le chemin complet du fichier à importer. Ou bien
de sélectionner le fichier en cliquant sur le bouton "...". Le format
du fichier sera décrit après.

Groupe "Requete" :
- Table : Indique le nom de la table dans laquelle les enregistrements
  seront importés.
- Colonne : Indique le nom des différentes colonnes de la table séparées
    par une virgule.

Description du fichier à importer :
Le fichier à importer doit contenir le même nombre de champs que
de colonne saissi et les différentes valeurs doivent t'être séparées
par des virgules. Attention les champs spéciaux doivent avoir les cotes !

Trinita  

 Fichier Zip

Les Membres Club peuvent 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

Source avec Zip EXPORTSQL VIA ODBC : EXEMPLE D'UTILISATION
Source avec une capture GETFILEFTP : PERMET DE RÉCUPÉRER UN FICHIER SUR UN SERVEUR F...
STRTOK : EXEMPLE D'UTILISATION
Source avec Zip ENVOI DE FICHIER PAR FTP (SENDFILEFTP)
Source avec Zip DIVERS OUTILS WINDOWS : ENREGISTRER-SOUS...

 Sources de la même categorie

GESTION DE FICHIER ET DOSSIER + AUTRES par shinji63
Source avec une capture CONVERTISSEUR par smartties
Source avec Zip CREATION D'UN FICHIER DBF (EN C) par Stanel
Source avec Zip STRUCTURE DES FICHIERS DBF par Stanel
Source avec Zip Source avec une capture GESTION DES ENTREES/ SORTIES AVEC CODEBARRE par YvaddavY

Commentaires et avis

Commentaire de JCDjcd le 13/06/2003 23:37:57

Au lieu de faire :
-------------------------------------
strcpy ( requete, "INSERT INTO ");
strcat ( requete, NameTable);
strcat ( requete, " (");
strcat ( requete, Colonne);
strcat ( requete, ")");
strcat ( requete, " VALUES ");
strcat ( requete, "(");                
strcat ( requete, buffer );
strcat ( requete, ")");
-------------------------------------

tu pourrais faire :

-------------------------------------
sprintf("INSERT INTO %s (%s) ...",NameTable,Colonne);
-------------------------------------

C'est juste plus rapide.

Commentaire de Trinita16 le 13/06/2003 23:45:15

Peut être mais la c'est mieux détaillé je trouve !

Commentaire de JCDjcd le 14/06/2003 08:01:13

C'est vrai.
N.B. j'ai fais une erreur, c'est :
sprintf(requete,"INSERT INTO %s (%s) ...",NameTable,Colonne);

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,182 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales