internal Dictionary <string, bool> GetExistsTables(string serchPattern) { if (string.IsNullOrEmpty(serchPattern)) { throw new ArgumentNullException("serchPattern"); } string tablesQuery = string.Format(@"SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME LIKE '{0}'", serchPattern); Dictionary <string, bool> uniqueTables = new Dictionary <string, bool>(); DataTable tablesInfo = this.DataAdapter.GetDataTable(tablesQuery); foreach (DataRow tableInfoRow in tablesInfo.Rows) { string tableName = DataRowReader.GetStringValue(tableInfoRow, "TABLE_NAME"); if (string.IsNullOrEmpty(tableName)) { continue; } if (!uniqueTables.ContainsKey(tableName)) { uniqueTables.Add(tableName, true); } } return(uniqueTables); }
private Dictionary <string, ICollection> GetTablesMetadata(string query) { if (string.IsNullOrEmpty(query)) { throw new ArgumentNullException("query"); } Dictionary <string, ICollection> metadataCollection = new Dictionary <string, ICollection>(); DataTable dtResult = this.DataAdapter.GetDataTable(query); foreach (DataRow resultRow in dtResult.Rows) { string tableName = DataRowReader.GetStringValue(resultRow, "TableName"); if (string.IsNullOrEmpty(tableName)) { continue; } string tableNameLow = tableName.ToLower(); List <DataRow> metadataRows = null; if (metadataCollection.ContainsKey(tableNameLow)) { metadataRows = (List <DataRow>)metadataCollection[tableNameLow]; } else { metadataRows = new List <DataRow>(); metadataCollection.Add(tableNameLow, metadataRows); } if (metadataRows == null) { throw new Exception(string.Format("Не удалось сформировать коллекцию метаданных для таблицы {0}.", tableName)); } metadataRows.Add(resultRow); } return(metadataCollection); }
/// <summary> /// Возвращает метаданные существующей в базе данных таблицы. /// </summary> /// <param name="tableName">Название таблицы.</param> /// <returns></returns> public DataRow GetTableData(string tableKey, string tableName) { if (string.IsNullOrEmpty(tableName)) { throw new ArgumentNullException("tableName"); } string tableNameLow = tableName.ToLower(); DataRow tableData = null; //используем совместные данные всех таблиц только при первом вызове и установленном флаге контекста подключений ExtractSummaryTablesMetadata. string extractingKey = string.Format("{0}.{1}", tableKey, tableName).ToLower(); bool extractSummaryMetadata = this.Connection.Context.IsSummaryTablesMetadataContext && !__extracted_TablesData.ContainsKey(extractingKey) && !this.IsRenamedTable(tableName); if (!extractSummaryMetadata) { string query = @" SELECT name AS [Name] FROM sys.tables WITH(NOLOCK) WHERE name = N'{TableNameText}'" .ReplaceKey("TableNameText", tableName.QueryEncode()); tableData = this.DataAdapter.GetDataRow(query); } else { if (!__init_TablesData) { _TablesData = new Dictionary <string, DataRow>(); //получаем метаданные всех таблиц. string query = @" --получение метаданных таблиц базы {DatabaseName} SELECT name AS [Name] FROM sys.tables WITH(NOLOCK)" .ReplaceKey("DatabaseName", this.Connection.DisplayName) ; DataTable dtResult = this.DataAdapter.GetDataTable(query); foreach (DataRow resultRow in dtResult.Rows) { string anyTableName = DataRowReader.GetStringValue(resultRow, "Name"); if (string.IsNullOrEmpty(anyTableName)) { continue; } string anyTableNameLow = anyTableName.ToLower(); if (!_TablesData.ContainsKey(anyTableNameLow)) { _TablesData.Add(anyTableNameLow, resultRow); } } __init_TablesData = true; } //получаем метаданные таблицы из общей выборки. if (_TablesData.ContainsKey(tableNameLow)) { tableData = _TablesData[tableNameLow]; } if (!__extracted_TablesData.ContainsKey(extractingKey)) { __extracted_TablesData.Add(extractingKey, true); } } return(tableData); }
public string GetStringValue(string columnName) { string typedValue = DataRowReader.GetStringValue(this.Row, columnName); return typedValue; }