/// <summary> /// クラスからテーブルスキーマを取得する /// </summary> /// <returns>スキーマ名の一覧</returns> public IList GetFieldNames(bool isNonSchema) { var ret = new ArrayList(); foreach (var fi in RecordType.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)) { // 属性[DBSchema]がついているものだけを選ぶ var ats = fi.GetCustomAttributes(typeof(DBSchemaAttribute), true); if (ats.Length > 0) { var sc = (DBSchemaAttribute)ats[0]; ret.Add(sc.Name); } else { if (isNonSchema) { var ats2 = fi.GetCustomAttributes(typeof(DBNonSchemaAttribute), true); if (ats2.Length > 0) { ret.Add(fi.Name); } } } } return(ret); }
/// <summary> /// フィールド情報を取得する /// </summary> /// <param name="key">DBの属性名 (DBSchemaAttributeのName)</param> /// <returns>.NETのフィールド情報</returns> public FieldInfo GetFieldInfo(string key) { var finfo = (IDictionary)RecordCommon.fInfos[GetType()]; if (finfo != null) { var fi = (FieldInfo)RecordCommon.fInfos[key]; if (fi != null) { return(fi); } } else { RecordCommon.fInfos[GetType()] = (finfo = new HybridDictionary()); } foreach (var fi in RecordType.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)) { // 属性[DBSchema]がついているものだけを選ぶ var ats = fi.GetCustomAttributes(typeof(DBSchemaAttribute), true); if (ats.Length > 0) { var sc = (DBSchemaAttribute)ats[0]; if (sc.Name == key) { finfo[key] = fi; return(fi); } } else { var ats2 = fi.GetCustomAttributes(typeof(DBNonSchemaAttribute), true); if (ats2.Length > 0) { if (fi.Name == key) { finfo[key] = fi; return(fi); } } } } return(null); #region 旧式 // if( _dat.Count > 0 ) // { // tRecordBase rec = (tRecordBase)_dat[0]; // return rec.GetFieldInfo(key); // } // return null; #endregion }
private void CreateWorkbook() { if (mCnExcel != null && mCnExcel.State == ConnectionState.Open) { mCnExcel.Close(); #if NET_2_0 mCnExcel.Dispose(); #endif } //Delete the file if Exists if (File.Exists(this.mFileName) && this.mOverrideFile) { File.Delete(this.mFileName); } this.OpenConnection(); string cmCreate = ""; if (this.mSheetName == null || mSheetName == string.Empty) { this.mSheetName = "Sheet1$"; } OleDbCommand cm = new OleDbCommand(); cm.Connection = mCnExcel; cmCreate = string.Format("CREATE TABLE [{0}] (", this.mSheetName.Replace("$", "")); foreach (FieldInfo field in RecordType.GetFields()) { cmCreate += field.Name + " char(255),"; } if (cmCreate.EndsWith(",")) { cmCreate = cmCreate.Substring(0, cmCreate.Length - 1); } cmCreate += ")"; cm.CommandText = cmCreate; cm.ExecuteNonQuery(); mCnExcel.Close(); }