本文整理汇总了C#中IDataTable.CreateColumn方法的典型用法代码示例。如果您正苦于以下问题:C# IDataTable.CreateColumn方法的具体用法?C# IDataTable.CreateColumn怎么用?C# IDataTable.CreateColumn使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IDataTable
的用法示例。
在下文中一共展示了IDataTable.CreateColumn方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetFields
/// <summary>获取指定表的字段</summary>
/// <param name="table"></param>
/// <param name="rows"></param>
/// <returns></returns>
protected virtual List<IDataColumn> GetFields(IDataTable table, DataRow[] rows)
{
var list = new List<IDataColumn>();
// 开始序号
Int32 startIndex = 0;
foreach (var dr in rows)
{
var field = table.CreateColumn();
// 序号
Int32 n = 0;
if (TryGetDataRowValue<Int32>(dr, _.OrdinalPosition, out n))
field.ID = n;
else if (TryGetDataRowValue<Int32>(dr, _.ID, out n))
field.ID = n;
// 如果从0开始,则所有需要同步增加;如果所有字段序号都是0,则按照先后顺序
if (field.ID == 0)
{
startIndex++;
//field.ID = startIndex;
}
if (startIndex > 0) field.ID += startIndex;
// 名称
field.Name = GetDataRowValue<String>(dr, _.ColumnName);
// 标识、主键
Boolean b;
if (TryGetDataRowValue<Boolean>(dr, "AUTOINCREMENT", out b))
field.Identity = b;
if (TryGetDataRowValue<Boolean>(dr, "PRIMARY_KEY", out b))
field.PrimaryKey = b;
// 原始数据类型
String str;
if (TryGetDataRowValue<String>(dr, "DATA_TYPE", out str))
field.RawType = str;
else if (TryGetDataRowValue<String>(dr, "DATATYPE", out str))
field.RawType = str;
else if (TryGetDataRowValue<String>(dr, "COLUMN_DATA_TYPE", out str))
field.RawType = str;
// 是否Unicode
if (Database is DbBase) field.IsUnicode = (Database as DbBase).IsUnicode(field.RawType);
// 精度
if (TryGetDataRowValue<Int32>(dr, "NUMERIC_PRECISION", out n))
field.Precision = n;
else if (TryGetDataRowValue<Int32>(dr, "DATETIME_PRECISION", out n))
field.Precision = n;
else if (TryGetDataRowValue<Int32>(dr, "PRECISION", out n))
field.Precision = n;
// 位数
if (TryGetDataRowValue<Int32>(dr, "NUMERIC_SCALE", out n))
field.Scale = n;
else if (TryGetDataRowValue<Int32>(dr, "SCALE", out n))
field.Scale = n;
// 长度
if (TryGetDataRowValue<Int32>(dr, "CHARACTER_MAXIMUM_LENGTH", out n))
field.Length = n;
else if (TryGetDataRowValue<Int32>(dr, "LENGTH", out n))
field.Length = n;
else if (TryGetDataRowValue<Int32>(dr, "COLUMN_SIZE", out n))
field.Length = n;
else
field.Length = field.Precision;
// 字节数
if (TryGetDataRowValue<Int32>(dr, "CHARACTER_OCTET_LENGTH", out n))
field.NumOfByte = n;
else
field.NumOfByte = field.Length;
// 允许空
if (TryGetDataRowValue<Boolean>(dr, "IS_NULLABLE", out b))
field.Nullable = b;
else if (TryGetDataRowValue<String>(dr, "IS_NULLABLE", out str))
{
if (!String.IsNullOrEmpty(str)) field.Nullable = String.Equals("YES", str, StringComparison.OrdinalIgnoreCase);
}
else if (TryGetDataRowValue<String>(dr, "NULLABLE", out str))
{
if (!String.IsNullOrEmpty(str)) field.Nullable = String.Equals("Y", str, StringComparison.OrdinalIgnoreCase);
}
// 默认值
field.Default = GetDataRowValue<String>(dr, "COLUMN_DEFAULT");
// 描述
field.Description = GetDataRowValue<String>(dr, "DESCRIPTION");
FixField(field, dr);
//.........这里部分代码省略.........