Freigeben über


JetAddColumn-Funktion

Letzte Änderung: Freitag, 27. Februar 2015

Gilt für: Windows | Windows Server

JetAddColumn-Funktion

Die Funktion JetAddColumn fügt eine neue Spalte zu einer vorhandenen Tabelle in einer ESE-Datenbank.

JET_ERR JET_API JetAddColumn(
  __in          JET_SESID sesid,
  __in          JET_TABLEID tableid,
  __in          JET_PCSTR szColumnName,
  __in          const JET_COLUMNDEF* pcolumndef,
  __in_opt      const void* pvDefault,
  __in          unsigned long cbDefault,
  __out_opt     JET_COLUMNID* pcolumnid
);

Parameter

sesid

Der Kontext, für den API-Aufruf zu verwendenden Datenbank Sitzung.

TableID

Tabelle, um die Spalte hinzuzufügen.

szColumnName

Der Name der Spalte hinzugefügt. Der Name muss die folgenden Kriterien erfüllen:

  • Es muss weniger als JET_cbNameMost Zeichen enthalten, einschließlich nicht den Abbruch- NULLsein.

  • Er darf nur aus der folgenden Zeichen enthalten: 0 bis 9, A bis Z, a bis z und alle anderen Zeichensetzung außer Ausrufezeichen (!), Komma (,), Klammern ([]) und schließenden eckigen Klammer (]) Öffnen – d. h., ASCII-Zeichen 0 x 20, 0 x 22 über 0x2d, 0x2f über 0x5a, 0x5c und 0x5d bis 0x7f.

  • Es kann nicht mit einem Leerzeichen beginnen.

  • Es muss mindestens ein nicht-Leerzeichen enthalten.

pcolumndef

Ein Zeiger auf eine JET_COLUMNDEF -Struktur, die die Daten definiert, die in einer Spalte gespeichert werden können.

pvDefault

Ein Zeiger auf einen Puffer, der den Standardwert für die Spalte enthält. Die Länge des Puffers ist CbDefault. Wenn kein Standardwert ist, legen Sie PvDefault auf NULL und CbDefault 0 (null). Standardwerte darf nicht größer als JET_cbColumnMost Bytes für feste Spalten oder JET_cbLVDefaultValueMost Bytes für lange Werte sein. Wenn ein Standardwert größer ist als ist, wird es automatisch abgeschnitten.

Wenn JET_errInvalidGrbit JET_bitColumnUserDefinedDefault festgelegt wurde, wird als Zeiger auf eine Struktur JET_USERDEFINEDDEFAULTPvDefault interpretiert werden.

cbDefault

Die Größe des Puffers, die in PvDefaultangegeben ist in Bytes.

pcolumnid

Ein Zeiger auf eine JET_COLUMNID -Struktur, die bei Erfolg den Bezeichner der neu erstellten Spalte erhält. Bei einem Fehler ist der Wert nicht definiert.

Return Value

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

Rückgabecode

Beschreibung

JET_errSuccess

Der Vorgang erfolgreich war.

JET_errFixedDDL

Es wurde versucht, die Datendefinition einer festen DDL Tabelle ändern. Ein Beispiel für eine Tabelle mit festen DDL ist eine Vorlage-Tabelle.

JET_errInvalidParameter

In der API wurde ein ungültiger Parameter übergeben. Einige Beispiele für ungültige Parameter sind:

  • Die falsche Größe der Struktur in seinem CbStruct Mitglied JET_COLUMNDEF übergeben.

  • JET_bitColumnUserDefinedDefault übergeben, aber nicht CbDefault sizeof (JET_USERDEFINEDDEFAULT) festlegen.

JET_errInTransaction

Es wurde versucht, eine Spalte mit dem JET_bitColumnUnversioned-hinzuzufügen, aber die Sitzung ist in einer Transaktion.

JET_errColumnDuplicate

Eine Spalte ist bereits vorhanden. Es wurde versucht, eine Spalte ohne Versionsinformationen hinzuzufügen, und die Spalte bereits vorhanden ist.

JET_errTableNotEmpty

Die Tabelle enthält Daten. Eine Spalte hinterlegten Update kann nur eine leere Tabelle hinzugefügt werden.

JET_errRecordTooBig

Der Datensatz ist zu groß. Die Summe der CbMax -Parameter für die festen Spalten darf nicht mit einen bestimmten Wert überschreiten.

JET_errTooManyColumns

Es wurde versucht, um die Tabelle zu viele Spalten hinzuzufügen. Eine Tabelle kann nicht mehr als JET_ccolFixedMost festen Spalten, nicht mehr als JET_ccolVarMost variabler Länge Spalten und nicht mehr als JET_ccolTaggedMost Spalten markiert haben.

JET_errColumnRedundant

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

JET_errCallbackNotResolved

Die Callback-Funktion konnte nicht aufgelöst werden. Die DLL kann nicht gefunden oder die Funktion in der DLL möglicherweise nicht gefunden. Im Ereignisprotokoll wird weitere Details bereitstellen, wenn der ausreichenden Protokollierung aktiviert ist.

JET_wrnColumnMaxTruncated

Gibt an, dass die maximale Länge einer festen oder Variablen Spalte (CbMax) größer als JET_cbColumnMost wurde eine Warnmeldung angezeigt. Diese Beschränkung gilt nicht für Werte vom Typ Long (die JET_coltypLongBinary und JET_coltypLongTextist).

JET_errInvalidName

Ein ungültiger Name wurde als SzColumnNameübergeben. Weitere Informationen zu den Einschränkungen finden Sie unter die Kriterien für SzColumnName.

JET_errInvalidColumnType

