public static List <SQLTableName> GetSQLList(string list)
        {
            Kit.CheckDataBase();
            List <SQLTableName> lsttab = null;

            if (Keel.DB.Common.NowDataBase.GetType() == typeof(Keel.DB.SQLServer))
            {
                DBHelper <SQLTableName> dbt = new DBHelper <SQLTableName>();
                lsttab = dbt.GetDataViewForObjectList(list);
            }
            else if (Keel.DB.Common.NowDataBase.GetType() == typeof(Keel.DB.MSAccess))
            {
                lsttab = new List <SQLTableName>();
                KeelKit.Core.DBInformer dbi = new DBInformer(Kit.SlnKeel.ConnectString);
                Hashtable dtm = list != "ViewInfo" ? dbi.GetUserTables() : dbi.GetUserViews();
                foreach (DictionaryEntry tb in dtm)
                {
                    SQLTableName st = new SQLTableName();
                    st.name = tb.Key.ToString();
                    lsttab.Add(st);
                }
            }
            else
            {
                lsttab = new List <SQLTableName>();
                System.Data.Common.DbConnection dbc = Keel.DB.Common.NowDataBase.GetProviderFactory().CreateConnection();
                dbc.ConnectionString = Keel.DB.Common.NowDataBase.ConnectString;
                dbc.Open();
                DataTable dt = dbc.GetSchema(list != "ViewInfo" ? "Tables" : "Views");
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    lsttab.Add(new SQLTableName()
                    {
                        name = (string)dt.Rows[i]["TABLE_NAME"]
                    });
                }
                dbc.Close();
            }
            return(lsttab);
        }
        public static List <SQLTableInfo> GetSqlTableInfoList()
        {
            List <SQLTableInfo> dbix = new List <SQLTableInfo>();

            if (Keel.DB.Common.NowDataBase.GetType() == typeof(Keel.DB.SQLServer))
            {
                DBHelper <SQLTableInfo> dbi = new DBHelper <SQLTableInfo>();
                dbix = dbi.GetDataViewForObjectList();
                dbix.AddRange(dbi.GetDataViewForObjectList("ViewInfo"));
            }
            else if (Keel.DB.Common.NowDataBase.GetType() == typeof(Keel.DB.MSAccess))
            {
                KeelKit.Core.DBInformer dbi = new DBInformer(Kit.SlnKeel.ConnectString);
                //Hashtable dtm = list != "ViewInfo" ? dbi.GetUserTables() : dbi.GetUserViews();
                Hashtable dtm = dbi.GetUserTables();
                foreach (DictionaryEntry tb in dtm)
                {
                    ArrayList al   = dbi.GetTableColumns(tb.Key.ToString());
                    DataTable pk   = dbi.GetPrimaryKeys(tb.Key.ToString());
                    string    keyx = "";
                    if (pk != null && pk.Rows.Count > 0)
                    {
                        keyx = pk.Rows[0]["COLUMN_NAME"].ToString();
                        //  t_identity=pk.Rows[0]["COLUMN_NAME"].ToString ()
                    }
                    DataTable fk = dbi.GetForeignKeys(tb.Key.ToString());
                    foreach (var item in al)
                    {
                        SQLTableInfo      st  = new SQLTableInfo();
                        DataFieldMetadata dfm = item as DataFieldMetadata;
                        st.t_fieldbitcount     = dfm.Size;
                        st.t_fieldcannull      = dfm.IsNullable ? OK : "";
                        st.t_fielddefaultvalue = dfm.DefaultValueStr as string;
                        //st.t_fielddesc =
                        //st.t_fieldindex =
                        //st.t_fieldiscomputed
                        st.t_fieldlenght = dfm.Size;
                        st.t_fieldname   = dfm.Name;
                        //st.t_fieldscale =

                        st.t_fieldtype = dbi.ConvertDataType2DBType(dfm.FieldType);
                        st.t_identity  = dfm.Name == keyx ? OK : "";
                        st.t_tablekey  = dfm.Name == keyx ? OK : "";
                        st.t_tablename = dfm.Table;
                        dbix.Add(st);
                    }
                }
            }
            else
            {
                System.Data.Common.DbConnection dbc = Keel.DB.Common.NowDataBase.GetProviderFactory().CreateConnection();
                dbc.ConnectionString = Keel.DB.Common.NowDataBase.ConnectString;
                dbc.Open();
                DataTable dt = dbc.GetSchema("Columns");
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    DataRow      dr  = dt.Rows[i];
                    SQLTableInfo sti = new SQLTableInfo();

                    try
                    {
                        sti.t_fieldbitcount     = dr["CHARACTER_MAXIMUM_LENGTH"] == DBNull.Value ? 0 : (int)(ulong)dr["CHARACTER_MAXIMUM_LENGTH"];
                        sti.t_fieldcannull      = ((string)dr["IS_NULLABLE"] != "NO" ? OK : "");
                        sti.t_fielddefaultvalue = dr["COLUMN_DEFAULT"] as string;
                        sti.t_fielddesc         = (string)dr["COLUMN_COMMENT"];
                        sti.t_fieldindex        = (int)((ulong)dr["ORDINAL_POSITION"]);
                        sti.t_fieldiscomputed   = "";
                        sti.t_fieldlenght       = dr["CHARACTER_MAXIMUM_LENGTH"] == DBNull.Value ? 0 : (int)(ulong)dr["CHARACTER_MAXIMUM_LENGTH"];
                        sti.t_fieldname         = (string)dr["COLUMN_NAME"];
                        sti.t_fieldscale        = dr["NUMERIC_SCALE"] == DBNull.Value ? 0 : (int)(ulong)dr["NUMERIC_SCALE"];
                        sti.t_fieldtype         = (string)dr["DATA_TYPE"];
                        sti.t_identity          = dr["EXTRA"] == DBNull.Value ? "" : (((string)dr["EXTRA"]).Contains("auto_increment") ? OK : "");
                        sti.t_tabledesc         = (dr["TABLE_CATALOG"] as string + "," + dr["CHARACTER_SET_NAME"] as string);
                        sti.t_tablekey          = ((string)dr["COLUMN_KEY"] == "PRI" ? OK : "");
                        sti.t_tablename         = (string)dr["TABLE_NAME"];
                    }
                    catch (Exception ex)
                    {
                        Common.ShowInfo(ex.Message + "\r\n" + ex.StackTrace);
                    }
                    dbix.Add(sti);
                }
                dbc.Close();
            }
            return(dbix);
        }