Beispiel #1
0
        /// <summary>Массовая вставка данных в SQL из DataTable</summary>
        /// <param name="pDataTable">Строка SQL кода</param>
        /// <returns>Возвращаем bool</returns>
        public static bool MET_SqlBulkCopy(DataTable pDataTable)
        {
            bool _Result;

            try
            {
                if (sqlConct.State == ConnectionState.Closed)
                {
                    sqlConct.Open();                                                    // открываем базу
                }
                // Создаем объект SqlBulkCopy, указываем таблицу назначения и загружаем.
                using (var loader = new SqlBulkCopy(sqlConct))
                {
                    loader.DestinationTableName = "StrahZero";
                    loader.WriteToServer(pDataTable);
                }
                _Result = false;
            }
            catch (Exception ex)
            {
                MyGlo.PUB_Logger.Fatal(ex, "Ошибка массовой вставки SqlBulkCopy");
                MyGlo.Event_Error(ex);
                _Result = false;
            }
            return(_Result);
        }
Beispiel #2
0
        /// <summary>Заполняем DataSet Базиса (<see cref="MyGlo.DataSet"/>)</summary>
        /// <param name="pStrSQL">Строка SQL кода</param>
        /// <param name="pNameTable">Наименование таблицы</param>
        public static int MET_DsAdapterFill(string pStrSQL, string pNameTable)
        {
            int            _CountTimeout = 0;                                     // попытки достучаться до сервера (5 попыток)
            SqlDataAdapter _SqlDa        = new SqlDataAdapter(pStrSQL, sqlConct); // создаем адаптер

label1:
            try
            {
                // Предварительно удаляем таблицу
                if (MyGlo.DataSet.Tables[pNameTable] != null)
                {
                    MyGlo.DataSet.Tables[pNameTable].Clear();
                }
                // Загружаем данные
                return(_SqlDa.Fill(MyGlo.DataSet, pNameTable));
            }
            catch (SqlException ex)                                             // проблемы со связью
            {
                if (ex.Number == -2 && _CountTimeout++ < 5)
                {
                    goto label1;
                }
                ex.Data["SQL"] = pStrSQL;
                MyGlo.PUB_Logger.Fatal(ex, "Ошибка Загрузки данных в DataSet из SQL");
                MyGlo.Event_Error(ex);
                goto label1;
            }
            catch                                                               // остальные проблемы
            {
                MyGlo.DataSet.Tables.Remove(pNameTable);
                return(_SqlDa.Fill(MyGlo.DataSet, pNameTable));
            }
        }
Beispiel #3
0
        /// <summary>Выполняем XML запрос (без возврата значений)</summary>
        /// <param name="pStrSQL">Строка SQL кода</param>
        /// <param name="pFile">Имя файла</param>
        public static void MET_QueryXML(string pStrSQL, string pFile)
        {
            int            _CountTimeout = 0;                                   // попытки достучаться до сервера (5 попыток)
            XmlDocument    _Doc          = new XmlDocument();
            XmlDeclaration _XmlDecl      = _Doc.CreateXmlDeclaration("1.0", "windows-1251", null);

label1:
            try
            {
                if (sqlConct.State == ConnectionState.Closed)
                {
                    sqlConct.Open();                                        // открываем базу
                }
                SqlCommand _SqlCom = new SqlCommand(pStrSQL, sqlConct);     // создаем команду
                _SqlCom.CommandTimeout = 90000000;
                try
                {
                    using (XmlReader _Read = _SqlCom.ExecuteXmlReader())        // выполянем запрос
                    {
                        _Doc.Load(_Read);

                        _Read.Close();
                    }
                }
                catch (SqlException ex)
                {
                    if (ex.Number == -2 && _CountTimeout++ < 5)
                    {
                        goto label1;
                    }
                    ex.Data["SQL"] = pStrSQL;
                    MyGlo.PUB_Logger.Error(ex, "Ошибка Запроса SQL (формирование XML файла)");
                }
                catch (Exception ex)
                {
                    ex.Data["SQL"] = pStrSQL;
                    MyGlo.PUB_Logger.Error(ex, "Ошибка Запроса SQL (формирование XML файла)");
                }
            }
            catch (Exception ex)
            {
                ex.Data["SQL"] = pStrSQL;
                MyGlo.PUB_Logger.Fatal(ex, "Ошибка Запроса SQL (формирование XML файла)");
                MyGlo.Event_Error(ex);
                goto label1;
            }
            // Добавляем ветку рут
            XmlElement _Root = _Doc.DocumentElement;

            _Doc.InsertBefore(_XmlDecl, _Root);
            sqlConct.Close();                                               // закрываем подключение
            // Имя файла
            string _PathToXml = @"c:\1Reestrs\" + pFile + ".xml";

            // Сохроняем xml в файл
            _Doc.Save(_PathToXml);
        }
