Funzione JetCreateTable
Si applica a: Windows | Windows Server
Funzione JetCreateTable
La funzione JetCreateTable crea una tabella vuota in un database 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
);
Parametri
sesid
Contesto della sessione del database da utilizzare.
dbid
Identificatore del database da utilizzare.
szTableName
Nome dell'indice da creare.
Il nome deve essere formattato in base alle regole seguenti:
Essere minore di JET_cbNameMost, senza includere il valore NULL di terminazione.
Deve essere costituito dal set di caratteri seguente: da 0 a 9, da A a Z, da a z e da tutte le altre punteggiatura ad eccezione di "!" (punto esclamativo), "," (virgola), "[" (parentesi quadra di apertura) e "]" (parentesi chiusa), ovvero caratteri ASCII 0x20, 0x22 attraverso 0x2d, 0x2f attraverso 0x5a, 0x5c, 0x5d tramite 0x7f.
Non iniziare con uno spazio.
Deve essere costituito da almeno un carattere diverso da uno spazio.
lPages
Numero iniziale di pagine di database da allocare per la tabella. Specificando un numero maggiore di uno, è possibile ridurre la frammentazione se vengono inserite molte righe in questa tabella.
lDensity
Densità della tabella, espressa in punti percentuali. Il numero deve essere 0 o compreso nell'intervallo compreso tra 20 e 100. Se si passa 0, il valore predefinito deve essere usato. Il valore predefinito è 80.
ptableid
In caso di esito positivo, l'identificatore della tabella viene restituito in questo campo. Il valore non è definito se l'API non restituisce JET_errSuccess.
Valore restituito
Questa funzione restituisce il tipo di dati JET_ERR con uno dei codici restituiti seguenti. Per altre informazioni sui possibili errori ESE, vedere Errori del motore di archiviazione estendibile e parametri di gestione degli errori.
Codice restituito |
Descrizione |
---|---|
JET_errSuccess |
Operazione riuscita. |
JET_errCallbackNotResolved |
Impossibile risolvere la funzione di callback. La DLL potrebbe non essere stata trovata o la funzione nella DLL potrebbe non essere stata trovata. Con la registrazione sufficiente abilitata, il registro eventi fornirà altri dettagli. |
JET_errCannotIndex |
È stato effettuato un tentativo di indicizzazione su una colonna di aggiornamento del deposito o SLV. Si noti che le colonne SLV sono deprecate. |
JET_errCannotNestDDL |
Se ptablecreate-grbit> specifica JET_bitTableCreateTemplateTable, ma ptablecreate-szTemplateTableName> è impostato su NULL. |
JET_errColumnDuplicate |
Esiste già una colonna. |
JET_errColumnNotFound |
È stato effettuato un tentativo di indicizzazione su una colonna inesistente. Anche il tentativo di indicizzare in modo condizionale su una colonna inesistente può generare questo errore. |
JET_errColumnRedundant |
Si è tentato di aggiungere una colonna ridondante. Non deve essere presente più di una colonna di rilevamento automatico e non più di una colonna di versione per tabella. |
JET_errDensityInvalid |
È stata passata una densità non valida nel membro ulDensity nella struttura JET_TABLECREATE o JET_TABLECREATE2 . |
JET_errDDLNotInheritable |
Indica che la tabella denominata nel membro szTemplateTableName della struttura JET_TABLECREATE non è stata contrassegnata come tabella modello, ovvero tale tabella non ha JET_bitTableCreateTemplateTable impostato. |
JET_errIndexDuplicate |
È stato effettuato un tentativo di definire due indici identici. |
JET_errIndexHasPrimary |
È stato effettuato un tentativo di specificare più indici primari per una tabella. Una tabella deve avere esattamente un indice primario. Se non viene specificato alcun indice primario, il motore di database ne creerà in modo trasparente uno. |
JET_errIndexInvalidDef |
È stata specificata una definizione di indice non valida. Alcuni dei possibili motivi per la ricezione di questo errore sono:
|
JET_errIndexTuplesInvalidLimits |
Windows XP e versioni successive. È stata specificata una struttura JET_TUPLELIMITS e i relativi limiti non sono supportati. Vedere la sezione osservazioni della struttura JET_TUPLELIMITS . |
JET_errIndexTuplesNonUniqueOnly |
Windows XP e versioni successive. Un indice di tupla non può essere univoco, ovvero il membro grbit della struttura JET_INDEXCREATE non deve avere sia JET_bitIndexPrimary che JET_bitIndexUnique impostato. |
JET_errIndexTuplesOneColumnOnly |
Windows XP e versioni successive. Un indice di tupla può essere posizionato solo su una singola colonna, ovvero se il membro grbit della struttura JET_INDEXCREATE ha JET_bitIndexTuples impostato e il membro szKey della struttura JET_INDEXCREATE specifica più colonne. |
JET_errIndexTuplesSecondaryIndexOnly |
Windows XP e versioni successive. Un indice di tupla non può essere un indice primario, ovvero il membro grbit della struttura JET_INDEXCREATE non deve avere sia JET_bitIndexPrimary che JET_bitIndexTuples impostato. |
JET_errIndexTuplesVarSegMacNotAllowed |
Windows XP e versioni successive. Un indice di tupla non consente di impostare il membro cbVarSegMac della struttura JET_INDEXCREATE . |
JET_errIndexTuplesTextColumnsOnly |
Windows XP e versioni successive. Un indice di tupla può trovarsi solo in una colonna di testo o Unicode. Un tentativo di indicizzazione di altre colonne (ad esempio colonne binarie) comporterà JET_errIndexTuplesTextColumnsOnly. |
JET_errInTransaction |
È stato effettuato un tentativo di creare un indice senza informazioni sulla versione durante una transazione. |
JET_errInvalidCodePage |
Il membro cp della struttura JET_COLUMNCREATE non è stato impostato su una tabella codici valida. Gli unici valori validi per le colonne di testo sono inglese (1252) e Unicode (1200). Il valore 0 indica che verrà usato il valore predefinito (inglese, 1252). |
JET_errInvalidColumnType |
Il membro coltyp della struttura JET_COLUMNCREATE non è stato impostato su un tipo di colonna valido. |
JET_errInvalidCreateIndex |
Alcuni dei motivi per cui questo errore può verificarsi:
|
JET_errInvalidgrbit |
È stata specificata una combinazione non valida di membri grbit in JET_TABLECREATE o JET_TABLECREATE2. La definizione dell'indice non è valida perché il membro grbit contiene valori incoerenti. Ecco alcuni possibili motivi:
|
JET_errInvalidLanguageId |
È stato passato un ID impostazioni locali (LCID) non valido (tramite il membro lcid della struttura JET_UNICODEINDEX a cui punta il membro pidxunicode nella struttura JET_INDEXCREATE o tramite il campo lcid della struttura JET_INDEXCREATE ). |
JET_errInvalidParameter |
È stato specificato un parametro non valido. Ecco alcuni possibili motivi:
|
JET_errRecordTooBig |
Il record è troppo grande. La somma del membro cbMax della struttura JET_COLUMNCREATE per tutte le colonne fisse non deve superare un determinato valore. |
JET_errTableDuplicate |
La tabella esiste già. |
JET_errTooManyColumns |
È stato effettuato un tentativo di aggiungere troppe colonne alla tabella. Una tabella non può contenere più di JET_ccolFixedMost colonne fisse, non più di JET_ccolVarMost colonne a lunghezza variabile e non più di JET_ccolTaggedMost colonne con tag. |
JET_errUnicodeTranslationFail |
Si è verificato un errore durante il tentativo di normalizzare una colonna Unicode. Ciò può essere causato dall'esaurimento delle risorse di sistema. |
Commenti
JetCreateTable crea una tabella che non contiene colonne. Per aggiungere colonne, vedere JetAddColumn.
Internamente , JetCreateTable chiama JetCreateTableColumnIndex2, compilando una struttura JET_TABLECREATE2 con:
JET_TABLECREATE2.cbStruct = sizeof( JET_TABLECREATE2 )
JET_TABLECREATE2.szTableName = szTableName
JET_TABLECREATE2.ulPages = lPage
JET_TABLECREATE2.ulDensity = lDensity
JET_TABLECREATE2.tableid = JET_tableidNil
Tutti gli altri campi della struttura JET_TABLECREATE2 interna sono impostati su zero o NULL. Nell'output , ptableid verrà impostato su JET_TABLECREATE2.tableid.
Per altri dettagli, vedere JetCreateTableColumnIndex2 .
Analogamente a JetOpenTable, quando l'applicazione viene eseguita usando il membro tableid restituito dalla struttura JET_TABLECREATE2, in genere deve essere chiuso con JetCloseTable.
Requisiti
Requisito | Valore |
---|---|
Client |
Richiede Windows Vista, Windows XP o Windows 2000 Professional. |
Server |
Richiede Windows Server 2008, Windows Server 2003 o Windows 2000 Server. |
Intestazione |
Dichiarato in Esent.h. |
Libreria |
Usare ESENT.lib. |
DLL |
Richiede ESENT.dll. |
Unicode |
Implementato come JetCreateTableW (Unicode) e JetCreateTableA (ANSI). |
Vedere anche
JET_DBID
JET_ERR
JET_GRBIT
JET_TABLEID
JET_TABLECREATE2
JetAddColumn
JetCreateTableColumnIndex
JetCreateTableColumnIndex2