Das Feld Coltyp wurde nicht auf einen gültigen Spaltentyp festgelegt.

JET_errInvalidCodePage

Der cp -Parameter der Struktur JET_COLUMNDEF wurde nicht auf eine gültige Codepage festgelegt. Die einzige gültige Werte für Textspalten sind Englisch (1252) und Unicode (1200). Der Wert 0 bedeutet, dass der Standardwert (Englisch, 1252) verwendet.

JET_errTaggedNotNULL

JET_bitColumnNotNULL kann nicht verwendet werden mit markiert, Long-Wert oder SLV Spalten.

JET_errInvalidgrbit

Es wurde eine ungültige Kombination von Grbits angegeben. Einige Gründe für diesen Fehler sind:

  • JET_bitColumnFixed wurde für eine bereichsspezifische, Long-Wert oder SLV Spalte verwendet.

  • JET_bitColumnEscrowUpdate wurde für eine Spalte verwendet, die nicht vom Typ JET_coltypLongwar.

  • JET_bitColumnEscrowUpdate wurde für eine Spalte Version (JET_bitColumnVersion) verwendet.

  • JET_bitColumnEscrowUpdate wurde für eine Spalte AutoIncrememnt (JET_bitColumnAutoincrement) verwendet.

  • JET_bitColumnEscrowUpdate wurde auf eine Spalte, die nicht über einen Standardwert verfügt verwendet (CbDefault war gleich null).

  • JET_bitColumnFinalize wurde für eine Spalte verwendet, die keine Spalte hinterlegten Update (JET_bitColumnEscrowUpdate wurde nicht festgelegt).

  • JET_bitColumnDeleteOnZero wurde für eine Spalte verwendet, die keine Spalte hinterlegten Update (JET_bitColumnEscrowUpdate wurde nicht festgelegt).

  • JET_bitColumnAutoincrement wurde für eine Spalte verwendet, nicht JET_coltypLongist.

    Windows 2000:Aus diesem Grund für den Fehlercode wird nur in Windows 2000 verwendet.

    JET_bitColumnAutoincrement wurde für eine Spalte verwendet, weder JET_coltypLong noch JET_coltypCurrencyist.

    Windows XP:Aus diesem Grund für den Fehlercode wird in Windows XP oder spätere Betriebssysteme verwendet.

  • JET_bitColumnVersion wurde für eine Spalte verwendet, nicht JET_coltypLongist.

  • JET_bitColumnVersion wurde für eine Autoincrement-Spalte verwendet.

  • JET_bitColumnUserDefinedDefault wurde in Verbindung mit JET_bitColumnFixed verwendet.

  • JET_bitColumnUserDefinedDefault wurde in Verbindung mit JET_bitColumnNotNULL verwendet.

  • JET_bitColumnUserDefinedDefault wurde in Verbindung mit JET_bitColumnVersion verwendet.

  • JET_bitColumnUserDefinedDefault wurde in Verbindung mit JET_bitColumnAutoincrement verwendet.

  • JET_bitColumnUserDefinedDefault wurde in Verbindung mit JET_bitColumnUpdatable verwendet.

  • JET_bitColumnUserDefinedDefault wurde in Verbindung mit JET_bitColumnEscrowUpdate verwendet.

  • JET_bitColumnUserDefinedDefault wurde in Verbindung mit JET_bitColumnFinalize verwendet.

  • JET_bitColumnUserDefinedDefault wurde in Verbindung mit JET_bitColumnDeleteOnZero verwendet.

  • JET_bitColumnUserDefinedDefault wurde in Verbindung mit JET_bitColumnMaybeNull verwendet.

  • JET_bitColumnUserDefinedDefault wurde für eine Spalte nicht markierte verwendet (d. h. feste oder Variable).

JET_errMultiValuedColumnMustBeTagged

Eine mehrwertige Spalte (JET_bitColumnMultiValued) kann nur für eine bereichsspezifische oder Long-Wert (JET_coltypLongBinary oder JET_coltypLongText) Spalte verwendet werden.

JET_errCannotBeTagged

Es wurde versucht, eine markierte Spalte verwenden, wenn die Spalte nicht gekennzeichnet werden kann. Einige Einschränkungen für das markierte Spalten verhindert werden:

  • Eine Spalte hinterlegten aktualisieren (JET_bitColumnEscrowUpdate) kann nicht auf eine markierte oder Long-Wert (JET_coltypLongBinary oder JET_coltypLongText) Spalte verwendet werden.

  • Eine Autoincrement-Spalte möglicherweise nicht markiert werden.

  • Eine Spalte Version möglicherweise nicht markiert werden.

JET_errExclusiveTableLockRequired

Eine exklusive Sperre für die Tabelle wurde für diesen Vorgang erforderlich.

JET_wrnColumnMaxTruncated

Gibt an, dass die maximale Länge einer festen oder Variablen Spalte (CbMax) größer als JET_cbColumnMost wurde eine Warnmeldung angezeigt. Diese Beschränkung gilt nicht für Werte vom Typ Long (die JET_coltypLongBinary und JET_coltypLongTextist).

Voraussetzungen

-Client,

Erfordert Windows Vista, Windows XP oder Windows 2000 Professional.

Server

WindowsServer 2008, WindowsServer 2003 oder Windows 2000 Server benötigt.

Kopfzeile

In Esent.h deklariert.

Library

Verwenden Sie ESENT.lib.

DLL

Erfordert "ESENT.dll".

Unicode

Implementiert als JetAddColumnW (Unicode) und JetAddColumnA (ANSI).

Siehe auch

JET_COLTYP
JET_COLUMNCREATE
JET_COLUMNDEF
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetCreateTableColumnIndex
JetCreateTableColumnIndex2