protected async Task <TableFieldDef[]> GetFieldDefs(string tableName) { List <TableFieldDef> fields = new List <TableFieldDef>(); string commandText = $"DESCRIBE {tableName}"; using (MySqlDataReader reader = await ExecuteReaderAsync(this.ConnectionString, commandText)) { while (reader.Read()) { string name = reader[0].ToString(); string typeText = reader[1].ToString(); string allowNullText = reader[2].ToString(); string key = reader[3].ToString(); string extra = reader[5].ToString(); (Type type, int maxLength) = BaseDatabase.ConvertMySqlType(typeText); bool allowNull = allowNullText.Equals("YES", StringComparison.OrdinalIgnoreCase); bool isAutoIncrement = !string.IsNullOrEmpty(extra) && extra.Contains("auto_increment"); fields.Add(new TableFieldDef(name, type, maxLength, allowNull, isAutoIncrement)); } } return(fields.ToArray()); }