/// <summary> /// Проверяет, существует ли поле относительного пути с данным названием. /// </summary> /// <param name="command">Команда, необходимая для получения названия поля с относительным путем файла.</param> /// <returns>true, если проверка прошла успешно, иначе false.</returns> public bool Validate(Command command) { string error = $"Столбца с именем \"{command.UrlFieldName}\" в таблице \"{command.TableName}\" не существует. " + "Проверьте правильность названия столбца Url."; BaseConnector connector = ConnectorFactory.CreateConnector(command); // Проверяем наличие столбца Url в SQL Server. if (connector is SqlServerConnector) { using (connector.Connection) { connector.Connection.Open(); SqlCommand sqlQuery = (SqlCommand)connector.Connection.CreateCommand(); sqlQuery.CommandText = "IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS " + "WHERE TABLE_NAME = @TableName AND COLUMN_NAME = @UrlFieldName) SELECT 1 ELSE SELECT 0"; sqlQuery.Parameters.AddWithValue("TableName", command.TableName); sqlQuery.Parameters.AddWithValue("UrlFieldName", command.UrlFieldName); if ((int)sqlQuery.ExecuteScalar() == 0) { Logger.Log.ErrorFormat(error); Console.WriteLine(error); return(false); } } return(true); } // Проверяем наличие столбца Url в PostgreSQL. if (connector is PostgreSqlConnector) { using (connector.Connection) { connector.Connection.Open(); NpgsqlCommand sqlQuery = (NpgsqlCommand)connector.Connection.CreateCommand(); sqlQuery.CommandText = "SELECT EXISTS(SELECT 1 FROM information_schema.columns " + "WHERE table_name = @TableName AND column_name = @UrlFieldName);"; sqlQuery.Parameters.AddWithValue("TableName", command.TableName); sqlQuery.Parameters.AddWithValue("UrlFieldName", command.UrlFieldName); if (!(bool)sqlQuery.ExecuteScalar()) { Logger.Log.ErrorFormat(error); Console.WriteLine(error); return(false); } } return(true); } return(false); }
/// <summary> /// Проверяет на корректность указанную строку подключения. /// </summary> /// <param name="command">Команда, необходимая для получения строки подключения к базе данных.</param> /// <returns>true, если проверка прошла успешно, иначе false.</returns> public bool Validate(Command command) { string error = $"При попытке соединения с {command.ConnectionString} произошла ошибка. " + "Проверьте правильность строки подключения."; try { using (DbConnection connection = ConnectorFactory.CreateConnector(command).Connection) { connection.Open(); } } catch (Exception) { Logger.Log.ErrorFormat(error); Console.WriteLine(error); return(false); } return(true); }
/// <summary> /// Создает новый экземпляр класса FileCleaner и создает коннектор к СУБД. /// </summary> /// <param name="command">Команда, необходимая для создания коннектора к СУБД.</param> public FileCleaner(Command command) { Command = command; Connector = ConnectorFactory.CreateConnector(Command); }