int sql()
{
    bool err = 0;
    
    int i = 0, n;
   
...
    
    char fic_rpt[MS_MAX], l[MS_MAX2];
    char       ... horodatage[MS_MAX + 1];  
...
    char requete[1024+1];
    char Serveur[MS_MAX+1]="Mon_Serveur";
    char Login[MAIN_LEN+1]="MonLogin";
    char Pwd[MAIN_LEN+1]="MonPass";	
    
    FILE *fch;
 
    time_t temps;
    struct tm date;
 
    SQLRETURN retcode;
 ...
                 			
    // 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
    {
        fprintf(stderr, "ERREUR!!! sql() : Erreur sur l'instruction SQLAllocHandle\n");
        sprintf(g_mess_err, "Erreur sur l'instruction SQLAllocHandle");
        err = 1;
    }
    	
    // 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{
        fprintf(stderr, "ERREUR!!! sql() : Erreur sur l'instruction SQLSetEnvAttr\n");
        sprintf(g_mess_err, "Erreur sur l'instruction SQLSetEnvAttr");
        err = 1;}
	        				
    if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
        retcode=SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
    else{
        SQLCHAR sqlstate[5+1];
        SQLCHAR sqlmessage[SQL_MAX_MESSAGE_LENGTH+1];
        SQLGetDiagRec(SQL_HANDLE_DBC,hdbc,1,sqlstate,NULL,sqlmessage,NULL,NULL);
        printf("SQLSTATE=%s.\n",sqlstate);
        printf("MESSAGE_TEXT=%s.\n",sqlmessage);
        fprintf(stderr, "ERREUR!!! sql() : Erreur sur l'instruction SQLConnect\n");
        sprintf(g_mess_err, "Erreur sur l'instruction SQLConnect");
        err = 1;
        }
     				 
    if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
    {
        /* Ouverture du fichier */
        sprintf(fic_rpt, "%s...
        if (!(fch = fopen(fic_rpt, "r"))) 
        {
           fprintf(stderr, "ERREUR!!! : Pb ouverture fichier %s\n",
                             fic_rpt);
           sprintf(g_mess_err, "Pb ouverture fichier %s", fic_rpt);
           fclose(fch); err = 1;
        }
        
        /* récupération et insertion en base */
        while (fgets(l, MS_MAX2, fch)) 
        {           
             if (i == 0) {i++; continue;} /* entete */
...
                         
             if(sscanf(l, "%d ; %s ; %s ; %s ; %ld ; %ld ; %ld ; %d ; %d ; %d%n", 
...
                &n) != 10)
             {
                   fprintf(stderr, "ERREUR!!! : pb formatage de %s :\n", 
                                     fic_rpt);
                   fprintf(stderr, "%s\n", l);
                   sprintf(g_mess_err, "pb formatage de %s (%s)", fic_rpt, l);
                   fclose(fch); err = 1; continue;             
             }
                          
             // Execution de la requete (insertion en base de la ligne...)
             sprintf(requete, "insert into [Mon_Serveur].[dbo].[MaTable] VALUES ('%s',%s,'%d','%s','%s','%s','%ld','%ld','%ld','%d','%d','%d')",
       ...);
             if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
                retcode=SQLExecDirect(hstmt, (SQLCHAR*)requete, SQL_NTS);
             else{
                if (i == 1) fprintf(stderr, "ERREUR!!! sql() : Erreur sur l'instruction SQLAllocHandle\n");
                else fprintf(stderr, "ERREUR!!! sql() : Erreur sur l'instruction SQLExecDirect\n");
                sprintf(g_mess_err, "Erreur sur l'instruction SQLExecDirect ou SQLAllocHandle");
                err = 1; break;}
             i++;   
        }
        fclose(fch);
    }
    else{
        fprintf(stderr, "ERREUR!!! sql() : Erreur sur l'instruction SQLExecDirect\n");
        sprintf(g_mess_err, "Erreur sur l'instruction SQLExecDirect");
        err = 1;}
    							
    // Déconnexion 
    SQLFreeStmt(hstmt, SQL_DROP);
    SQLDisconnect(hdbc);
    SQLFreeConnect(hdbc);
    
    if (err) return -1;
    
    return 0;	
}
			
		
 
	
Partager