本文整理汇总了C#中Microsoft.Isam.Esent.Interop.JET_COLUMNDEF类的典型用法代码示例。如果您正苦于以下问题:C# JET_COLUMNDEF类的具体用法?C# JET_COLUMNDEF怎么用?C# JET_COLUMNDEF使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
JET_COLUMNDEF类属于Microsoft.Isam.Esent.Interop命名空间,在下文中一共展示了JET_COLUMNDEF类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateTable
internal static void CreateTable(Session session, JET_DBID dbid)
{
JET_TABLEID tableid;
Api.JetCreateTable(session, dbid, ifcHeaderTableName, 1, 100, out tableid);
using (var transaction = new Microsoft.Isam.Esent.Interop.Transaction(session))
{
JET_COLUMNID columnid;
var columndef = new JET_COLUMNDEF
{
coltyp = JET_coltyp.Long,
grbit = ColumndefGrbit.ColumnAutoincrement
};
Api.JetAddColumn(session, tableid, _colNameHeaderId, columndef, null, 0, out columnid);
columndef.coltyp = JET_coltyp.Currency;
columndef.grbit = ColumndefGrbit.ColumnNotNULL;
Api.JetAddColumn(session, tableid, _colNameEntityCount, columndef, null, 0, out columnid);
columndef.coltyp = JET_coltyp.LongBinary;
columndef.grbit = ColumndefGrbit.ColumnNotNULL;
Api.JetAddColumn(session, tableid, _colNameHeaderData, columndef, null, 0, out columnid);
columndef.coltyp = JET_coltyp.Text;
columndef.grbit = ColumndefGrbit.ColumnNotNULL;
columndef.cbMax = 32;
Api.JetAddColumn(session, tableid, _colNameFileVersion, columndef, null, 0, out columnid);
transaction.Commit(CommitTransactionGrbit.LazyFlush);
}
}
示例2: CreateTable
internal static void CreateTable(JET_SESID sesid, JET_DBID dbid)
{
JET_TABLEID tableid;
Api.JetCreateTable(sesid, dbid, GeometryTableName, 8, 80, out tableid);
using (var transaction = new Microsoft.Isam.Esent.Interop.Transaction(sesid))
{
JET_COLUMNID columnid;
var columndef = new JET_COLUMNDEF
{
coltyp = JET_coltyp.Long,
grbit = ColumndefGrbit.ColumnAutoincrement
};
Api.JetAddColumn(sesid, tableid, colNameGeometryLabel, columndef, null, 0, out columnid);
columndef.grbit = ColumndefGrbit.ColumnNotNULL;
Api.JetAddColumn(sesid, tableid, colNameProductLabel, columndef, null, 0, out columnid);
columndef.coltyp = JET_coltyp.UnsignedByte;
Api.JetAddColumn(sesid, tableid, colNameGeomType, columndef, null, 0, out columnid);
columndef.coltyp = JET_coltyp.Short;
Api.JetAddColumn(sesid, tableid, colNameProductIfcTypeId, columndef, null, 0, out columnid);
Api.JetAddColumn(sesid, tableid, colNameSubPart, columndef, null, 0, out columnid);
columndef.coltyp = JET_coltyp.Binary;
columndef.grbit = ColumndefGrbit.ColumnMaybeNull;
Api.JetAddColumn(sesid, tableid, colNameTransformMatrix, columndef, null, 0, out columnid);
columndef.coltyp = JET_coltyp.LongBinary;
//if (EsentVersion.SupportsWindows7Features)
// columndef.grbit |= Windows7Grbits.ColumnCompressed;
Api.JetAddColumn(sesid, tableid, colNameShapeData, columndef, null, 0, out columnid);
columndef.coltyp = JET_coltyp.Long;
columndef.grbit = ColumndefGrbit.ColumnNotNULL;
Api.JetAddColumn(sesid, tableid, colNameGeometryHash, columndef, null, 0, out columnid);
columndef.grbit = ColumndefGrbit.ColumnNotNULL;
Api.JetAddColumn(sesid, tableid, colNameStyleLabel, columndef, null, 0, out columnid);
// The primary index is the type and the entity label.
string indexDef = string.Format("+{0}\0\0", colNameGeometryLabel);
Api.JetCreateIndex(sesid, tableid, geometryTablePrimaryIndex, CreateIndexGrbit.IndexPrimary, indexDef, indexDef.Length, 100);
//create index by geometry hashes
indexDef = string.Format("+{0}\0\0", colNameGeometryHash);
Api.JetCreateIndex(sesid, tableid, geometryTableHashIndex, CreateIndexGrbit.IndexDisallowNull, indexDef, indexDef.Length, 100);
//Create index by product
indexDef = string.Format("+{0}\0{1}\0{2}\0{3}\0{4}\0\0", colNameGeomType, colNameProductIfcTypeId, colNameProductLabel, colNameSubPart, colNameStyleLabel);
Api.JetCreateIndex(sesid, tableid, geometryTableGeomTypeIndex, CreateIndexGrbit.IndexUnique, indexDef, indexDef.Length, 100);
//create index by style
indexDef = string.Format("+{0}\0{1}\0{2}\0{3}\0{4}\0\0", colNameGeomType, colNameStyleLabel, colNameProductIfcTypeId, colNameProductLabel, colNameGeometryLabel);
Api.JetCreateIndex(sesid, tableid, geometryTableStyleIndex, CreateIndexGrbit.None, indexDef, indexDef.Length, 100);
Api.JetCloseTable(sesid, tableid);
transaction.Commit(CommitTransactionGrbit.LazyFlush);
}
}
示例3: Setup
public void Setup()
{
this.directory = SetupHelper.CreateRandomDirectory();
this.database = Path.Combine(this.directory, "database.edb");
this.table = "table";
this.instance = SetupHelper.CreateNewInstance(this.directory);
Api.JetSetSystemParameter(this.instance, JET_SESID.Nil, JET_param.Recovery, 0, "off");
Api.JetInit(ref this.instance);
Api.JetBeginSession(this.instance, out this.sesid, String.Empty, String.Empty);
Api.JetCreateDatabase(this.sesid, this.database, String.Empty, out this.dbid, CreateDatabaseGrbit.None);
Api.JetBeginTransaction(this.sesid);
Api.JetCreateTable(this.sesid, this.dbid, this.table, 0, 100, out this.tableid);
JET_COLUMNID ignored;
var columndef = new JET_COLUMNDEF { coltyp = JET_coltyp.Text, cp = JET_CP.Unicode };
Api.JetAddColumn(this.sesid, this.tableid, "C1", columndef, null, 0, out ignored);
Api.JetAddColumn(this.sesid, this.tableid, "C2", columndef, null, 0, out ignored);
Api.JetAddColumn(this.sesid, this.tableid, "C3", columndef, null, 0, out ignored);
Api.JetCreateIndex(this.sesid, this.tableid, "Primary", CreateIndexGrbit.IndexPrimary, "+C1\0\0", 5, 100);
Api.JetCommitTransaction(this.sesid, CommitTransactionGrbit.LazyFlush);
JET_INDEXCREATE[] indexcreates = new[]
{
new JET_INDEXCREATE { szIndexName = "Index2", cbKey = 5, szKey = "+C2\0\0" },
new JET_INDEXCREATE { szIndexName = "Index3", cbKey = 5, szKey = "+C3\0\0", cbVarSegMac = 100 },
};
Api.JetCreateIndex2(this.sesid, this.tableid, indexcreates, indexcreates.Length);
Api.JetCloseTable(this.sesid, this.tableid);
Api.JetOpenTable(this.sesid, this.dbid, this.table, null, 0, OpenTableGrbit.None, out this.tableid);
}
示例4: CreateDocumentsTable
private static void CreateDocumentsTable(Session session, JET_TABLEID tableid)
{
JET_COLUMNID columnid;
var guidColumn = new JET_COLUMNDEF
{
cbMax = 255,
coltyp = JET_coltyp.Text,
cp = JET_CP.Unicode,
grbit = ColumndefGrbit.ColumnTagged
};
Api.JetAddColumn(session, tableid, "id", guidColumn, null, 0, out columnid);
var collectionColumn = new JET_COLUMNDEF
{
cbMax = 1000,
coltyp = JET_coltyp.Text,
cp = JET_CP.Unicode,
grbit = ColumndefGrbit.ColumnTagged
};
Api.JetAddColumn(session, tableid, "collection_name", collectionColumn, null, 0, out columnid);
const string colectionIndexDef = "+collection_name\0\0";
Api.JetCreateIndex(session, tableid, "by_collection_name", CreateIndexGrbit.None, colectionIndexDef, colectionIndexDef.Length, 100);
var textColumn = new JET_COLUMNDEF
{
coltyp = JET_coltyp.LongText,
grbit = ColumndefGrbit.ColumnTagged
};
Api.JetAddColumn(session, tableid, "data", textColumn, null, 0, out columnid);
const string idIndexDef = "+id\0\0";
Api.JetCreateIndex(session, tableid, "by_id", CreateIndexGrbit.IndexPrimary, idIndexDef, idIndexDef.Length, 100);
}
示例5: Main
/// <summary>
/// Main routine. Called when the program starts.
/// </summary>
/// <param name="args">
/// The arguments to the program.
/// </param>
public static void Main(string[] args)
{
JET_INSTANCE instance;
JET_SESID sesid;
JET_DBID dbid;
JET_TABLEID tableid;
JET_COLUMNDEF columndef = new JET_COLUMNDEF();
JET_COLUMNID columnid;
// Initialize ESENT. Setting JET_param.CircularLog to 1 means ESENT will automatically
// delete unneeded logfiles. JetInit will inspect the logfiles to see if the last
// shutdown was clean. If it wasn't (e.g. the application crashed) recovery will be
// run automatically bringing the database to a consistent state.
Api.JetCreateInstance(out instance, "instance");
Api.JetSetSystemParameter(instance, JET_SESID.Nil, JET_param.CircularLog, 1, null);
Api.JetInit(ref instance);
Api.JetBeginSession(instance, out sesid, null, null);
// Create the database. To open an existing database use the JetAttachDatabase and
// JetOpenDatabase APIs.
Api.JetCreateDatabase(sesid, "edbtest.db", null, out dbid, CreateDatabaseGrbit.OverwriteExisting);
// Create the table. Meta-data operations are transacted and can be performed concurrently.
// For example, one session can add a column to a table while another session is reading
// or updating records in the same table.
// This table has no indexes defined, so it will use the default sequential index. Indexes
// can be defined with the JetCreateIndex API.
Api.JetBeginTransaction(sesid);
Api.JetCreateTable(sesid, dbid, "table", 0, 100, out tableid);
columndef.coltyp = JET_coltyp.LongText;
columndef.cp = JET_CP.ASCII;
Api.JetAddColumn(sesid, tableid, "column1", columndef, null, 0, out columnid);
Api.JetCommitTransaction(sesid, CommitTransactionGrbit.LazyFlush);
// Insert a record. This table only has one column but a table can have slightly over 64,000
// columns defined. Unless a column is declared as fixed or variable it won't take any space
// in the record unless set. An individual record can have several hundred columns set at one
// time, the exact number depends on the database page size and the contents of the columns.
Api.JetBeginTransaction(sesid);
Api.JetPrepareUpdate(sesid, tableid, JET_prep.Insert);
string message = "Hello world";
Api.SetColumn(sesid, tableid, columnid, message, Encoding.ASCII);
Api.JetUpdate(sesid, tableid);
Api.JetCommitTransaction(sesid, CommitTransactionGrbit.None); // Use JetRollback() to abort the transaction
// Retrieve a column from the record. Here we move to the first record with JetMove. By using
// JetMoveNext it is possible to iterate through all records in a table. Use JetMakeKey and
// JetSeek to move to a particular record.
Api.JetMove(sesid, tableid, JET_Move.First, MoveGrbit.None);
string buffer = Api.RetrieveColumnAsString(sesid, tableid, columnid, Encoding.ASCII);
Console.WriteLine("{0}", buffer);
// Terminate ESENT. This performs a clean shutdown.
Api.JetCloseTable(sesid, tableid);
Api.JetEndSession(sesid, EndSessionGrbit.None);
Api.JetTerm(instance);
}
示例6: CreateColumndefFromColumnDefinition
/// <summary>
/// Create a JET_COLUMNDEF from a ColumnDefintion.
/// </summary>
/// <param name="definition">The column definition to convert.</param>
/// <returns>A JET_COLUMNDEF representing the ColumnDefintion.</returns>
public JET_COLUMNDEF CreateColumndefFromColumnDefinition(ColumnDefinition definition)
{
ColumndefGrbit grbit = CalculateColumndefGrbit(definition);
var columndef = new JET_COLUMNDEF
{
cbMax = definition.MaxSize,
coltyp = this.columnTypeToColtypMapping[definition.Type],
cp = (ColumnType.AsciiText == definition.Type) ? JET_CP.ASCII : JET_CP.Unicode,
grbit = grbit,
};
return columndef;
}
示例7: CreateColumnWithDefaultValue
public void CreateColumnWithDefaultValue()
{
int expected = Any.Int32;
Api.JetBeginTransaction(this.sesid);
var columndef = new JET_COLUMNDEF { coltyp = JET_coltyp.Long };
JET_COLUMNID columnid;
Api.JetAddColumn(this.sesid, this.tableid, "column_with_default", columndef, BitConverter.GetBytes(expected), 4, out columnid);
Api.JetCommitTransaction(this.sesid, CommitTransactionGrbit.LazyFlush);
Api.JetBeginTransaction(this.sesid);
Api.JetPrepareUpdate(this.sesid, this.tableid, JET_prep.Insert);
this.UpdateAndGotoBookmark();
Api.JetCommitTransaction(this.sesid, CommitTransactionGrbit.LazyFlush);
Assert.AreEqual(expected, Api.RetrieveColumnAsInt32(this.sesid, this.tableid, columnid));
}
示例8: ConvertColumndefFromNative
public void ConvertColumndefFromNative()
{
var native = new NATIVE_COLUMNDEF()
{
cbMax = 1,
coltyp = (uint)JET_coltyp.LongText,
columnid = 0x100,
cp = 1200,
grbit = (uint)ColumndefGrbit.ColumnMultiValued,
};
var columndef = new JET_COLUMNDEF();
columndef.SetFromNativeColumndef(native);
Assert.AreEqual(1, columndef.cbMax);
Assert.AreEqual(JET_coltyp.LongText, columndef.coltyp);
Assert.AreEqual<uint>(0x100, columndef.columnid.Value);
Assert.AreEqual(JET_CP.Unicode, columndef.cp);
Assert.AreEqual(ColumndefGrbit.ColumnMultiValued, columndef.grbit);
}
示例9: ConvertColumndefToNative
public void ConvertColumndefToNative()
{
var columndef = new JET_COLUMNDEF
{
cbMax = 0x1,
coltyp = JET_coltyp.Binary,
cp = JET_CP.Unicode,
grbit = ColumndefGrbit.ColumnAutoincrement
};
NATIVE_COLUMNDEF native = columndef.GetNativeColumndef();
Assert.AreEqual<uint>(0, native.columnid);
Assert.AreEqual<uint>(9, native.coltyp);
Assert.AreEqual<ushort>(0, native.wCountry);
Assert.AreEqual<ushort>(0, native.langid);
Assert.AreEqual<ushort>(1200, native.cp);
Assert.AreEqual<ushort>(0, native.wCollate);
Assert.AreEqual<uint>(1, native.cbMax);
Assert.AreEqual<uint>(0x10, native.grbit);
}
示例10: Setup
public void Setup()
{
JET_TABLEID tableid;
this.directory = SetupHelper.CreateRandomDirectory();
this.database = Path.Combine(this.directory, "database.edb");
this.table = "table";
this.instance = SetupHelper.CreateNewInstance(this.directory);
// turn off logging so initialization is faster
Api.JetSetSystemParameter(this.instance, JET_SESID.Nil, JET_param.Recovery, 0, "off");
Api.JetInit(ref this.instance);
Api.JetBeginSession(this.instance, out this.sesid, String.Empty, String.Empty);
Api.JetCreateDatabase(this.sesid, this.database, String.Empty, out this.dbid, CreateDatabaseGrbit.None);
Api.JetBeginTransaction(this.sesid);
Api.JetCreateTable(this.sesid, this.dbid, this.table, 0, 100, out tableid);
var columndef = new JET_COLUMNDEF { coltyp = JET_coltyp.Long };
Api.JetAddColumn(this.sesid, tableid, "Column1", columndef, null, 0, out this.columnid1);
Api.JetAddColumn(this.sesid, tableid, "Column2", columndef, null, 0, out this.columnid2);
var indexDef = "+Column1\0\0";
Api.JetCreateIndex(this.sesid, tableid, "index1", CreateIndexGrbit.None, indexDef, indexDef.Length, 100);
indexDef = "+Column2\0\0";
Api.JetCreateIndex(this.sesid, tableid, "index2", CreateIndexGrbit.None, indexDef, indexDef.Length, 100);
// Create a cross-product of records. Index intersection can be used to select a subset.
for (int i = 0; i < 10; ++i)
{
for (int j = 0; j < 10; ++j)
{
this.InsertRecord(tableid, i, j);
}
}
Api.JetCloseTable(this.sesid, tableid);
Api.JetCommitTransaction(this.sesid, CommitTransactionGrbit.LazyFlush);
}
示例11: ConvertColumndefToNative
public void ConvertColumndefToNative()
{
var columndef = new JET_COLUMNDEF
{
cbMax = 0x1,
coltyp = JET_coltyp.Binary,
cp = JET_CP.Unicode,
grbit = ColumndefGrbit.ColumnAutoincrement
};
NATIVE_COLUMNDEF native = columndef.GetNativeColumndef();
Assert.AreEqual<uint>(0, native.columnid);
Assert.AreEqual<uint>(9, native.coltyp);
#pragma warning disable 618,612 // Disable warning that wCountry/langid/wCollate are obsolete
Assert.AreEqual<ushort>(0, native.wCountry);
Assert.AreEqual<ushort>(0, native.langid);
Assert.AreEqual<ushort>(1200, native.cp);
Assert.AreEqual<ushort>(0, native.wCollate);
#pragma warning restore 618,612
Assert.AreEqual<uint>(1, native.cbMax);
Assert.AreEqual<uint>(0x10, native.grbit);
}
示例12: AddColumn
public void AddColumn(JET_TABLEID tableid, ColumnDefinition column)
{
JET_COLUMNDEF column_def;
JET_COLUMNID column_id;
if (columnDefs.ContainsKey(column.Type)) {
column_def = columnDefs[column.Type];
} else {
column_def = new JET_COLUMNDEF();
column_def.coltyp = JET_coltyp.LongBinary;
}
// TODO validate only one of these
if (column.IsAutoIncrement) {
column_def.grbit = column_def.grbit | ColumndefGrbit.ColumnAutoincrement;
}
Api.JetAddColumn(connection.session, tableid, column.Name, column_def, null, 0, out column_id);
if (column.IsPrimaryKey) {
var indexDef = "+" + column.Name + "\0\0";
Api.JetCreateIndex(connection.session, tableid, "primary", CreateIndexGrbit.IndexPrimary, indexDef, indexDef.Length, 100);
}
}
示例13: CreateTwoIndexes
public void CreateTwoIndexes()
{
JET_TABLEID tableToIndex;
Api.JetBeginTransaction(this.sesid);
Api.JetCreateTable(this.sesid, this.dbid, "tabletoindex", 1, 100, out tableToIndex);
var columndef = new JET_COLUMNDEF()
{
cp = JET_CP.Unicode,
coltyp = JET_coltyp.LongText,
};
Api.JetAddColumn(this.sesid, tableToIndex, "column", columndef, null, 0, out this.testColumnid);
Api.JetCloseTable(this.sesid, tableToIndex);
Api.JetCommitTransaction(this.sesid, CommitTransactionGrbit.LazyFlush);
Api.JetOpenTable(this.sesid, this.dbid, "tabletoindex", null, 0, OpenTableGrbit.DenyRead, out tableToIndex);
const string Index1Name = "firstIndex";
const string Index1Description = "-column\0\0";
const string Index2Name = "secondIndex";
const string Index2Description = "+column\0\0";
var indexcreates = new[]
{
new JET_INDEXCREATE
{
szIndexName = Index1Name,
szKey = Index1Description,
cbKey = Index1Description.Length,
grbit = CreateIndexGrbit.None,
ulDensity = 100,
},
new JET_INDEXCREATE
{
szIndexName = Index2Name,
szKey = Index2Description,
cbKey = Index2Description.Length,
grbit = CreateIndexGrbit.None,
ulDensity = 100,
},
};
Api.JetCreateIndex2(this.sesid, tableToIndex, indexcreates, indexcreates.Length);
Api.JetSetCurrentIndex(this.sesid, tableToIndex, Index1Name);
Api.JetSetCurrentIndex(this.sesid, tableToIndex, Index2Name);
Api.JetSetCurrentIndex(this.sesid, tableToIndex, null);
Api.JetCloseTable(this.sesid, tableToIndex);
}
示例14: GetColumnDictionary
public void GetColumnDictionary()
{
const string ColumnName = "column4";
Api.JetBeginTransaction(this.sesid);
var columndef = new JET_COLUMNDEF()
{
cbMax = 10000,
cp = JET_CP.Unicode,
coltyp = JET_coltyp.LongText,
grbit = ColumndefGrbit.None,
};
JET_COLUMNID columnid;
Api.JetAddColumn(this.sesid, this.tableid, ColumnName, columndef, null, 0, out columnid);
Api.JetCommitTransaction(this.sesid, CommitTransactionGrbit.LazyFlush);
IDictionary<string, JET_COLUMNID> dict = Api.GetColumnDictionary(this.sesid, this.tableid);
Assert.AreEqual(columnid, dict[ColumnName]);
}
示例15: JetGetColumnInfo
public void JetGetColumnInfo()
{
const string ColumnName = "column3";
Api.JetBeginTransaction(this.sesid);
var columndef = new JET_COLUMNDEF()
{
cbMax = 200,
cp = JET_CP.ASCII,
coltyp = JET_coltyp.LongText,
grbit = ColumndefGrbit.None,
};
JET_COLUMNID columnid;
Api.JetAddColumn(this.sesid, this.tableid, ColumnName, columndef, null, 0, out columnid);
Api.JetCommitTransaction(this.sesid, CommitTransactionGrbit.LazyFlush);
JET_COLUMNDEF retrievedColumndef;
Api.JetGetColumnInfo(this.sesid, this.dbid, this.table, ColumnName, out retrievedColumndef);
Assert.AreEqual(columndef.cbMax, retrievedColumndef.cbMax);
Assert.AreEqual(columndef.cp, retrievedColumndef.cp);
Assert.AreEqual(columndef.coltyp, retrievedColumndef.coltyp);
Assert.AreEqual(columnid, retrievedColumndef.columnid);
// The grbit isn't asserted as esent will add some options by default
}