Freigeben über


JetCreateTable-Funktion

Letzte Änderung: Freitag, 27. Februar 2015

Gilt für: Windows | Windows Server

JetCreateTable-Funktion

Die JetCreateTable -Funktion erstellt eine leere Tabelle in einer ESE-Datenbank.

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
);

Parameter

sesid

Die Sitzungskontext für die Datenbank verwenden.

DBID

Die Datenbank-ID verwendet.

szTableName

Der Name des Indexes zu erstellen.

Der Name muss gemäß den folgenden Regeln formatiert sein:

  • Kleiner sein als der JET_cbNameMost, einschließlich nicht das abschließende NULLZEICHEN.

  • Werden von den folgenden Satz von Zeichen: 0-9, A bis Z, a bis z und alle anderen Interpunktionszeichen mit Ausnahme von "!" (Ausrufezeichen) "," (Komma), "[" (eckige Klammer links) und "]" (eckige Klammer rechts) – d. h. ASCII-Zeichen 0 x 20, 0 x 22 bis 0x2d, 0x2f durch 0x5a, 0x5c, 0x5d bis 0x7f.

  • Nicht mit einem Leerzeichen beginnen.

  • Werden, der mindestens ein nicht-Leerzeichen.

lPages

Die anfängliche Anzahl der Datenbankseiten, die für die Tabelle reserviert werden. Durch Angeben einer Zahl, die größer als eine Fragmentierung reduzieren kann, wenn viele Zeilen in diese Tabelle eingefügt werden.

lDensity

Die Tabelle Dichte Prozentpunkte. Die Zahl muss entweder 0 oder im Bereich von 20 bis 100 sein. Übergeben 0 bedeutet, dass der Standardwert verwendet werden soll. Der Standardwert ist 80.

ptableid

Bei Erfolg wird in diesem Feld die Verzeichnis-ID zurückgegeben. Der Wert ist nicht definiert, wenn die API keine JET_errSuccess zurückgibt.

Return Value

Diese Funktion gibt den Datentyp der JET_ERR mit einem der folgenden Rückgabecodes. Weitere Informationen zu den möglichen ESE-Fehlern finden Sie unter Extensible Storage Engine-Fehler und Fehler behandeln Parameter.

Rückgabecode

Beschreibung

JET_errSuccess

Der Vorgang wurde erfolgreich abgeschlossen.

JET_errCallbackNotResolved

Die Callback-Funktion konnte nicht aufgelöst werden. Die DLL kann nicht gefunden, oder die Funktion in der DLL kann nicht gefunden werden. Ausreichende Protokollierung aktiviert, wird das Ereignisprotokoll weitere Details bereitstellen.

JET_errCannotIndex

Es wurde versucht, über einen Treuhandservice-Update oder SLV-Spalte (Beachten Sie, dass Spalten SLV veraltet sind) indizieren.

JET_errCannotNestDDL

Wenn Ptablecreate -> JET_errInvalidGrbit JET_bitTableCreateTemplateTable gibt, aber Ptablecreate -> SzTemplateTableName auf NULL festgelegt ist.

JET_errColumnDuplicate

Eine Spalte ist bereits vorhanden.

JET_errColumnNotFound

Es wurde versucht, eine nicht vorhandene Spalte zu indizieren. Versuch, bedingt für eine nicht vorhandene Spalte indizieren kann auch dieser Fehler erzeugen.

JET_errColumnRedundant

Es wurde versucht, eine redundante Spalte hinzufügen. Es sollte nicht mehr als eine Autoincrement-Spalte und nicht mehr als eine Version-Spalte pro Tabelle.

JET_errDensityInvalid

Im UlDensity -Member in der JET_TABLECREATE oder JET_TABLECREATE2 -Struktur wurde eine ungültige Dichte übergeben.

JET_errDDLNotInheritable

Gibt an, dass die Tabelle mit dem Namen in der SzTemplateTableName -Member der JET_TABLECREATE -Struktur kein als Vorlagentabelle gekennzeichnet ist (d. h. dieser Tabelle keinen JET_bitTableCreateTemplateTable Set).

JET_errIndexDuplicate

Es wurde versucht, zwei identische Indizes definieren.

JET_errIndexHasPrimary

Es wurde versucht, mehr als einen Primärindex für eine Tabelle angeben. Eine Tabelle muss genau einen Primärindex haben. Wenn kein primärer Index angegeben ist, wird die Datenbank-Engine transparent erstellen.

JET_errIndexInvalidDef

