GetOption() public static method

Метод получает значение опции из файла options.xml
public static GetOption ( string Node, bool NoSignal = false ) : string
Node string Путь к опции в формате XPath
NoSignal bool Оключение логирования об ошибке
return string
Example #1
0
        /// <summary>
        /// Метод реализует выполнение запросов к базе mysql
        /// </summary>
        /// <param name="edition">Редакция</param>
        /// <param name="DBType">Тип базы</param>
        /// <param name="query">SQL запрос</param>
        /// <returns>Результат выполнения запроса</returns>
        public static string mysqlQuery(string edition, string DBType, string query)
        {
            string result           = null;
            string ConnectionString = null;

            ConnectionString = "SERVER=" + Options.GetOption("/Options/ConnectionString/mysql") + ";" +
                               "port=" + Options.GetOption("/Options/ConnectionString/mysql_port") + ";" +
                               "DATABASE=" + GetDBname(edition, DBType) + ";" +
                               "UID=root;" +
                               "PASSWORD=;";
            using (MySqlConnection connection = new MySqlConnection(ConnectionString))
            {
                using (MySqlCommand command = connection.CreateCommand())
                {
                    command.CommandText = query;
                    connection.Open();

                    var results = new List <string>();
                    using (MySqlDataReader Reader = command.ExecuteReader())
                    {
                        bool first = true;

                        while (Reader.Read())
                        {
                            var sb = new StringBuilder();
                            for (int i = 0; i < Reader.FieldCount; i++)
                            {
                                sb.AppendLine(Reader.GetValue(i).ToString());
                            }
                            results.Add(sb.ToString());

                            if (first)
                            {
                                result = Reader.GetValue(0).ToString();
                                first  = false;
                            }
                        }
                    }

                    if (results.Count > 1)
                    {
                        string Return = null;
                        foreach (var r in results)
                        {
                            Return = Return + r + " ";
                        }
                        string spanID = DateTime.Now.Ticks.ToString();
                        Log.MesQuestion("<div style=\"margin: 0px 0px 0px 50px;\"><font size=\"2\" face=\"Verdana\"><a class=\"plus\"" +
                                        " href=\"\" onclick=\"return collapse('" + spanID + "', this)\">" + "Результат выполнения запроса " + query + " содержит больше чем одно поле. Все поля: " +
                                        " </a></font></div><br><span style=\"display:none;\" id=\"" + spanID + "\">" + Return);
                    }
                }
                connection.Close();
            }
            return(result);
        }
Example #2
0
        /// <summary>
        /// Возвращает результат sql запроса в виде двухмерного строкового массива
        /// </summary>
        /// <param name="edition">Редакция</param>
        /// <param name="DBType">Тип базы</param>
        /// <param name="query">SQL запрос</param>
        /// <returns> Строковый массив с результатом запроса.</returns>
        public static string[,] mysqlQueryArray(string edition, string DBType, string query)
        {
            string ConnectionString = null;

            ConnectionString = "SERVER=" + Options.GetOption("/Options/ConnectionString/mysql") + ";" +
                               "port=" + Options.GetOption("/Options/ConnectionString/mysql_port") + ";" +
                               "DATABASE=" + GetDBname(edition, DBType) + ";" +
                               "UID=root;" +
                               "PASSWORD=;";

            MySqlConnection connection = new MySqlConnection(ConnectionString);

            //Открываем sql соединение
            connection.Open();
            //Читаем результат выпонения запроса в reader
            MySqlCommand    command    = new MySqlCommand(query, connection);
            MySqlDataReader dataReader = command.ExecuteReader();
            //Тут мы читаем ридер, чтобы узнать его глубину. Иначе никак.
            int i = 0;

            while (dataReader.Read())
            {
                i++;
            }
            //И полученную глубину ридера используем для задания размерности массива при его объявлении
            string[,] valuesList = new string[i, dataReader.FieldCount];
            //Закрываем ридер
            dataReader.Close();

            //Повторно считываем результат запроса, но теперь заносим его в проинициилизированый массив
            dataReader = command.ExecuteReader();
            i          = 0;
            while (dataReader.Read())
            {
                for (int j = 0; j < dataReader.FieldCount; j++)
                {
                    valuesList[i, j] = dataReader[j].ToString();
                }
                i++;
            }
            //Закрываем ридер и соединение
            dataReader.Close();
            connection.Close();
            //Возвращаем наш массив
            return(valuesList);
        }
Example #3
0
        /// <summary>
        /// Метод возвращает имя базы текущей установки
        /// </summary>
        /// <param name="edition">Редакция</param>
        /// <param name="dbType">Тип базы</param>
        /// <returns>Имя базы</returns>
        public static string GetDBname(string edition, string dbType)
        {
            string DBName   = "";
            string fileName = Options.GetOption("/Options/PathToFolderWhereToInstall/edition[@title='" + edition + "']/" + dbType) + "\\bitrix\\php_interface\\dbconn.php";

            if (File.Exists(fileName) == true)
            {
                StreamReader streamReader = new StreamReader(fileName, Encoding.Default);
                string       workText     = streamReader.ReadToEnd();
                streamReader.Close();

                //смотрим, если тип базы Оракл
                string toReplaceDBType = @"^.*\$DBType = ""oracle"";.*$";

                if (Regex.IsMatch(workText, toReplaceDBType, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline))
                {
                    string toReplaceOracle = @"^.*\$DBLogin = ""([^""]*)"";.*$";
                    string replacement     = @"${1}";

                    if (Regex.IsMatch(workText, toReplaceOracle, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline))
                    {
                        DBName = Regex.Replace(workText, toReplaceOracle, replacement, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline);
                    }
                    else
                    {
                        System.Windows.Forms.DialogResult result = MessageBox.Show("Невозможно получить имя базы отсюда \r\n" + fileName + "\r\n\r\n Выполнение теста прервано",
                                                                                   "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);

                        if (result == System.Windows.Forms.DialogResult.OK)
                        {
                            Log.MesError("Невозможно получить имя базы для устаноки " + edition + "_" + dbType + "\r\nВыполнение теста прервано");
                            return(null);
                        }
                    }
                }
                else
                {
                    string toReplace   = @"^.*\$DBName = ""(.*)"";.*$";
                    string replacement = @"${1}";

                    if (Regex.IsMatch(workText, toReplace, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline))
                    {
                        DBName = Regex.Replace(workText, toReplace, replacement, RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline);
                    }
                    else
                    {
                        System.Windows.Forms.DialogResult result = MessageBox.Show("Невозможно получить имя базы отсюда \r\n" + fileName + "\r\n\r\n Выполнение теста прервано",
                                                                                   "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);

                        if (result == System.Windows.Forms.DialogResult.OK)
                        {
                            Log.MesError("Невозможно получить имя базы для устаноки " + edition + "_" + dbType + "\r\nВыполнение теста прервано");
                            return(null);
                        }
                    }
                }
            }
            else
            {
                System.Windows.Forms.DialogResult result = MessageBox.Show("Не найден файл \r\n" + fileName + "\r\n\r\n Выполнение теста прервано",
                                                                           "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);

                if (result == System.Windows.Forms.DialogResult.OK)
                {
                    Log.MesError("Не найден файл " + fileName + "\r\nВыполнение теста прервано");
                    return(null);
                }
            }

            return(DBName);
        }