public void WriteToDatabase(string SqlServer, string Database, DataXmlSql Data) //записываем из класса в БД { try { string connectionString = $@"Data Source=.\{SqlServer};Initial Catalog={Database};Integrated Security=True"; // строка подключения к базе using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); SqlCommand command = new SqlCommand(Data.sqlStoredProcedure, connection); // указываем, что команда представляет хранимую процедуру command.CommandType = CommandType.StoredProcedure; // параметр для ввода имени SqlParameter tableParam = new SqlParameter { ParameterName = "@table", Value = Data.table }; // добавляем параметр command.Parameters.Add(tableParam); var res = command.ExecuteNonQuery(); result = $"WriteToDatabase: [{Data.name}] успешно записан в БД."; logger.Info(result); resultColor = Brushes.Green; } } catch (Exception ex) { result = $"WriteToDatabase: {ex.Message}"; resultColor = Brushes.Red; logger.Error(result); } }
public void ProcessingErrorCodes() { try { DataManager dataManager = new DataManager(); XmlDocument xmlDoc = dataManager.RequestToServer(certificate, Properties.Settings.Default.ErrorCodesUri); if (xmlDoc != null) { DataXmlSql Data = dataManager.ParseXml(xmlDoc, "ErrorCodes"); if (Data != null) { dataManager.WriteToDatabase(Properties.Settings.Default.SqlServer, Properties.Settings.Default.Database, Data); Dispatcher.Invoke(delegate { _dataGrid.ItemsSource = dataManager.GetDataFromDatabase(Properties.Settings.Default.SqlServer, Properties.Settings.Default.Database, Data.TableName); }); } } Dispatcher.Invoke(delegate { _textBlock.Foreground = dataManager.resultColor; }); Dispatcher.Invoke(delegate { _textBlock.Text = dataManager.result; }); } catch (Exception ex) { Dispatcher.Invoke(delegate { _textBlock.Foreground = Brushes.Red; }); Dispatcher.Invoke(delegate { _textBlock.Text = $"ProcessingErrorCodes: {ex.Message}"; }); logger.Error($"ProcessingErrorCodes: {ex.Message}"); } }
public DataXmlSql ParseXml(XmlDocument xmlDoc, string formatXml) //парсим XML ответ и записываем в класс { try { DataXmlSql Data = new DataXmlSql(); //обьект класса, в котором будет храниться информация XML ответа switch (formatXml) { case "ErrorCodes": //Если парсим ErrorCode Data.ErrorCodesValues(); //выставляем все необходимые настройки и задаёт вспомогательные переменные для разбора Errorcodes break; case "Categories": //Если парсим Categories Data.CategoriesValues(); //выставляем все необходимые настройки и задаёт вспомогательные переменные для разбора Categories break; default: throw new Exception("Передан неверный формата разбора XML"); } // получим корневой элемент XmlElement xRoot = xmlDoc.DocumentElement; int m = Data.xmlAttributes.Length; //количество атрибутов в одном узле // обход всех узлов в корневом элементе foreach (XmlNode xnode in xRoot) { if (xnode.Attributes.Count > 0) // если есть атрибуты в узле { DataRow row = Data.table.NewRow(); for (int j = 0; j < m; j++) // пройдёмся по всем атрибутам { XmlNode attribute = xnode.Attributes.GetNamedItem(Data.xmlAttributes[j]); // получаем атрибут // получаем значение атрибута if (attribute != null) { row[Data.xmlAttributes[j]] = attribute.Value; } } Data.table.Rows.Add(row); } } logger.Info($"ParseXml: XML ответ [{Data.name}] успешно спарсили"); return(Data); } catch (Exception ex) { result = $"ParseXml: {ex.Message}"; logger.Error(result); resultColor = Brushes.Red; return(null); } }