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); }