示例#1
0
        /// <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);
        }
示例#2
0
        /// <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
        }
示例#3
0
        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();
        }