Fonction JetCreateTable
S’applique à : Windows | Windows Server
Fonction JetCreateTable
La fonction JetCreateTable crée une table vide dans une base de données ESE.
JET_ERR JET_API JetCreateTable(
__in JET_SESID sesid,
__in JET_DBID dbid,
__in const tchar* szTableName,
__in unsigned long lPages,
__in unsigned long lDensity,
__out JET_TABLEID* ptableid
);
Paramètres
sesid
Contexte de session de base de données à utiliser.
dbid
Identificateur de base de données à utiliser.
szTableName
Nom de l’index à créer.
Le nom doit être mis en forme selon les règles suivantes :
Être inférieur à JET_cbNameMost, sans compter la valeur NULL de fin.
Être composé de l’ensemble de caractères suivant : 0 à 9, A à Z, a à z et toutes les autres signes de ponctuation à l’exception de « ! » (point d’exclamation), « , » (virgule), « [ » (crochet ouvrant) et « ] » (crochet fermant) : c’est-à-dire, les caractères ASCII 0x20, 0x22 par 0x2d, 0x2f par 0x5a, 0x5c 0x5d par 0x7f.
Ne pas commencer par un espace.
Être composé d’au moins un caractère autre que l’espace.
lPages
Nombre initial de pages de base de données à allouer à la table. La spécification d’un nombre supérieur à un peut réduire la fragmentation si de nombreuses lignes sont insérées dans cette table.
lDensity
Densité de table, en points de pourcentage. Le nombre doit être 0 ou compris entre 20 et 100. Passer 0 signifie que la valeur par défaut doit être utilisée. La valeur par défaut est 80.
ptableid
En cas de réussite, l’identificateur de table est retourné dans ce champ. La valeur n’est pas définie si l’API ne retourne pas JET_errSuccess.
Valeur renvoyée
Cette fonction retourne le type de données JET_ERR avec l’un des codes de retour suivants. Pour plus d’informations sur les erreurs ESE possibles, consultez Erreurs du moteur de stockage extensible et Paramètres de gestion des erreurs.
Code de retour |
Description |
---|---|
JET_errSuccess |
L’opération s’est terminée avec succès. |
JET_errCallbackNotResolved |
La fonction de rappel n’a pas pu être résolue. La DLL n’a peut-être pas été trouvée ou la fonction dans la DLL n’a peut-être pas été trouvée. Une fois la journalisation activée, le journal des événements fournit plus de détails. |
JET_errCannotIndex |
Une tentative d’indexation a été effectuée sur une colonne de mise à jour d’entiercement ou SLV (notez que les colonnes SLV sont déconseillées). |
JET_errCannotNestDDL |
Si ptablecreate-grbit> spécifie JET_bitTableCreateTemplateTable, mais ptablecreate-szTemplateTableName> a la valeur NULL. |
JET_errColumnDuplicate |
Une colonne existe déjà. |
JET_errColumnNotFound |
Une tentative d’indexation a été effectuée sur une colonne inexistante. Une tentative d’indexation conditionnelle sur une colonne inexistante peut également générer cette erreur. |
JET_errColumnRedundant |
Une tentative d’ajout d’une colonne redondante a été effectuée. Il ne doit pas y avoir plus d’une colonne de création automatique et pas plus d’une colonne de version par table. |
JET_errDensityInvalid |
Une densité non valide a été passée dans le membre ulDensity dans la structure JET_TABLECREATE ou JET_TABLECREATE2 . |
JET_errDDLNotInheritable |
Signifie que la table nommée dans le membre szTemplateTableName de la structure JET_TABLECREATE n’était pas marquée comme table modèle (autrement dit, cette table n’avait pas JET_bitTableCreateTemplateTable définie). |
JET_errIndexDuplicate |
Une tentative a été effectuée pour définir deux index identiques. |
JET_errIndexHasPrimary |
Une tentative a été effectuée pour spécifier plusieurs index principaux pour une table. Une table doit avoir exactement un index principal. Si aucun index principal n’est spécifié, le moteur de base de données en crée un en toute transparence. |
JET_errIndexInvalidDef |
Une définition d’index non valide a été spécifiée. Voici quelques-unes des raisons possibles de la réception de cette erreur :
|
JET_errIndexTuplesInvalidLimits |
Windows XP et versions ultérieures. Une structure JET_TUPLELIMITS a été spécifiée et ses limites ne sont pas prises en charge. Consultez la section remarques de la structure JET_TUPLELIMITS . |
JET_errIndexTuplesNonUniqueOnly |
Windows XP et versions ultérieures. Un index de tuple ne peut pas être unique (autrement dit, le membre grbit de la structure JET_INDEXCREATE ne doit pas avoir à la fois JET_bitIndexPrimary et JET_bitIndexUnique définis). |
JET_errIndexTuplesOneColumnOnly |
Windows XP et versions ultérieures. Un index de tuple ne peut se trouver que sur une seule colonne (autrement dit, si le membre grbit de la structure JET_INDEXCREATE a JET_bitIndexTuples défini et que le membre szKey de la structure JET_INDEXCREATE spécifie plusieurs colonnes). |
JET_errIndexTuplesSecondaryIndexOnly |
Windows XP et versions ultérieures. Un index de tuple ne peut pas être un index principal (autrement dit, le membre grbit de la structure JET_INDEXCREATE ne doit pas avoir à la fois JET_bitIndexPrimary et JET_bitIndexTuples défini). |
JET_errIndexTuplesVarSegMacNotAllowed |
Windows XP et versions ultérieures. Un index de tuple n’autorise pas la définition du membre cbVarSegMac de la structure JET_INDEXCREATE . |
JET_errIndexTuplesTextColumnsOnly |
Windows XP et versions ultérieures. Un index de tuple ne peut se trouver que sur une colonne texte ou Unicode. Une tentative d’indexer d’autres colonnes (telles que des colonnes binaires) entraîne JET_errIndexTuplesTextColumnsOnly. |
JET_errInTransaction |
Une tentative de création d’un index sans informations de version a été effectuée lors d’une transaction. |
JET_errInvalidCodePage |
Le membre cp de la structure JET_COLUMNCREATE n’a pas été défini sur une page de codes valide. Les seules valeurs valides pour les colonnes de texte sont Anglais (1252) et Unicode (1200). La valeur 0 signifie que la valeur par défaut sera utilisée (anglais, 1252). |
JET_errInvalidColumnType |
Le membre coltyp de la structure JET_COLUMNCREATE n’a pas été défini sur un type de colonne valide. |
JET_errInvalidCreateIndex |
Voici quelques-unes des raisons pour lesquelles cette erreur peut se produire :
|
JET_errInvalidgrbit |
Une combinaison non valide de membres grbit a été spécifiée dans JET_TABLECREATE ou JET_TABLECREATE2. La définition de l’index n’est pas valide, car le membre grbit contient des valeurs incohérentes. Voici quelques raisons possibles :
|
JET_errInvalidLanguageId |
Un ID de paramètres régionaux (LCID) non valide a été transmis (soit par le biais du membre lcid de la structure JET_UNICODEINDEX pointé par le membre pidxunicode dans la structure JET_INDEXCREATE , soit par le biais du champ lcid de la structure JET_INDEXCREATE ). |
JET_errInvalidParameter |
Un paramètre non valide a été donné. Voici quelques raisons possibles :
|
JET_errRecordTooBig |
Le record est trop gros. La somme du membre cbMax de la structure JET_COLUMNCREATE pour toutes les colonnes fixes ne doit pas dépasser une certaine valeur. |
JET_errTableDuplicate |
La table existe déjà. |
JET_errTooManyColumns |
Une tentative d’ajout de trop de colonnes à la table a été effectuée. Une table ne peut pas avoir plus de JET_ccolFixedMost colonnes fixes, pas plus de JET_ccolVarMost colonnes de longueur variable et pas plus de JET_ccolTaggedMost colonnes étiquetées. |
JET_errUnicodeTranslationFail |
Une erreur s’est produite lors de la tentative de normalisation d’une colonne Unicode. Cela peut être dû à l’épuisement des ressources système. |
Notes
JetCreateTable crée une table qui ne contient aucune colonne. Pour ajouter des colonnes, consultez JetAddColumn.
En interne, JetCreateTable appelle JetCreateTableColumnIndex2, en remplissant une structure JET_TABLECREATE2 avec :
JET_TABLECREATE2.cbStruct = sizeof( JET_TABLECREATE2 )
JET_TABLECREATE2.szTableName = szTableName
JET_TABLECREATE2.ulPages = lPage
JET_TABLECREATE2.ulDensity = lDensity
JET_TABLECREATE2.tableid = JET_tableidNil
Tous les autres champs de la structure de JET_TABLECREATE2 interne sont définis sur zéro ou NULL. Lors de la sortie, ptableid est défini sur JET_TABLECREATE2.tableid.
Pour plus d’informations, consultez JetCreateTableColumnIndex2 .
Comme JetOpenTable, lorsque l’application est terminée à l’aide du membre tableid retourné à partir de la structure JET_TABLECREATE2 , elle doit généralement être fermée avec JetCloseTable.
Spécifications
Condition requise | Valeur |
---|---|
Client |
Nécessite Windows Vista, Windows XP ou Windows 2000 Professionnel. |
Serveur |
Nécessite Windows Server 2008, Windows Server 2003 ou Windows 2000 Server. |
En-tête |
Déclaré dans Esent.h. |
Bibliothèque |
Utilisez ESENT.lib. |
DLL |
Nécessite ESENT.dll. |
Unicode |
Implémenté en tant que JetCreateTableW (Unicode) et JetCreateTableA (ANSI). |
Voir aussi
JET_DBID
JET_ERR
JET_GRBIT
JET_TABLEID
JET_TABLECREATE2
JetAddColumn
JetCreateTableColumnIndex
JetCreateTableColumnIndex2