Odbc connexion mdb et creation table (win32)

Soyez le premier à donner votre avis sur cette source.

Vue 15 875 fois - Téléchargée 9 135 fois

Description

C'est juste une demo minimale faite pour question forum.
Fonctions:
OdbcConnEnvCreate()
OdbcMdbConnect(int bReadOnly, char* dbname, char* dbpwd)
OdbcExecAction(char *pszqry) // RETOURNE != 0 SI ERREUR

Une base vide Tmp.mdb fournie pour tests.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
merci beaucoup !
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
21
void OdbcEnumFields()
{ // return != 0 SI ERREUR
SQLHANDLE hstmt;
char *c;
lerror = 1;
retcd = SQLAllocHandle(SQL_HANDLE_STMT, hconn, &hstmt);
if(retcd & 0xFFFE) return;
retcd = SQLColumns(hstmt, 0, 0, 0, 0, szTableName, SQL_NTS, 0, 0);
if(retcd & 0xFFFE) goto fieldsFree;
SQLBindCol(hstmt, 4, SQL_C_CHAR, szColumnName, STR_LEN, &cbColumnName);
SQLBindCol(hstmt, 5, SQL_C_SSHORT, &DataType, 0, &cbDataType);
SQLBindCol(hstmt, 6, SQL_C_CHAR, szTypeName, STR_LEN, &cbTypeName);
SQLBindCol(hstmt, 7, SQL_C_SLONG, &ColumnSize, 0, &cbColumnSize);
SQLBindCol(hstmt, 8, SQL_C_SLONG, &BufferLength, 0, &cbBufferLength);
SQLBindCol(hstmt, 9, SQL_C_SSHORT, &DecimalDigits, 0, &cbDecimalDigits);
SQLBindCol(hstmt, 10, SQL_C_SSHORT, &NumPrecRadix, 0, &cbNumPrecRadix);
SQLBindCol(hstmt, 11, SQL_C_SSHORT, &Nullable, 0, &cbNullable);
SQLBindCol(hstmt, 12, SQL_C_CHAR, szRemarks, REM_LEN, &cbRemarks);
SQLBindCol(hstmt, 13, SQL_C_CHAR, szColumnDefault, STR_LEN, &cbColumnDefault);
SQLBindCol(hstmt, 14, SQL_C_SSHORT, &SQLDataType, 0, &cbSQLDataType);
SQLBindCol(hstmt, 15, SQL_C_SSHORT, &DatetimeSubtypeCode, 0, &cbDatetimeSubtypeCode);
SQLBindCol(hstmt, 16, SQL_C_SLONG, &CharOctetLength, 0, &cbCharOctetLength);
SQLBindCol(hstmt, 17, SQL_C_SLONG, &OrdinalPosition, 0, &cbOrdinalPosition);
SQLBindCol(hstmt, 18, SQL_C_CHAR, szIsNullable, STR_LEN, &cbIsNullable);
nextField:
c = szbuff;
retcd = SQLFetch(hstmt);
if(retcd & 0xFFFE) goto fieldEnd;
*c 32; *(c+1) 'F'; *(c+2) = 'l'; *(c+2) = 'd'; *(c+3) = '(';
c = bnultoa(OrdinalPosition, c+4);
*c ')'; *(c+1) 32;
c = bnstrcpy(c+2, (char*)szColumnName);
*c ','; *(c+1) 32;
c = bnstrcpy(c+2, (char*)szTypeName);
if(DataType == 12) {
*c 32; c bnultoa(ColumnSize, c+1);
}

MessageBox(0, szbuff, szappname, 0x40);
goto nextField;
fieldEnd: lerror = 0;
fieldsFree: SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
}
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
euh excuse moi... c'est juste a propos de la fonction que tu as poster, tu as oublier de mettre la fonction:
OdbcEnumFields();
si tu pouvais la rejouter ca serait super !
merci par avance et excuse pour le derangement !
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
ok, je vais regarder cela !
merci a toi BruNews !
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
21
Voila un début, pas trop le temps d'aller plus loin en ce moment:
#define STR_LEN 132
long lerror = 0;
SQLINTEGER cbTableName, cbTypeName;
SQLCHAR szTableName[STR_LEN];
SQLCHAR szTypeName[STR_LEN];

void OdbcEnumTables()
{ // return != 0 SI ERREUR
SQLHANDLE hstmt;
lerror = 1; // presume erreur
retcd = SQLAllocHandle(SQL_HANDLE_STMT, hconn, &hstmt);
if(retcd & 0xFFFE) return;
retcd = SQLTables(hstmt, 0, 0, 0, 0, 0, SQL_NTS, 0, 0);
if(retcd & 0xFFFE) goto tablesFree;
SQLBindCol(hstmt, 3, SQL_C_CHAR, szTableName, STR_LEN,&cbTableName);
SQLBindCol(hstmt, 4, SQL_C_CHAR, szTypeName, STR_LEN, &cbTypeName);
nextTable:
retcd = SQLFetch(hstmt);
if(retcd & 0xFFFE) goto tablesEnd;
if(szTypeName[0] != 'T') goto nextTable;
if(szTypeName[1] != 'A') goto nextTable;
if(szTypeName[5] != 0) goto nextTable;
MessageBox(0, (char*)szTableName, "TABLE", MB_ICONINFORMATION);
OdbcEnumFields();
goto nextTable;
tablesEnd: lerror = 0;
tablesFree: SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
}
Afficher les 6 commentaires

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.