/// <summary> /// Obtiene las columnas asociadas al <see cref="System.Data.IDataReader"/> /// </summary> private List <(string, FieldType)> GetColumnsSchema(System.Data.IDataReader reader) { List <(string, FieldType)> columns = new List <(string, FieldType)>(); // Obtiene el esquema del dataReader for (int index = 0; index < reader.FieldCount; index++) { if (!string.IsNullOrWhiteSpace(reader.GetName(index))) { columns.Add((reader.GetName(index), GetColumnSchemaType(reader.GetFieldType(index)))); } else { columns.Add(($"Column{index}", GetColumnSchemaType(reader.GetFieldType(index)))); } } // Devuelve la colección de columnas return(columns); }
public System.Type GetDataType(int columnPos) { if (_aDbDataReader == null) { throw new ObjectDisposedException("Results" , "既にDisposeを呼出されたオブジェクトに対して、Dispose以外のメソッドを呼出そうとしました"); } return(_aDbDataReader.GetFieldType(columnPos)); }
public override void Write(int?chunkId, int?subChunkId, System.Data.IDataReader reader, string tableName) { if (reader == null) { return; } if (tableName.ToLower().StartsWith("_chunks")) { tableName = SourceSchema + "." + tableName; } else { tableName = DestinationSchema + "." + tableName; } var fields = new string[reader.FieldCount]; for (var i = 0; i < reader.FieldCount; i++) { fields[i] = reader.GetName(i); } var q = $"COPY {tableName} ({string.Join(",", fields)}) from STDIN (FORMAT BINARY)"; using (var inStream = _connection.BeginBinaryImport(q)) { while (reader.Read()) { inStream.StartRow(); for (var i = 0; i < reader.FieldCount; i++) { var value = reader.GetValue(i); if (value is null) { inStream.WriteNull(); } else { var fd = GetFieldType(reader.GetFieldType(i), reader.GetName(i)); inStream.Write(value, fd); } } } inStream.Complete(); } }
public static T Entity(System.Data.IDataReader DataReader) { Dictionary <string, DataReaderInfo> FieldDic = new Dictionary <string, DataReaderInfo>(); int i = 0; while (i < DataReader.FieldCount) { string Name = DataReader.GetName(i); FieldDic.Add(Name.ToLower(), new DataReaderInfo { Index = i, Name = Name, FieldType = DataReader.GetFieldType(i) }); i++; } List <T> Li = new List <T>(); while (Li.Count < 1 && DataReader.Read()) { T obj = (T)Activator.CreateInstance(typeof(T)); System.Reflection.PropertyInfo[] pis = obj.GetType().GetProperties(); int j = 0; while (j < pis.Length) { string fieldName = pis[j].Name; string name = fieldName.ToLower(); if (FieldDic.ContainsKey(name)) { DataReaderInfo info = FieldDic[name]; string key = info.Name; object o = DataReader[key]; if (TargetTypeIsBool(pis[j].PropertyType)) { pis[j].SetValue(obj, ConverToBool(o), null); } else { if (DBNull.Value != o) { pis[j].SetValue(obj, o, null); } } } j++; } Li.Add(obj); } DataReader.Close(); return(Li.Count > 0 ? Li[0] : default(T)); }
private static Type CreateType(string name, System.Data.IDataReader reader, string extraColumns) { string columns = string.Join("#", Enumerable.Range(0, reader.FieldCount) .Select(i => string.Format("{0},{1},{2}", reader.GetFieldType(i).Name, i, reader.GetName(Conversions.ToInteger(i)))) .ToArray()); if (extraColumns != null && extraColumns.Length > 0) { columns += extraColumns;// #Integer,~key1,Prueba#String,~key2,PruebaS } return(SmallXmlSerializer.CreateType(name, FieldInfo.FromString(columns))); }
internal static List <DataReaderField> GetDataReaderFields(System.Data.IDataReader reader) { var columns = new List <DataReaderField>(); for (var i = 0; i < reader.FieldCount; i++) { var column = new DataReaderField(i, reader.GetName(i), reader.GetFieldType(i)); if (columns.SingleOrDefault(x => x.LowerName == column.LowerName) == null) { columns.Add(column); } } return(columns); }
System.Data.SqlDbType sqlType(System.Data.IDataReader reader) { var name = reader.GetFieldType(this.Index).Name; switch (name) { case "Int32": return(System.Data.SqlDbType.Int); case "DateTime2": case "SmallDateTime": case "DateTime": return(System.Data.SqlDbType.DateTime); case "String": case "Xml": return(System.Data.SqlDbType.VarChar); case "Boolean": return(System.Data.SqlDbType.Bit); case "Byte": return(System.Data.SqlDbType.TinyInt); case "Double": return(System.Data.SqlDbType.Float); case "Int16": return(System.Data.SqlDbType.SmallInt); case "Int64": return(System.Data.SqlDbType.BigInt); case "FileStream": case "byte[]": return(System.Data.SqlDbType.Binary); case "Guid": return(System.Data.SqlDbType.UniqueIdentifier); case "Money": case "Decimal": return(System.Data.SqlDbType.Decimal); case "Single": return(System.Data.SqlDbType.Real); default: return(System.Data.SqlDbType.Variant); } }
public static IEnumerable <Dictionary <string, object> > AsEnumerable(this System.Data.IDataReader source) { if (source == null) { throw new ArgumentNullException("source"); } while (source.Read()) { Dictionary <string, object> row = new Dictionary <string, object>(); for (int i = 0; i < source.FieldCount; i++) { object value = source.GetValue(i); // return an empty string for dbnull value of field type string if (source.GetFieldType(i) == typeof(string) && source.IsDBNull(i)) { value = string.Empty; } row.Add(source.GetName(i), value); } yield return(row); } }
private static void LargeDataToXML( string table_schema , string table_name , System.Xml.XmlWriter writer , System.Data.IDataReader dr) { writer.WriteStartDocument(true); writer.WriteStartElement("table"); // writer.WriteStartElement(table_name); writer.WriteAttributeString(null, "table_schema", null, table_schema); writer.WriteAttributeString(null, "table_name", null, table_name); writer.WriteAttributeString("xmlns", "xsi", null, System.Xml.Schema.XmlSchema.InstanceNamespace); // writer.WriteAttributeString("xsi", "schemaLocation", null, System.Xml.Schema.XmlSchema.InstanceNamespace); int fc = dr.FieldCount; string[] columnNames = new string[fc]; System.Type[] columnTypes = new System.Type[fc]; for (int i = 0; i < dr.FieldCount; ++i) { columnNames[i] = dr.GetName(i); columnTypes[i] = dr.GetFieldType(i); } // Next i while (dr.Read()) { writer.WriteStartElement("row"); for (int i = 0; i < fc; ++i) { writer.WriteStartElement(columnNames[i]); object obj = dr.GetValue(i); if (obj != System.DBNull.Value) { if (object.ReferenceEquals(columnTypes[i], typeof(System.DateTime))) { System.DateTime dt = (System.DateTime)obj; writer.WriteValue(dt.ToString("yyyy-MM-dd'T'HH':'mm':'ss'.'fff", System.Globalization.CultureInfo.InvariantCulture)); } else { writer.WriteValue(System.Convert.ToString(obj, System.Globalization.CultureInfo.InvariantCulture)); } } else { writer.WriteAttributeString("xsi", "nil", System.Xml.Schema.XmlSchema.InstanceNamespace, "true"); } writer.WriteEndElement(); } // Next i writer.WriteEndElement(); } // Whend writer.WriteEndElement(); } // End Sub LargeDataToXML
} // WriteColumnDefinition private static async System.Threading.Tasks.Task WriteAsXmlAsync( string table_schema , string table_name , XmlRenderType_t format , System.Xml.XmlWriter writer , System.Data.IDataReader dr) { await writer.WriteStartDocumentAsync(true); bool dataAsAttributes = format.HasFlag(XmlRenderType_t.DataInAttributes); bool dataTableOnly = format.HasFlag(XmlRenderType_t.DataTable); if (!dataTableOnly) { await writer.WriteStartElementAsync(null, "dataset", null); } do { await writer.WriteStartElementAsync(null, "table", null); if (dataTableOnly) { if (table_schema != null) { await writer.WriteAttributeStringAsync(null, "table_schema", null, table_schema); } if (table_name != null) { await writer.WriteAttributeStringAsync(null, "table_name", null, table_name); } } if (!dataAsAttributes) { await writer.WriteAttributeStringAsync("xmlns", "xsi", null, System.Xml.Schema.XmlSchema.InstanceNamespace); } int fc = dr.FieldCount; if (format.HasFlag(XmlRenderType_t.WithColumnDefinition)) { await WriteColumnDefinition(writer, dr, format); } string[] columnNames = new string[fc]; System.Type[] columnTypes = new System.Type[fc]; for (int i = 0; i < dr.FieldCount; ++i) { columnNames[i] = dr.GetName(i); columnTypes[i] = dr.GetFieldType(i); } // Next i while (dr.Read()) { await writer.WriteStartElementAsync(null, "row", null); for (int i = 0; i < fc; ++i) { if (!dataAsAttributes) { await writer.WriteStartElementAsync(null, columnNames[i], null); } object obj = dr.GetValue(i); if (obj != System.DBNull.Value) { string value = null; if (object.ReferenceEquals(columnTypes[i], typeof(System.DateTime))) { System.DateTime dt = (System.DateTime)obj; value = dt.ToString("yyyy-MM-dd'T'HH':'mm':'ss'.'fff", System.Globalization.CultureInfo.InvariantCulture); } else { value = System.Convert.ToString(obj, System.Globalization.CultureInfo.InvariantCulture); } if (dataAsAttributes) { await writer.WriteAttributeStringAsync(null, columnNames[i], null, value); } else { writer.WriteValue(value); } } // End if (obj != System.DBNull.Value) else { if (!dataAsAttributes) { await writer.WriteAttributeStringAsync("xsi", "nil", System.Xml.Schema.XmlSchema.InstanceNamespace, "true"); } } if (!dataAsAttributes) { await writer.WriteEndElementAsync(); // column } } // Next i await writer.WriteEndElementAsync(); // row } // Whend await writer.WriteEndElementAsync(); // table await writer.FlushAsync(); if (dataTableOnly) { break; } } while (dr.NextResult()); if (!dataTableOnly) { await writer.WriteEndElementAsync(); // dataset await writer.FlushAsync(); } } // End Sub WriteAsXmlAsync
} // GetAssemblyQualifiedNoVersionName private static async System.Threading.Tasks.Task WriteColumnDefinition( System.Xml.XmlWriter writer , System.Data.IDataReader dr , XmlRenderType_t renderType) { await writer.WriteStartElementAsync(null, "columns", null); for (int i = 0; i <= dr.FieldCount - 1; i++) { await writer.WriteStartElementAsync(null, "column", null); await writer.WriteAttributeStringAsync(null, "name", null, dr.GetName(i)); await writer.WriteAttributeStringAsync(null, "index", null, i.ToString(System.Globalization.CultureInfo.InvariantCulture)); if (renderType.HasFlag(XmlRenderType_t.WithDetail)) { await writer.WriteAttributeStringAsync(null, "fieldType", null, GetTypeName(dr.GetFieldType(i), renderType)); } await writer.WriteEndElementAsync(); // column } await writer.WriteEndElementAsync(); // columns } // WriteColumnDefinition
public virtual Net.Vpc.Upa.Persistence.QueryResult ExecuteQuery(string query, Net.Vpc.Upa.Types.DataTypeTransform[] types, System.Collections.Generic.IList <Net.Vpc.Upa.Persistence.Parameter> queryParameters, bool updatable) /* throws Net.Vpc.Upa.Exceptions.UPAException */ { if (closed) { throw new System.ArgumentException("Connection closed"); } long startTime = System.DateTime.Now.Ticks; System.Exception error = null; try { try { System.Data.IDbCommand s = null; s = connection.CreateCommand(); s.CommandText = query; s.CommandType = System.Data.CommandType.Text; int mi = 0; int index = 1; if (queryParameters != null) { foreach (Net.Vpc.Upa.Persistence.Parameter @value in queryParameters) { Net.Vpc.Upa.Types.DataTypeTransform transform = @value.GetTypeTransform(); Net.Vpc.Upa.Impl.Persistence.TypeMarshaller marshaller = marshallManager.GetTypeMarshaller(transform); marshaller.Write(@value.GetValue(), index, s); index += marshaller.GetSize(); mi++; } } System.Data.IDataReader resultSet = s.ExecuteReader(); if (types == null) { int columnCount; System.Type[] colTypes; columnCount = resultSet.FieldCount; colTypes = new System.Type[columnCount]; for (int i = 0; i < columnCount; i++) { colTypes[i] = resultSet.GetFieldType(i); } types = new Net.Vpc.Upa.Types.DataTypeTransform[columnCount]; for (int i = 0; i < types.Length; i++) { types[i] = new Net.Vpc.Upa.Impl.Transform.IdentityDataTypeTransform(Net.Vpc.Upa.Types.TypesFactory.ForPlatformType(colTypes[i])); } } Net.Vpc.Upa.Impl.Persistence.TypeMarshaller[] marshallers = new Net.Vpc.Upa.Impl.Persistence.TypeMarshaller[types.Length]; for (int i = 0; i < marshallers.Length; i++) { marshallers[i] = marshallManager.GetTypeMarshaller(types[i]); } // Log.log(PersistenceUnitManager.DB_PRE_NATIVE_QUERY_LOG,"[BEFORE] "+currentQueryInfo+" :=" + currentQuery); return(new Net.Vpc.Upa.Impl.Persistence.DefaultQueryResult(resultSet, s, marshallers, types)); } catch (System.Exception ee) { error = ee; throw ee; } finally { if (/*IsLoggable=*/ true) { if (error != null) { log.TraceEvent(System.Diagnostics.TraceEventType.Error, 100, Net.Vpc.Upa.Impl.FwkConvertUtils.LogMessageExceptionFormatter(nameDebugString + " [Error] executeQuery " + query + " :: parameters = " + queryParameters, error)); } else { log.TraceEvent(System.Diagnostics.TraceEventType.Verbose, 60, Net.Vpc.Upa.Impl.FwkConvertUtils.LogMessageExceptionFormatter("{0} executeQuery {1} ;; parameters = {2} ;; time = {3}", null, new object[] { nameDebugString, query, queryParameters, (System.DateTime.Now.Ticks - startTime) })); } } } } catch (System.Exception ex) { throw CreateUPAException(ex, "ExecuteQueryFailedException", query); } }
public static void EntityList(System.Data.IDataReader DataReader, DbExecuteReadOnebyOneAction <T> callback) { Dictionary <string, DataReaderInfo> FieldDic = new Dictionary <string, DataReaderInfo>(); int i = 0; while (i < DataReader.FieldCount) { string Name = DataReader.GetName(i); FieldDic.Add(Name.ToLower(), new DataReaderInfo { Index = i, Name = Name, FieldType = DataReader.GetFieldType(i) }); i++; } long rowNum = 0; while (DataReader.Read()) { T obj = (T)Activator.CreateInstance(typeof(T)); System.Reflection.PropertyInfo[] pis = obj.GetType().GetProperties(); int j = 0; while (j < pis.Length) { string fieldName = pis[j].Name; string name = fieldName.ToLower(); if (FieldDic.ContainsKey(name)) { DataReaderInfo info = FieldDic[name]; string key = info.Name; object o = DataReader[key]; if (TargetTypeIsBool(pis[j].PropertyType)) { pis[j].SetValue(obj, ConverToBool(o), null); } else { if (DBNull.Value != o) { pis[j].SetValue(obj, o, null); } } } j++; } rowNum++; DbExecuteReadOnebyOneResult <T> result = new DbExecuteReadOnebyOneResult <T>(rowNum, obj); try { callback(result); } catch { break; } if (!result.Next) { break; } } DataReader.Close(); }
public Type GetType(int ordinal) { return(NativeReader.GetFieldType(ordinal)); }
System.Type System.Data.IDataRecord.GetFieldType(int i) { return(_dataReader.GetFieldType(i)); }