Beispiel #4
0
        /// <summary>Выполняем запрос (возвращаем Hashtable)</summary>
        /// <param name="pStrSQL">Строка SQL кода</param>
        /// <returns>Возвращаем Hashtable (список: ключ/значение)</returns>
        public static Hashtable MET_QueryHash(string pStrSQL)
        {
            Hashtable _Value        = new Hashtable();
            int       _CountTimeout = 0;                                        // попытки достучаться до сервера (5 попыток)

label1:
            try
            {
                if (sqlConct.State == ConnectionState.Closed)
                {
                    sqlConct.Open();                                        // открываем базу
                }
                SqlCommand _SqlCom = new SqlCommand(pStrSQL, sqlConct);     // создаем команду
                try
                {
                    SqlDataReader _SqlDr = _SqlCom.ExecuteReader(); // выполянем запрос
                    _SqlDr.Read();
                    if (_SqlDr.HasRows)                             // есть ли записи
                    {
                        for (int i = 0; i <= _SqlDr.FieldCount - 1; i++)
                        {
                            _Value.Add(_SqlDr.GetName(i), _SqlDr.GetValue(i));
                        }
                    }
                }
                catch (SqlException ex)
                {
                    if (ex.Number == -2 && _CountTimeout++ < 5)
                    {
                        goto label1;
                    }
                    ex.Data["SQL"] = pStrSQL;
                    MyGlo.PUB_Logger.Error(ex, "Ошибка Запроса SQL (возвращающего Hashtable)");
                }
                catch (Exception ex)
                {
                    ex.Data["SQL"] = pStrSQL;
                    MyGlo.PUB_Logger.Error(ex, "Ошибка Запроса SQL (возвращающего Hashtable)");
                }
            }
            catch (Exception ex)
            {
                ex.Data["SQL"] = pStrSQL;
                MyGlo.PUB_Logger.Fatal(ex, "Ошибка Запроса SQL (возвращающего Hashtable)");
                MyGlo.Event_Error(ex);
                goto label1;
            }
            sqlConct.Close();                                               // закрываем подключение
            return(_Value);
        }
Beispiel #5
0
        /// <summary>МЕТОД Возвращает true, если есть хоть одна строка</summary>
        /// <param name="pStrSQL">Строка SQL кода</param>
        /// <returns>Возвращаем bool</returns>
        public static bool MET_QueryBool(string pStrSQL)
        {
            bool _Value        = false;                                         // результат
            int  _CountTimeout = 0;                                             // попытки достучаться до сервера (5 попыток)

label1:
            try
            {
                if (sqlConct.State == ConnectionState.Closed)
                {
                    sqlConct.Open();                                        // открываем базу
                }
                SqlCommand _SqlCom = new SqlCommand(pStrSQL, sqlConct);     // создаем команду
                try
                {
                    if (_SqlCom.ExecuteScalar() == null)                        // выполянем запрос
                    {
                        _Value = false;                                         // нет строк
                    }
                    else
                    {
                        _Value = true;                                          // есть строки
                    }
                }
                catch (SqlException ex)
                {
                    if (ex.Number == -2 && _CountTimeout++ < 5)
                    {
                        goto label1;
                    }
                    ex.Data["SQL"] = pStrSQL;
                    MyGlo.PUB_Logger.Error(ex, "Ошибка Запроса SQL (возвращающего bool)");
                }
                catch (Exception ex)
                {
                    ex.Data["SQL"] = pStrSQL;
                    MyGlo.PUB_Logger.Error(ex, "Ошибка Запроса SQL (возвращающего bool)");
                }
            }
            catch (Exception ex)
            {
                ex.Data["SQL"] = pStrSQL;
                MyGlo.PUB_Logger.Fatal(ex, "Ошибка Запроса SQL (возвращающего bool)");
                MyGlo.Event_Error(ex);
                goto label1;
            }
            sqlConct.Close();                                               // закрываем подключение
            return(_Value);
        }
