public static string GetTableSql(IEnumerable <string> filePaths, string tableName, char csvDelimiter = ',', int headerOffsetRows = 1) { var readers = new List <IDataReader>(); var readerFacs = new List <Func <DataReaderInfo> >(); foreach (var filePath in filePaths) { var readerFac = new Func <DataReaderInfo>(() => { var r = new DataReaderInfo { DataReader = DataReaderFactories.Default(filePath, true, csvDelimiter), FilePath = filePath }; readers.Add(r.DataReader); return(r); }); readerFacs.Add(readerFac); } var rr = CreateTableSql.FromDataReader_Smart(tableName, readerFacs); foreach (var dataReader in readers) { dataReader.Dispose(); } return(rr); }
public static void Add( string name, TfsParameterCollection parameters, CreateDataReader createDataReader) { var info = new DataReaderInfo(name, parameters, createDataReader); Dictionary.Add(name, info); }
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)); }
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(); }