Beispiel #1
0
        public List <SchemaColumn> LoadDBColmun(SchemaDB schemaDB, SchemaTable schemaTable, DbConnection dbConnection)
        {
            //schemaDB.CodeName.CheckIsNullOrWhiteSpace();
            //schemaTable.CodeName.CheckIsNullOrWhiteSpace();
            //dbConnection.TryOpen();
            var result = new List <SchemaColumn>();
            var table  = new DataTable();

            table.Load(dbConnection.ExecuteReader($"SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '{schemaDB.CodeName}' AND TABLE_NAME = '{schemaTable.CodeName}';"));
            foreach (DataRow row in table.Rows)
            {
                //https://www.cnblogs.com/zhihuifan10/p/12124587.html
                // information_schema.COLUMNS 字段说明:
                //table_schema 表所有者(对于schema的名称)
                //table_name 表名
                //column_name 列名
                //ordinal_position 列标识号
                //column_default 列的默认值
                //is_nullable 列的为空性。如果列允许 null,那么该列返回 yes。否则,返回 no
                //data_type 系统提供的数据类型
                //character_maximum_length 以字符为单位的最大长度,适于二进制数据、字符数据,或者文本和图像数据。否则,返回 null。有关更多信息,请参见数据类型
                //character_octet_length      以字节为单位的最大长度,适于二进制数据、字符数据,或者文本和图像数据。否则,返回 NULL。
                //numeric_precision 近似数字数据、精确数字数据、整型数据或货币数据的精度。否则,返回 null
                //numeric_precision_radix 近似数字数据、精确数字数据、整型数据或货币数据的精度基数。否则,返回 null
                //numeric_scale 近似数字数据、精确数字数据、整数数据或货币数据的小数位数。否则,返回 null
                //datetime_precision datetime 及 sql-92 interval 数据类型的子类型代码。对于其它数据类型,返回 null
                //character_set_catalog 如果列是字符数据或 text 数据类型,那么返回 master,指明字符集所在的数据库。否则,返回 null
                //character_set_schema 如果列是字符数据或 text 数据类型,那么返回 dbo,指明字符集的所有者名称。否则,返回 null
                //character_set_name 如果该列是字符数据或 text 数据类型,那么为字符集返回唯一的名称。否则,返回 null
                //collation_catalog 如果列是字符数据或 text 数据类型,那么返回 master,指明在其中定义排序次序的数据库。否则此列为 null
                //collation_schema 返回 dbo,为字符数据或 text 数据类型指明排序次序的所有者。否则,返回 null
                //collation_name 如果列是字符数据或 text 数据类型,那么为排序次序返回唯一的名称。否则,返回 null。
                //domain_catalog 如果列是一种用户定义数据类型,那么该列是某个数据库名称,在该数据库名中创建了这种用户定义数据类型。否则,返回 null
                //domain_schema 如果列是一种用户定义数据类型,那么该列是这种用户定义数据类型的创建者。否则,返回 null
                //domain_name 如果列是一种用户定义数据类型,那么该列是这种用户定义数据类型的名称。否则,返回 NULL

                var resultItem = new SchemaColumn();
                resultItem.CodeName     = row["COLUMN_NAME"].ToString();
                resultItem.DefaultValue = row["COLUMN_DEFAULT"].ToString();
                resultItem.CanNullable  = row["IS_NULLABLE"].ToString() == "YES" ? true : false;
                resultItem.IsPrimaryKey = row["COLUMN_KEY"].ToString() == "PRI" ? true : false;
                resultItem.DisplayName  = resultItem.Description = row["COLUMN_COMMENT"].ToString();
                resultItem.DBType       = row["DATA_TYPE"].ToString();
                resultItem.Order        = int.Parse(row["ORDINAL_POSITION"].ToString());
                result.Add(resultItem);
            }
            return(result);
        }
Beispiel #2
0
        public List <SchemaTable> LoadSchemaTable(SchemaDB schemaDB, DbConnection dbConnection)
        {
            //schemaDB.CodeName.CheckIsNullOrWhiteSpace();
            //dbConnection.TryOpen();
            var result = new List <SchemaTable>();
            var table  = new DataTable();

            table.Load(dbConnection.ExecuteReader($"SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{schemaDB.CodeName}';"));
            foreach (DataRow row in table.Rows)
            {
                var resultItem = new SchemaTable();
                resultItem.CodeName    = row["TABLE_NAME"].ToString();
                resultItem.Description = row["TABLE_COMMENT"].ToString();
                resultItem.DisplayName = row["TABLE_NAME"].ToString();
                result.Add(resultItem);
            }
            return(result);
        }