/// <summary> /// Сформировать sql файл с запросами. /// </summary> public void LoadIntoFile(string path) { double res = 0.0; int koksCol = ColumnKOKS.Rows.Count; // Число столбцов в таблице KOKS. string startReqLine = GetColumnsName(); // Получаем начальную строку для вставки данных. string valuesReqLine = String.Empty; // Строка для вставки с данными из Excel. string totalRequest = ""; // Общая строка запроса. //List<string> sqlRequests = new List<string>(); using (StreamWriter streamWriter = new StreamWriter(path, true, Encoding.UTF8)) { for (int i = 0; i < RowsCount; i++) // Должно быть RowsCount. { valuesReqLine = ""; for (int j = 1; j < koksCol; j++) { if (KoksInExcel.ContainsKey(ColumnKOKS.Rows[j][0].ToString())) { int index = KoksInExcel[ColumnKOKS.Rows[j][0].ToString()]; valuesReqLine += GetValueFromData(dataTable.Rows[i][index].ToString()) + ","; } else { valuesReqLine += "NULL,"; } } valuesReqLine = valuesReqLine.TrimEnd(','); valuesReqLine += ")"; totalRequest = startReqLine + valuesReqLine; try { //sqlRequests.Add(totalRequest); streamWriter.WriteLine(totalRequest); } catch (Exception ex) { MessageBox.Show("Ошибка при добавлении экземпляра:\n" + ex.Message, "Ошибка. Row " + i.ToString(), MessageBoxButton.OK, MessageBoxImage.Error); WriteMessage("Ошибка при добавлении экземпляра (строка №" + i.ToString() + "):\n" + ex.Message + "\n" + totalRequest); break; } finally { res += ProgressStep; if (SetProgress != null) { SetProgress.Invoke(res); } } } } if (SetProgress != null) { SetProgress.Invoke(0); } WriteMessage("Sql скрипт сформирован."); //using (SqlConnection connection = new SqlConnection(Connections.ConnectionStrings.SQLConnectionStirng)) //{ // connection.Open(); // SqlCommand command = connection.CreateCommand(); // for (int i = 0; i < RowsCount; i++) // Должно быть RowsCount. // { // valuesReqLine = ""; // for (int j = 1; j < koksCol; j++) // { // if (KoksInExcel.ContainsKey(ColumnKOKS.Rows[j][0].ToString())) // { // int index = KoksInExcel[ColumnKOKS.Rows[j][0].ToString()]; // valuesReqLine += GetValueFromData(dataTable.Rows[i][index].ToString()) + ","; // } // else // { // valuesReqLine += "NULL,"; // } // } // valuesReqLine = valuesReqLine.TrimEnd(','); // valuesReqLine += ")"; // totalRequest = startReqLine + valuesReqLine; // try // { // //command.CommandText = totalRequest; // sqlRequests.Add(totalRequest); // } // catch (Exception ex) // { // MessageBox.Show("Ошибка при добавлении экземпляра:\n" + ex.Message, "Ошибка. Row " + i.ToString(), MessageBoxButton.OK, MessageBoxImage.Error); // WriteMessage("Ошибка при добавлении экземпляра (строка №" + i.ToString() + "):\n" + ex.Message + "\n" + totalRequest); // break; // } // finally // { // res += ProgressStep; // if (SetProgress != null) { SetProgress.Invoke(res); } // } // } //} //if (SetProgress != null) { SetProgress.Invoke(0); } //WriteMessage("Данные из Excel-шаблона загружены в таблицу КОКС."); }
/// <summary> /// Загрузить данные в табилцу Кокс. /// </summary> public void LoadIntoKoks() { double res = 0.0; int koksCol = ColumnKOKS.Rows.Count; // Число столбцов в таблице KOKS. string startReqLine = GetColumnsName(); // Получаем начальную строку для вставки данных. string valuesReqLine = String.Empty; // Строка для вставки с данными из Excel. string totalRequest = ""; // Общая строка запроса. using (SqlConnection connection = new SqlConnection(Connections.ConnectionStrings.SQLConnectionStirng)) { connection.Open(); //SqlTransaction transaction = connection.BeginTransaction(); SqlCommand command = connection.CreateCommand(); //command.Transaction = transaction; for (int i = 0; i < RowsCount; i++) // Должно быть RowsCount. { valuesReqLine = ""; for (int j = 1; j < koksCol; j++) { if (KoksInExcel.ContainsKey(ColumnKOKS.Rows[j][0].ToString())) { int index = KoksInExcel[ColumnKOKS.Rows[j][0].ToString()]; valuesReqLine += GetValueFromData(dataTable.Rows[i][index].ToString()) + ","; } else { valuesReqLine += "NULL,"; } } valuesReqLine = valuesReqLine.TrimEnd(','); valuesReqLine += ")"; /*foreach (KeyValuePair<string,int> col in KoksInExcel) * { * string val = dataTable.Rows[i][col.Value].ToString(); * valuesReqLine += GetValueFromData(val) + ","; * } * * valuesReqLine = valuesReqLine.TrimEnd(',') + ")"; * * for (int j = 0; j < koksCol; j++) * { * * * string val = dataTable.Rows[i][ColumnKOKS.Rows[j][0].ToString()].ToString(); * if (j < koksCol - 1) * { * valuesReqLine += GetValueFromData(val) + ","; * } * else * { * valuesReqLine += GetValueFromData(val) + ")"; * } * }*/ totalRequest = startReqLine + valuesReqLine; //if (i == 6858) //{ // MessageBox.Show(totalRequest); //} try { command.CommandText = totalRequest; command.ExecuteNonQuery(); //transaction.Commit(); // Подтверждаем транзакцию. } catch (Exception ex) { //transaction.Rollback(); MessageBox.Show("Ошибка при добавлении экземпляра:\n" + ex.Message, "Ошибка. Row " + i.ToString(), MessageBoxButton.OK, MessageBoxImage.Error); WriteMessage("Ошибка при добавлении экземпляра (строка №" + i.ToString() + "):\n" + ex.Message + "\n" + totalRequest); break; } finally { res += ProgressStep; if (SetProgress != null) { SetProgress.Invoke(res); } } } } //MessageBox.Show("Загружено"); if (SetProgress != null) { SetProgress.Invoke(0); } WriteMessage("Данные из Excel-шаблона загружены в таблицу КОКС."); }