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