Beispiel #6
0
        /// <summary>Выполняем запрос (возвращаем SqlDataReader)</summary>
        /// <param name="pStrSQL">Строка SQL кода</param>
        /// <returns>Возвращаем SqlDataReader</returns>
        public static SqlDataReader MET_QuerySqlDataReader(string pStrSQL)
        {
            int _CountTimeout = 0;                                              // попытки достучаться до сервера (5 попыток)

label1:
            try
            {
                if (sqlConct.State == ConnectionState.Closed)
                {
                    sqlConct.Open();                                        // открываем базу
                }
                SqlCommand _SqlCom = new SqlCommand(pStrSQL, sqlConct);     // создаем команду
                try
                {
                    SqlDataReader _SqlDr = _SqlCom.ExecuteReader(CommandBehavior.CloseConnection);  // выполянем запрос

                    return(_SqlDr);
                }
                catch (SqlException ex)
                {
                    if (ex.Number == -2 && _CountTimeout++ < 5)
                    {
                        goto label1;
                    }
                    ex.Data["SQL"] = pStrSQL;
                    MyGlo.PUB_Logger.Fatal(ex, "Ошибка Запроса SQL (возвращающего DataReader)");
                    MyGlo.Event_Error(ex);
                    goto label1;
                }
                catch (Exception ex)
                {
                    ex.Data["SQL"] = pStrSQL;
                    MyGlo.PUB_Logger.Fatal(ex, "Ошибка Запроса SQL (возвращающего DataReader)");
                    MyGlo.Event_Error(ex);
                    goto label1;
                }
            }
            catch (Exception ex)
            {
                ex.Data["SQL"] = pStrSQL;
                MyGlo.PUB_Logger.Fatal(ex, "Ошибка Запроса SQL (возвращающего DataReader)");
                MyGlo.Event_Error(ex);
                goto label1;
            }
        }
Beispiel #7
0
        /// <summary>Выполняем запрос (возвращаем реальное число)</summary>
        /// <param name="pStrSQL">Строка SQL кода</param>
        /// <returns>Возвращаем реальное число</returns>
        public static decimal MET_QueryDec(string pStrSQL)
        {
            decimal       _Value        = 0;                                    // результат
            int           _CountTimeout = 0;                                    // попытки достучаться до сервера (5 попыток)
            SqlConnection _SqlCon       = new SqlConnection();                  // создаем подключение к базе

            _SqlCon.ConnectionString = MET_ConSql();                            // строка инициализации подключения к базе
label1:
            try
            {
                if (sqlConct.State == ConnectionState.Closed)
                {
                    sqlConct.Open();                                        // открываем базу
                }
                SqlCommand _SqlCom = new SqlCommand(pStrSQL, sqlConct);     // создаем команду
                try
                {
                    _Value = MyMet.MET_ParseDec(_SqlCom.ExecuteScalar());       // выполянем запрос
                }
                catch (SqlException ex)
                {
                    if (ex.Number == -2 && _CountTimeout++ < 5)
                    {
                        goto label1;
                    }
                    ex.Data["SQL"] = pStrSQL;
                    MyGlo.PUB_Logger.Error(ex, "Ошибка Запроса SQL (возвращающего реальное число)");
                }
                catch (Exception ex)
                {
                    ex.Data["SQL"] = pStrSQL;
                    MyGlo.PUB_Logger.Error(ex, "Ошибка Запроса SQL (возвращающего реальное число)");
                }
            }
            catch (Exception ex)
            {
                ex.Data["SQL"] = pStrSQL;
                MyGlo.PUB_Logger.Fatal(ex, "Ошибка Запроса SQL (возвращающего реальное число)");
                MyGlo.Event_Error(ex);
                goto label1;
            }
            sqlConct.Close();                                               // закрываем подключение
            return(_Value);
        }