Eine ungültige Indexdefinition es wurde angegeben. Die möglichen Ursachen für diese Fehlermeldung angezeigt werden:

  • Ein Primärindex ist (d. h. der JET_errInvalidGrbit -Member der JET_INDEXCREATE -Struktur hat JET_bitIndexPrimary und cConditionalColumn Mitglied der JET_INDEXCREATE -Struktur ist größer als 0 (null)).

  • WindowsServer 2003 und höher. Versuch, einen Tupelindex mit Tupel zu erstellen, aber ohne übergeben des Ptuplelimits -Members der JET_INDEXCREATE -Struktur (d. h. der JET_errInvalidGrbit -Member der JET_INDEXCREATE -Struktur hat JET_bitIndexTupleLimits, aber der Ptuplelimits Zeiger ist NULL).

  • Eine ungültige Schlüsseldefinition im SzKey -Member der JET_INDEXCREATE -Struktur übergeben. Eine Erörterung der gültigen Definitionen finden Sie unter JET_INDEXCREATE .

  • Festlegen des CbVarSegMac -Members in der JET_INDEXCREATE größer als JET_cbPrimaryKeyMost (für einen primären Index) oder JET_cbSecondaryKeyMost (für einen sekundären Index) größer sein.

  • Übergeben eine ungültige Kombination für einen benutzerdefinierten Unicode-Index (hat das JET_bitIndexUnicode-Bit festgelegt im JET_errInvalidGrbit -Member der JET_INDEXCREATE). Einige häufige Ursachen sind die Pidxunicode Mitglied der JET_INDEXCREATE -Struktur ist NULL, oder die angegebene LCID in der Pidxunicode -Struktur ist ungültig.

  • Eine Spalte mit mehreren Werte für einen primären Index angeben.

  • Zu viele bedingte Spalten indiziert werden soll. Der cConditionalColumn -Member der JET_INDEXCREATE -Struktur darf nicht größer als JET_ccolKeyMost sein.

JET_errIndexTuplesInvalidLimits

Windows XP und höher. Eine JET_TUPLELIMITS -Struktur angegeben wurde, und seine Grenzen werden nicht unterstützt. Finden Sie im Abschnitt der JET_TUPLELIMITS -Struktur.

JET_errIndexTuplesNonUniqueOnly

Windows XP und höher. Ein Tupelindex kann nicht eindeutig sein (d. h. der JET_errInvalidGrbit -Member der Struktur JET_INDEXCREATE darf keinen JET_bitIndexPrimary und JET_bitIndexUnique festlegen).

JET_errIndexTuplesOneColumnOnly

Windows XP und höher. Ein Tupelindex kann nur über eine einzelne Spalte sein, (d. h., wenn der JET_errInvalidGrbit -Member der JET_INDEXCREATE -Struktur hat JET_bitIndexTuples festgelegt, und der SzKey -Member der JET_INDEXCREATE -Struktur mehr als eine Spalte gibt).

JET_errIndexTuplesSecondaryIndexOnly

Windows XP und höher. Ein Tupelindex darf kein Primärindex sein (d. h. der JET_errInvalidGrbit -Member der JET_INDEXCREATE -Struktur muss über beide JET_bitIndexPrimary und JET_bitIndexTuples festgelegt ist).

JET_errIndexTuplesVarSegMacNotAllowed

Windows XP und höher. Ein Tupelindex erlaubt nicht den CbVarSegMac -Member der Struktur JET_INDEXCREATE festgelegt werden.

JET_errIndexTuplesTextColumnsOnly

Windows XP und höher. Ein Tupelindex kann nur für Text oder Unicode-Spalte sein. JET_errIndexTuplesTextColumnsOnly führt ein Versuch zum Indizieren von anderen Spalten (z. B. binary-Spalten).

JET_errInTransaction

Es wurde versucht, einen Index ohne Versionsinformationen in einer Transaktion zu erstellen.

JET_errInvalidCodePage

Der cp -Member der JET_COLUMNCREATE -Struktur wurde nicht auf eine gültige Codepage festgelegt. Die einzigen gültigen Werte für Text-Spalten sind Englisch (1252) und Unicode (1200). Der Wert 0 bedeutet, dass der Standardwert (Deutsch, 1252) verwendet.

JET_errInvalidColumnType

Der Coltyp -Member der JET_COLUMNCREATE -Struktur wurde nicht auf eine gültige Spaltentyp festgelegt.

JET_errInvalidCreateIndex

Einige der Gründe, warum dieser Fehler auftreten kann:

  • Der Rgindexcreate -Member der JET_TABLECREATE2 -Struktur wurde auf NULL gesetzt.

  • Der Rgcolumncreate -Member der JET_TABLECREATE2 -Struktur wurde auf NULL gesetzt.

  • Der CbStruct -Member der JET_INDEXCREATE -Struktur wurde nicht auf einen gültigen Wert festgelegt.

JET_errInvalidgrbit

