本文整理汇总了C#中System.Data.Common.DbDataReader.GetFieldType方法的典型用法代码示例。如果您正苦于以下问题:C# DbDataReader.GetFieldType方法的具体用法?C# DbDataReader.GetFieldType怎么用?C# DbDataReader.GetFieldType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Data.Common.DbDataReader
的用法示例。
在下文中一共展示了DbDataReader.GetFieldType方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ConvertDataReaderToDataTable
public static DataTable ConvertDataReaderToDataTable(DbDataReader reader)
{
try
{
DataTable table = new DataTable();
int fieldCount = reader.FieldCount;
for (int fieldIndex = 0; fieldIndex < fieldCount; ++fieldIndex)
{
table.Columns.Add(reader.GetName(fieldIndex), reader.GetFieldType(fieldIndex));
}
table.BeginLoadData();
object[] rowValues = new object[fieldCount];
while (reader.Read())
{
reader.GetValues(rowValues);
table.LoadDataRow(rowValues, true);
}
reader.Close();
table.EndLoadData();
return table;
}
catch (Exception ex)
{
throw new Exception("DataReader转换为DataTable时出错!", ex);
}
}
示例2: CreateTable
public static DataTable CreateTable(DbDataReader reader)
{
DataTable table = new DataTable();
for (int i = 0; i < reader.FieldCount; i++)
{
DataColumn column = new DataColumn(reader.GetName(i), reader.GetFieldType(i));
table.Columns.Add(column);
}
table.AcceptChanges();
return table;
}
示例3: WriteColumns2File
public void WriteColumns2File(DbDataReader reader, string file)
{
if (reader == null)
return;
using (System.IO.StreamWriter writer = new System.IO.StreamWriter(file))
{
for (int i = 0; i < reader.VisibleFieldCount; i++)
{
string index = (i + 1).ToString("D2");
string columnName = reader.GetName(i).ToUpper();
string type = reader.GetFieldType(i).Name;
string comment = "说明";
writer.WriteLine(string.Format("{0}\t|\t{1}\t|\t{2}\t|\t{3}", index, columnName, type, comment));
}
}
}
示例4: CreateTableFromReader
private FeatureDataTable CreateTableFromReader(DbDataReader reader, int geomIndex)
{
var res = new FeatureDataTable {TableName = Table};
for (var c = 0; c < geomIndex; c++)
{
var fieldType = reader.GetFieldType(c);
if (fieldType == null)
throw new Exception("Unable to retrieve field type for column " + c);
res.Columns.Add(DequoteIdentifier(reader.GetName(c)), fieldType);
}
return res;
}
示例5: GetTableMetadata
private static ColumnMetadata[] GetTableMetadata(DbDataReader reader)
{
var columnMetadata = new ColumnMetadata[reader.FieldCount];
for (var i = 0; i < reader.FieldCount; i++)
{
columnMetadata[i] =
new ColumnMetadata(
reader.GetName(i), reader.GetDataTypeName(i), reader.GetFieldType(i));
}
return columnMetadata;
}
示例6: BulkInsert
public override bool BulkInsert(string schemaName, string tableName, DbDataReader reader, Action<long> callback)
{
// Read the first row to get the information on the schema
if (reader.Read()) {
var existingTable = GetDbSchema(schemaName, tableName);
var readerTable = new DbTable(tableName, schemaName);
var pgTypes = new List<NpgsqlDbType>();
for (var i = 0; i < reader.FieldCount; i++) {
var columnName = reader.GetName(i);
var columnType = reader.GetFieldType(i);
var column = new DbColumn(columnName, MungType.Get(columnType));
readerTable.Columns.Add(column);
var type = PostgresqlTypeConverter.Get(column.MungType);
if (type == null) {
throw new Exception($"Unable to load Postgres type for type: {column.MungType.Code}, Column: {column.ColumnName}");
}
pgTypes.Add(type.PostgresqlDbType);
}
if (existingTable == null) {
CreateTable(readerTable);
} else {
ModifySchema(existingTable, readerTable);
}
var table = GetDbSchema(schemaName, tableName);
var rowCount = 0L;
using (var cn = _connectionFactory()) {
using (var writer = cn.BeginBinaryImport(CopyCommand(table))) {
do {
writer.StartRow();
for (var i = 0; i < table.Columns.Count; i++) {
var col = table.Columns[i];
var val = reader[col.ColumnName];
if (val == DBNull.Value) {
writer.WriteNull();
} else {
writer.Write(reader[col.ColumnName], pgTypes[i]);
}
}
if (callback != null) {
callback(rowCount);
}
rowCount++;
} while (reader.Read());
}
}
}
return true;
}
示例7: BuildMapPlans
private IEnumerable<MapPlan> BuildMapPlans(GroupResult<PosName> groupedName, DbDataReader dataReader, PocoData pocoData, List<PocoMember> pocoMembers)
{
// find pocomember by property name
var pocoMember = pocoMembers.FirstOrDefault(x => IsEqual(groupedName.Item, x.Name));
if (pocoMember == null)
{
yield break;
}
if (groupedName.SubItems.Any())
{
var memberInfoType = pocoMember.MemberInfoData.MemberType;
if (memberInfoType.IsAClass() || pocoMember.IsDynamic)
{
var children = PocoDataBuilder.IsDictionaryType(memberInfoType)
? CreateDynamicDictionaryPocoMembers(groupedName.SubItems, pocoData)
: pocoMember.PocoMemberChildren;
var subPlans = groupedName.SubItems.SelectMany(x => BuildMapPlans(x, dataReader, pocoData, children)).ToArray();
yield return (reader, instance) =>
{
var newObject = pocoMember.IsList ? pocoMember.Create(dataReader) : (pocoMember.GetValue(instance) ?? pocoMember.Create(dataReader));
var shouldSetNestedObject = false;
foreach (var subPlan in subPlans)
{
shouldSetNestedObject |= subPlan(reader, newObject);
}
if (shouldSetNestedObject)
{
if (pocoMember.IsList)
{
var list = pocoMember.CreateList();
list.Add(newObject);
newObject = list;
}
pocoMember.SetValue(instance, newObject);
return true;
}
return false;
};
}
}
else
{
var destType = pocoMember.MemberInfoData.MemberType;
var defaultValue = MappingHelper.GetDefault(destType);
var converter = GetConverter(pocoData, pocoMember.PocoColumn, dataReader.GetFieldType(groupedName.Key.Pos), destType);
yield return (reader, instance) => MapValue(groupedName, reader, converter, instance, pocoMember.PocoColumn, defaultValue);
}
}
示例8: BulkInsert
public override bool BulkInsert(string schemaName, string tableName, DbDataReader reader, Action<long> eachRow)
{
using (var cn = _connectionFactory()) {
using (SqlBulkCopy copy = new SqlBulkCopy(cn)) {
var existingTable = GetDbSchema(schemaName, tableName);
var readerTable = new DbTable(tableName, schemaName);
for (var i = 0; i < reader.FieldCount; i++) {
var columnName = reader.GetName(i);
var columnType = reader.GetFieldType(i);
var column = new DbColumn(columnName, MungType.Get(columnType));
readerTable.Columns.Add(column);
}
if (existingTable == null) {
CreateTable(readerTable);
}
var table = GetDbSchema(schemaName, tableName);
for (var i = 0; i < reader.FieldCount; i++) {
var column = reader.GetName(i);
var sourceOrdinal = i;
var destinationOrdinal = table.Columns.FindIndex(x => x.ColumnName == column);
if (destinationOrdinal == -1) {
var msg = string.Format("Unable to resolve column mapping, column: {0} was not found in destination table {1}",
column,
table.TableName
);
throw new Exception(msg);
}
copy.ColumnMappings.Add(new SqlBulkCopyColumnMapping(i, destinationOrdinal));
}
copy.DestinationTableName = string.Format("[{0}].[{1}]", table.SchemaName, table.TableName);
copy.BatchSize = 1000;
copy.NotifyAfter = 1;
copy.SqlRowsCopied += (sender, e) => {
eachRow(e.RowsCopied);
};
copy.BulkCopyTimeout = 9999999;
copy.WriteToServer(reader);
}
}
return true;
}
示例9: ToJson
/// <summary>
/// DataReader转换为Json
/// </summary>
/// <param name="dataReader">DataReader对象</param>
/// <returns>Json字符串</returns>
public static string ToJson(DbDataReader dataReader)
{
string jsonString = "[";
while (dataReader.Read())
{
jsonString += "{";
for (int i = 0; i < dataReader.FieldCount; i++)
{
jsonString += "\"" + ToJson(dataReader.GetName(i)) + "\":";
Type type = dataReader.GetFieldType(i);
if (type == typeof(DateTime))
{
if (!dataReader.IsDBNull(i))
{
DateTime dt = dataReader.GetDateTime(i);
jsonString += "\"" + ToJson(dt.ToString("yyyy-MM-dd HH:mm:ss")) + "\",";
}
else
{
jsonString += "\"\",";
}
}
else if (type == typeof(string))
{
jsonString += "\"" + ToJson(dataReader[i].ToString()) + "\",";
}
else if (type == typeof(Int32) || type == typeof(Int64) || type == typeof(Double) || type == typeof(Decimal))
{
if (!dataReader.IsDBNull(i))
{
jsonString += ToJson(dataReader[i].ToString()) + ",";
}
else
{
jsonString += "\"\",";
}
}
else
{
throw new Exception("未知类型:" + type.ToString());
//jsonString += ToJson(dataReader[i].ToString()) + ",";
}
}
jsonString = DeleteLast(jsonString) + "},";
}
dataReader.Close();
return DeleteLast(jsonString) + "]";
}
示例10: Init
public override void Init(DbDataReader dataReader, PocoData pocoData)
{
_converter = GetConverter(pocoData, null, dataReader.GetFieldType(0), pocoData.Type) ?? (x => x);
base.Init(dataReader, pocoData);
}
示例11: GetSchemaEntity
private static Entity GetSchemaEntity(DbDataReader reader, string entitySet, string entityKind)
{
reader.Read();
var entity = new Entity();
entity.AddProperty(DataLoaderConstants.PropNameEntitySet, entitySet);
entity.AddProperty(DataLoaderConstants.PropNameEntityKind, entityKind);
for (int i = 0; i < reader.FieldCount; ++i)
{
entity.AddProperty(reader.GetName(i), reader.GetFieldType(i).ToString());
}
return entity;
}
示例12: HandleDbNullValues
private static void HandleDbNullValues(DbDataReader reader,
object targetObject,
PropertyInfo propertyInfo,
string fieldName)
{
var propertyType = propertyInfo.PropertyType;
var isNullable = (Nullable.GetUnderlyingType(propertyType) != null);
if (isNullable)
{
propertyInfo.SetValue(targetObject, null, null);
}
else
{
Type targetObjectType = reader.GetFieldType(fieldName);
throw new NullableFieldTypeException(fieldName, propertyType, targetObjectType);
}
}
示例13: ConvertDataReaderToDictList
/// <summary>
/// DataReader 转 List
/// </summary>
/// <param name="dataReader"></param>
/// <returns></returns>
public List<Dictionary<string, dynamic>> ConvertDataReaderToDictList(DbDataReader dataReader)
{
var result = new List<Dictionary<string, dynamic>>();
if (dataReader != null && dataReader.HasRows)
{
while (dataReader.Read())
{
var dict = new Dictionary<string, dynamic>();
for (var i = 0; i < dataReader.FieldCount; i++)
{
try
{
var key = dataReader.GetName(i);
var val = Convert.ChangeType(dataReader[i], dataReader.GetFieldType(i));
if (!string.IsNullOrWhiteSpace(key))
dict.Add(key, val);
}
catch
{
}
}
result.Add(dict);
}
}
return result;
}