Beispiel #8
0
        /// <summary>Выполняем запрос (без возврата значений)</summary>
        /// <param name="pStrSQL">Строка SQL кода</param>
        /// <returns>true -  успешное выполнение запроса, false - что то пошло не так</returns>
        public static bool MET_QueryNo(string pStrSQL)
        {
            int  _CountTimeout = 0;                                             // попытки достучаться до сервера (5 попыток)
            bool _Result       = false;

label1:
            try
            {
                if (sqlConct.State == ConnectionState.Closed)
                {
                    sqlConct.Open();                                        // открываем базу
                }
                SqlCommand _SqlCom = new SqlCommand(pStrSQL, sqlConct);     // создаем команду
                try
                {
                    _SqlCom.ExecuteNonQuery();                                  // выполянем запрос
                    _Result = true;
                }
                catch (SqlException ex)
                {
                    if (ex.Number == -2 && _CountTimeout++ < 5)
                    {
                        goto label1;
                    }
                    ex.Data["SQL"] = pStrSQL;
                    MyGlo.PUB_Logger.Error(ex, "Ошибка Запроса SQL (без возврата значения)");
                }
                catch (Exception ex)
                {
                    ex.Data["SQL"] = pStrSQL;
                    MyGlo.PUB_Logger.Error(ex, "Ошибка Запроса SQL (без возврата значения)");
                }
            }
            catch (Exception ex)
            {
                ex.Data["SQL"] = pStrSQL;
                MyGlo.PUB_Logger.Fatal(ex, "Ошибка Запроса SQL (без возврата значения)");
                MyGlo.Event_Error(ex);
                goto label1;
            }
            sqlConct.Close();                                               // закрываем подключение
            return(_Result);
        }
Beispiel #9
0
        /// <summary>МЕТОД Работа с изображениями</summary>
        /// <param name="pStrSQL">Строка SQL кода</param>
        /// <param name="pImage">Наименование поля картинки</param>
        /// <param name="photo">Байтовый массив изображения</param>
        public static void MET_QueryNoImage(string pStrSQL, string pImage, byte[] photo)
        {
            int _CountTimeout = 0;                                              // попытки достучаться до сервера (5 попыток)

label1:
            try
            {
                SqlCommand _SqlCom = new SqlCommand(pStrSQL, sqlConct);     // создаем команду
                _SqlCom.Parameters.Add("@Image", SqlDbType.Image, photo.Length).Value = photo;
                if (sqlConct.State == ConnectionState.Closed)
                {
                    sqlConct.Open();                                                    // открываем базу
                }
                try
                {
                    _SqlCom.ExecuteNonQuery();                                  // выполянем запрос
                }
                catch (SqlException ex)
                {
                    if (ex.Number == -2 && _CountTimeout++ < 5)
                    {
                        goto label1;
                    }
                    ex.Data["SQL"] = pStrSQL;
                    MyGlo.PUB_Logger.Error(ex, "Ошибка Запроса SQL (для работы с изображениями)");
                }
                catch (Exception ex)
                {
                    ex.Data["SQL"] = pStrSQL;
                    MyGlo.PUB_Logger.Error(ex, "Ошибка Запроса SQL (для работы с изображениями)");
                }
            }
            catch (Exception ex)
            {
                ex.Data["SQL"] = pStrSQL;
                MyGlo.PUB_Logger.Fatal(ex, "Ошибка Запроса SQL (для работы с изображениями)");
                MyGlo.Event_Error(ex);
                goto label1;
            }
            sqlConct.Close();                                               // закрываем подключение
        }