示例#1
0
        public async Task <IActionResult> GetTableColumns([FromRoute] string id, [FromBody] GetTableColumnsRequest request)
        {
            var conn = ConnectionHelper.Connections[id];

            using (var command = new MySqlCommand($"SHOW COLUMNS IN `{request.Database}`.`{request.Table}`;", ConnectionHelper.Connections[id]))
            {
                await conn.EnsureOpenedAsync();

                var result = new List <MySqlTableColumn>();
                using (var reader = await command.ExecuteReaderAsync())
                {
                    while (await reader.ReadAsync())
                    {
                        result.Add(new MySqlTableColumn
                        {
                            Field   = reader[0].ToString(),
                            Type    = reader[1].ToString(),
                            Null    = reader[2].ToString(),
                            Key     = reader[3].ToString(),
                            Default = DBNull.Value == reader[4] ? null : reader[4].ToString(),
                            Extra   = reader[5].ToString()
                        });
                    }
                }
                return(Json(result));
            }
        }
示例#2
0
        public async Task <IActionResult> GetFullTableColumns([FromRoute] string id, [FromBody] GetTableColumnsRequest request)
        {
            var conn = ConnectionHelper.Connections[id];

            using (var command = new MySqlCommand(
                       @$ "
SELECT 
    `COLUMN_NAME`, `ORDINAL_POSITION`, `COLUMN_DEFAULT`, `IS_NULLABLE`, `DATA_TYPE`, `CHARACTER_MAXIMUM_LENGTH`, `NUMERIC_PRECISION`, `NUMERIC_SCALE`, `DATETIME_PRECISION`, `CHARACTER_SET_NAME`, `COLLATION_NAME`, `COLUMN_KEY`, `EXTRA`, `COLUMN_COMMENT`, `GENERATION_EXPRESSION`
FROM 
    `INFORMATION_SCHEMA`.`COLUMNS` 
WHERE 
    `TABLE_SCHEMA` = @schema 
    AND 
    `TABLE_NAME` = @table
ORDER BY 
    `ORDINAL_POSITION` ASC;", conn))
            {
                command.Parameters.Add(new MySqlParameter("schema", request.Database));
                command.Parameters.Add(new MySqlParameter("table", request.Table));
                await conn.EnsureOpenedAsync();

                var result = new List <MySqlTableColumnFull>();
                using (var reader = await command.ExecuteReaderAsync())
                {
                    while (await reader.ReadAsync())
                    {
                        result.Add(new MySqlTableColumnFull
                        {
                            Name                 = reader["COLUMN_NAME"].ToString(),
                            Type                 = reader["DATA_TYPE"].ToString(),
                            Nullable             = reader["IS_NULLABLE"].ToString() == "YES",
                            Key                  = reader["COLUMN_KEY"].ToString(),
                            Default              = DBNull.Value == reader["COLUMN_DEFAULT"] ? null : reader["COLUMN_DEFAULT"].ToString(),
                            Extra                = reader["EXTRA"].ToString(),
                            CharMaxLength        = DBNull.Value == reader["CHARACTER_MAXIMUM_LENGTH"] ? null : (long?)Convert.ToInt64(reader["CHARACTER_MAXIMUM_LENGTH"]),
                            NumericPrecision     = DBNull.Value == reader["NUMERIC_PRECISION"] ? null : (long?)Convert.ToInt64(reader["NUMERIC_PRECISION"]),
                            NumericScale         = DBNull.Value == reader["NUMERIC_SCALE"] ? null : (long?)Convert.ToInt64(reader["NUMERIC_SCALE"]),
                            DatetimePrecision    = DBNull.Value == reader["DATETIME_PRECISION"] ? null : (long?)Convert.ToInt64(reader["DATETIME_PRECISION"]),
                            Charset              = DBNull.Value == reader["CHARACTER_SET_NAME"] ? null : reader["CHARACTER_SET_NAME"].ToString(),
                            Collation            = DBNull.Value == reader["COLLATION_NAME"] ? null : reader["COLLATION_NAME"].ToString(),
                            Comment              = reader["COLUMN_COMMENT"].ToString(),
                            GenerationExpression = reader["GENERATION_EXPRESSION"].ToString(),
                            OrdinalPosition      = Convert.ToInt64(reader["ORDINAL_POSITION"])
                        });
                    }
                }
                return(Json(result));
            }
        }