Soyez le premier à donner votre avis sur cette source.
Vue 8 447 fois - Téléchargée 984 fois
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); } } }
N.B. j'ai fais une erreur, c'est :
sprintf(requete,"INSERT INTO %s (%s) ...",NameTable,Colonne);
-------------------------------------
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.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.