/// <summary><see cref="Edrych.DataAccess.DataAccessBase.GetColumns"/></summary> public override List<Column> GetColumns(string TableName) { string sql = DataAccessResources.SQLite_FindColumns.Replace("@TableName", TableName); List<Column> cols = GetDbItems<Column>(sql, (reader) => { Column col = new Column(); col.Name = reader["name"].ToString(); col.DataType = reader["type"].ToString(); col.IsNullable = reader["notnull"].ToString() == "0"; col.Key = int.Parse(reader["pk"].ToString()) > 0 ? KeyType.Primary : KeyType.None; return col; }); List<string> fks = GetDbItems<string>(DataAccessResources.SQLite_FindForeignKeys.Replace("@TableName", TableName), (reader) => { return reader["from"].ToString(); }); foreach(Column col in cols.Where(c => c.Key != KeyType.Primary && fks.Contains(c.Name))) { col.Key = KeyType.Foreign; } return cols; }
/// <summary><see cref="Edrych.DataAccess.DataAccessBase.GetColumns"/></summary> public override List<Column> GetColumns(string TableName) { this.ClearParameters(); this.AddTableParams(TableName); List<Column> cols = GetDbItems<Column>(DataAccessResources.ANSI_FindColumns, (reader) => { Column col = new Column(); col.Name = reader["name"].ToString(); col.DataType = reader["type"].ToString(); col.IsNullable = reader["IS_NULLABLE"].ToString() == "YES"; col.Key = (int)reader["PKCount"] > 0 ? KeyType.Primary : (int)reader["FKCount"] > 0 ? KeyType.Foreign : KeyType.None; return col; }); this.ClearParameters(); return cols; }
/// <summary><see cref="Edrych.DataAccess.DataAccessBase.GetColumns"/></summary> public override List<Column> GetColumns(string TableName) { string sql = DataAccessResources.Teradata_FindColumns.Replace("@DatabaseName", this.SelectedDatabase).Replace("@TableName", TableName); List<Column> columns = GetDbItems<Column>(sql, (reader) => { Column col = new Column(); col.Name = reader["Column Name"].ToString().Trim(); string dataType = COLUMN_TYPE_LOOKUP[reader["Type"].ToString().Trim()]; string maxLength = reader["Max Length"].ToString().Trim(); string scale = reader["Decimal Total Digits"].ToString().Trim(); string precision = reader["Decimal Fractional Digits"].ToString().Trim(); if (dataType.Contains("CHAR") && !string.IsNullOrEmpty(maxLength)) { col.DataType = dataType + " (" + maxLength + ")"; } else if (dataType == "DECIMAL" && !string.IsNullOrEmpty(scale) && !string.IsNullOrEmpty(precision)) { col.DataType = dataType + " (" + scale + ", " + precision + ")"; } else { col.DataType = dataType; } col.IsNullable = reader["Nullable"].ToString() == "Y"; col.Key = reader["Primary?"].ToString().Trim() == "P" ? KeyType.Primary : KeyType.None; return col; }); sql = DataAccessResources.Teradata_FindForeignKeys.Replace("@DatabaseName", "'" + this.SelectedDatabase + "'").Replace("@TableName", "'" + TableName + "'"); List<string> fks = GetDbItems<string>(sql, (reader) => { return reader["ChildKeyColumn"].ToString().Trim(); }); foreach (Column col in columns.Where(c => c.Key != KeyType.Primary && fks.Contains(c.Name))) { col.Key = KeyType.Foreign; } return columns; }
/// <summary><see cref="Edrych.DataAccess.DataAccessBase.GetColumns"/></summary> public override List<Column> GetColumns(string TableName) { List<Column> cols = new List<Column>(); if (AddTableParameters(TableName)) { cols = GetDbItems<Column>(DataAccessResources.DB2_FindColumns, (reader) => { Column col = new Column(); col.Name = reader["COLNAME"].ToString(); col.DataType = reader["COLTYPE"].ToString(); col.IsNullable = reader["NULLS"].ToString() == "Y"; col.Key = (int)reader["IsPrimaryKey"] > 0 ? KeyType.Primary : (int)reader["FKCount"] > 0 ? KeyType.Foreign : KeyType.None; return col; }); this.ClearParameters(); } return cols; }