Eine ungültige Kombination von JET_errInvalidGrbit -Member wurde in JET_TABLECREATE oder JET_TABLECREATE2angegeben.

Die Indexdefinition ist ungültig, da das Mitglied JET_errInvalidGrbit inkonsistente Werte enthält. Mögliche Ursachen hierfür sind:

  • Ein Primärindex hatte ein ignorieren Bit angegeben (d. h. JET_bitIndexPrimary mit JET_bitIndexIgnoreNull, JET_bitIndexIgnoreAnyNull oder JET_bitIndexIgnoreFirstNull übergeben wurde).

  • Ein nicht vorhandener Member NULL nicht ignoriert (d. h. der JET_errInvalidGrbit -Member der JET_INDEXCREATE -Struktur verfügt über JET_bitIndexEmpty, aber nicht über JET_bitIndexIgnoreAnyNull-Satz).

  • In einer JET_CONDITIONALCOLUMN -Struktur mit einem ungültigen JET_errInvalidGrbit Member übergeben.

JET_errInvalidLanguageId

Eine ungültige Gebietsschema-ID (LCID) übergeben wurde (entweder über die Lcid Mitglied der JET_UNICODEINDEX -Struktur auf die vom Pidxunicode -Member der JET_INDEXCREATE -Struktur zeigen oder Lcid -Feld der Struktur JET_INDEXCREATE ).

JET_errInvalidParameter

Es wurde ein ungültiger Parameter angegeben. Mögliche Ursachen hierfür sind:

  • Der Rgcolumncreate -Member der JET_TABLECREATE2 -Struktur ist NULL.

  • Das CbStruct Mitglied eines der JET_COLUMNCREATE im Rgcolumncreate -Member der JET_TABLECREATE2 -Struktur gegeben wurde nicht auf Sizeof (JET_COLUMNCREATE) festgelegt.

  • Der CbKey -Member der JET_INDEXCREATE -Struktur wird auf 0 (null) festgelegt.

  • Der CbStruct -Member der JET_INDEXCREATE -Struktur ist nicht für Sizeof (JET_INDEXCREATE) festgelegt.

JET_errRecordTooBig

Der Datensatz ist zu groß. Die Summe der CbMax -Member der JET_COLUMNCREATE -Struktur für alle festen Spalten muss einen bestimmten Wert nicht überschreiten.

JET_errTableDuplicate

Die Tabelle ist bereits vorhanden.

JET_errTooManyColumns

Es wurde versucht, zu viele Spalten in der Tabelle hinzu. Eine Tabelle kann nicht mehr als JET_ccolFixedMost feste Spalten nicht mehr als Spalten mit variabler Länge JET_ccolVarMost und nicht mehr als JET_ccolTaggedMost Spalten markiert haben.

JET_errUnicodeTranslationFail

Fehler bei dem Versuch, die ein Unicode Column normalisieren. Dies kann durch nicht genügend Systemressourcen verursacht werden.

Anmerkungen

JetCreateTable erstellt eine Tabelle, die keine Spalten enthält. Um Spalten hinzuzufügen, finden Sie unter JetAddColumn.

Intern ruft JetCreateTableJetCreateTableColumnIndex2, eine JET_TABLECREATE2 -Struktur mit ausfüllen:

  • JET_TABLECREATE2.cbStruct = Sizeof (JET_TABLECREATE2)

  • JET_TABLECREATE2.szTableName = SzTableName

  • JET_TABLECREATE2.ulPages = L_seite

  • JET_TABLECREATE2.ulDensity = lDensity

  • JET_TABLECREATE2.TableID = JET_tableidNil

Die anderen Felder der internen JET_TABLECREATE2 -Struktur werden auf 0 (null) oder NULL festgelegt. Ptableid wird bei der Ausgabe auf JET_TABLECREATE2.tableid festgelegt.

Weitere Informationen finden Sie unter JetCreateTableColumnIndex2 .

Wie JetOpenTable, wenn die Anwendung mit dem zurückgegebenen Tableid -Member aus der JET_TABLECREATE2 -Struktur, es sollte in der Regel geschlossen werden mit JetCloseTable.

Voraussetzungen

-Client,

Erfordert Windows Vista, Windows XP oder Windows 2000 Professional.

Server

Erfordert WindowsServer 2008, WindowsServer 2003 oder Windows 2000 Server.

Kopfzeile

In Esent.h deklariert.

Library

Verwenden Sie ESENT.lib.

DLL

"ESENT.dll" erfordert.

Unicode

Implementiert als JetCreateTableW (Unicode) und JetCreateTableA (ANSI).

Siehe auch

JET_DBID
JET_ERR
JET_GRBIT
JET_TABLEID
JET_TABLECREATE2
JetAddColumn
JetCreateTableColumnIndex
JetCreateTableColumnIndex2