public static IEnumerable <TBColumn> GetColumns(DBSource dbSource, string dbName, string tbid, string tbName) { var tb = ExecuteDBTable(dbSource, dbName, SQLHelperConsts.GetColumns, new SqlParameter("@id", tbid)); //查主键 var tb2 = GetKeys(dbSource, dbName, tbName); //查自增键 string idColumnName = GetIdColumName(dbSource, dbName, tbName); //描述 DataTable tbDesc = GetTableColsDescription(dbSource, dbName, tbName); for (int i = 0; i < tb.Rows.Count; i++) { var y = (from x in tbDesc.AsEnumerable() where string.Equals((string)x["ColumnName"], (string)tb.Rows[i]["name"], StringComparison.OrdinalIgnoreCase) select x["Description"]).FirstOrDefault(); yield return(new TBColumn { IsKey = (tb2.AsEnumerable()).FirstOrDefault(p => p[0].ToString().Equals(tb.Rows[i]["name"].ToString(), StringComparison.OrdinalIgnoreCase)) != null, Length = int.Parse(tb.Rows[i]["length"].ToString()), Name = tb.Rows[i]["name"].ToString(), TypeName = tb.Rows[i]["type"].ToString(), IsID = string.Equals(idColumnName, tb.Rows[i]["name"].ToString()), IsNullAble = tb.Rows[i]["isnullable"].ToString().Equals("1"), prec = NumberHelper.CovertToInt(tb.Rows[i]["prec"]), scale = NumberHelper.CovertToInt(tb.Rows[i]["scale"]), Description = y == null?"":y.ToString(), }); } }
public static IEnumerable <TBColumn> GetColumns(DBSource dbSource, string dbName, string tbName) { var tb = ExecuteDBTable(dbSource, dbName, MySqlHelperConsts.GetColumns, new MySqlParameter("@db", dbName), new MySqlParameter("@tb", tbName)); var idColumnName = GetAutoIncrementColName(dbSource, dbName, tbName); for (int i = 0; i < tb.Rows.Count; i++) { yield return(new TBColumn { IsKey = string.Equals((string)tb.Rows[i]["column_key"], "pri", StringComparison.OrdinalIgnoreCase), Length = int.Parse(string.IsNullOrEmpty(tb.Rows[i]["character_maximum_length"].ToString()) ? "0" : tb.Rows[i]["character_maximum_length"].ToString()), Name = tb.Rows[i]["column_name"].ToString(), TypeName = tb.Rows[i]["data_type"].ToString(), IsID = string.Equals(idColumnName, tb.Rows[i]["column_name"].ToString()), IsNullAble = tb.Rows[i]["is_nullable"].ToString().Equals("yes", StringComparison.OrdinalIgnoreCase), prec = NumberHelper.CovertToInt(tb.Rows[i]["numeric_precision"]), scale = NumberHelper.CovertToInt(tb.Rows[i]["numeric_scale"]), Description = tb.Rows[i]["column_comment"].ToString(), }); } }