예제 #1
0
        /*
         * public ArrayList f()
         * {
         *  ArrayList recordsInExcelFileAudTypes = new ArrayList();
         *  recordsInExcelFileAudTypes.Add(1);
         *  recordsInExcelFileAudTypes.Add(1);
         *  recordsInExcelFileAudTypes.Add(1);
         *  recordsInExcelFileAudTypes.Add(1);
         *  recordsInExcelFileAudTypes.Add(1);
         *  return recordsInExcelFileAudTypes;
         * }*/

        // завантаження до бази даних
        public void load()
        {
            switch (FileName)
            {
            case "TypesOfAuditories.xlsx":
                ArrayList recordsInExcelFileAudTypes                   = new ArrayList();
                ArrayList missingValuesInExcelFileAudTypes             = new ArrayList();
                Dictionary <int, string> duplicatesInExcelFileAudTypes = new Dictionary <int, string>();
                columnForLoading = 'A';

                try
                {
                    open();
                    for (int row = 1, column = getColumnNumber(columnForLoading); row <= rowsCount; row++)
                    {
                        //Console.WriteLine(row);
                        //cellContent = ((range.Cells[row, column] as Excel.Range).Value2).ToString();
                        var cellContent = ((Excel.Range)worksheet.Cells[row, column]).Text.ToString();
                        //Console.WriteLine("cellContent: " + cellContent);

                        // перевірка наявності дублікатів
                        if (recordsInExcelFileAudTypes.Contains(cellContent) == true)
                        {
                            duplicatesInExcelFileAudTypes.Add(row, cellContent);
                        }
                        else
                        {
                            recordsInExcelFileAudTypes.Add(cellContent);
                        }
                        // перевірка наявності порожніх чарунок
                        if (string.IsNullOrEmpty(cellContent))
                        {
                            missingValuesInExcelFileAudTypes.Add(row);
                        }
                    }
                    close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Помилка при зчитуванні даних з файлу " + FileName + " " + ex.Message);
                }

                if (missingValuesInExcelFileAudTypes.Count != 0)
                {
                    Console.Write("В файлі " + FileName + " є пропуски в рядках: ");
                    foreach (int row in missingValuesInExcelFileAudTypes)
                    {
                        Console.Write(row + "\t");
                    }
                    Console.WriteLine();
                }

                if (duplicatesInExcelFileAudTypes.Count != 0)
                {
                    Console.WriteLine("Є дублікати:");
                    foreach (KeyValuePair <int, string> duplicate in duplicatesInExcelFileAudTypes)
                    {
                        Console.WriteLine("В рядку номер " + duplicate.Key + ": " + duplicate.Value);
                    }
                }

                if (missingValuesInExcelFileAudTypes.Count == 0 && duplicatesInExcelFileAudTypes.Count == 0)
                {
                    try
                    {
                        ArrayList       AudTypesInDB = new ArrayList();
                        MySqlConnection connection   = DBUtils.GetDBConnection();
                        MySqlCommand    mySqlCommand;
                        MySqlDataReader dataReader;



                        // Отримання даних з БД та порівняння з даними з Excel-файлу
                        // Якщо вони співпадають - немає сенсу для перезапису, інакше дані в БД перезаписуються

                        const string selectAuditoryTypes = "SELECT auditory_type_name FROM auditory_type";
                        connection.Open();
                        mySqlCommand = new MySqlCommand(selectAuditoryTypes, connection);
                        dataReader   = mySqlCommand.ExecuteReader();

                        while (dataReader.Read())
                        {
                            AudTypesInDB.Add(dataReader[0].ToString());
                        }

                        connection.Close();

                        bool noSenseToReload = true;
                        foreach (string record in recordsInExcelFileAudTypes)
                        {
                            if (!AudTypesInDB.Contains(record))
                            {
                                noSenseToReload = false;
                                break;
                            }
                        }

/*
 *                          Console.WriteLine("Excel:");
 *                          foreach (string record in recordsInExcelFileAudTypes)
 *                          {
 *                              Console.WriteLine(record);
 *                          }
 *                          Console.WriteLine();
 *                          Console.WriteLine("DB:");
 *                          foreach (string record in AudTypesInDB)
 *                          {
 *                              Console.WriteLine(record);
 *                          }
 */


                        if (noSenseToReload == false)
                        {
                            //Console.WriteLine("Є що змінювати");
                            try
                            {
                                /* // очищення таблиці в БД
                                 * connection.Open();
                                 * const string truncateAuditoryTypes = "TRUNCATE TABLE auditory_type";
                                 * mySqlCommand = new MySqlCommand(truncateAuditoryTypes, connection);
                                 * mySqlCommand.ExecuteNonQuery();
                                 * //Console.WriteLine("Очищено");
                                 * connection.Close();
                                 */

                                // перезапис таблиці в БД
                                const string insertAuditoryTypes = "INSERT INTO auditory_type (auditory_type_name) VALUES (@TYPE)";

                                connection.Open();
                                foreach (string record in recordsInExcelFileAudTypes)
                                {
                                    mySqlCommand = new MySqlCommand(insertAuditoryTypes, connection);
                                    mySqlCommand.Parameters.AddWithValue("@TYPE", record);
                                    mySqlCommand.ExecuteNonQuery();
                                    //Console.WriteLine(record);
                                }

                                connection.Close();
                            }
                            catch
                            {
                                Console.WriteLine("Не вдалося виконати перезапис в базі даних, оскільки є залежність між даними!");
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("Помилка при завантаженні даних з файлу " + FileName + "\n" + ex.Message);
                    }
                }
                break;

            case "Disciplines.xlsx":

                ArrayList recordsInExcelFileDisciplines                   = new ArrayList();
                ArrayList missingValuesInExcelFileDisciplines             = new ArrayList();
                Dictionary <int, string> duplicatesInExcelFileDisciplines = new Dictionary <int, string>();
                columnForLoading = 'G';
                try
                {
                    open();
                    for (int row = 2, column = getColumnNumber(columnForLoading); row <= rowsCount; row++)
                    {
                        //Console.WriteLine(row);
                        //cellContent = ((range.Cells[row, column] as Excel.Range).Value2).ToString();
                        cellContent = ((Excel.Range)worksheet.Cells[row, column]).Text.ToString();
                        //Console.WriteLine("cellContent: " + cellContent);

                        // перевірка наявності дублікатів
                        if (recordsInExcelFileDisciplines.Contains(cellContent) == true)
                        {
                            duplicatesInExcelFileDisciplines.Add(row, cellContent);
                        }
                        else
                        {
                            recordsInExcelFileDisciplines.Add(cellContent);
                        }
                        // перевірка наявності порожніх чарунок
                        if (string.IsNullOrEmpty(cellContent))
                        {
                            missingValuesInExcelFileDisciplines.Add(row);
                        }
                    }
                    close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Помилка при зчитуванні даних з файлу " + FileName + " " + ex.Message);
                }

                if (missingValuesInExcelFileDisciplines.Count != 0)
                {
                    Console.Write("В файлі " + FileName + " є пропуски в рядках: ");
                    foreach (int row in missingValuesInExcelFileDisciplines)
                    {
                        Console.Write(row + "\t");
                    }
                    Console.WriteLine();
                }

                if (duplicatesInExcelFileDisciplines.Count != 0)
                {
                    Console.WriteLine("Є дублікати:");
                    foreach (KeyValuePair <int, string> duplicate in duplicatesInExcelFileDisciplines)
                    {
                        Console.WriteLine("В рядку номер " + duplicate.Key + ": " + duplicate.Value);
                    }
                }

                //if (duplicatesInExcelFileDisciplines.Count == 0 && missingValuesInExcelFileDisciplines.Count == 0)
                //{
                try
                {
                    ArrayList       DisciplinesInDB = new ArrayList();
                    MySqlConnection connection      = DBUtils.GetDBConnection();
                    MySqlCommand    mySqlCommand;
                    MySqlDataReader dataReader;

                    // Отримання даних з БД та порівняння з даними з Excel-файлу
                    // Якщо вони співпадають - немає сенсу для перезапису, інакше дані в БД перезаписуються

                    const string selectDisciplines = "SELECT full_name FROM discipline";
                    connection.Open();
                    mySqlCommand = new MySqlCommand(selectDisciplines, connection);
                    dataReader   = mySqlCommand.ExecuteReader();

                    while (dataReader.Read())
                    {
                        DisciplinesInDB.Add(dataReader[0].ToString());
                    }
                    connection.Close();

                    bool noSenseToReload = true;
                    foreach (string record in recordsInExcelFileDisciplines)
                    {
                        if (!DisciplinesInDB.Contains(record))
                        {
                            noSenseToReload = false;
                            break;
                        }
                    }

                    if (noSenseToReload == false)
                    {
                        //Console.WriteLine("Є що змінювати");
                        try
                        {
                            /* // очищення таблиці в БД
                             * connection.Open();
                             * const string truncateDisciplines = "TRUNCATE TABLE discipline";
                             * mySqlCommand = new MySqlCommand(truncateDisciplines, connection);
                             * mySqlCommand.ExecuteNonQuery();
                             * //Console.WriteLine("Очищено");
                             * connection.Close();
                             */

                            // перезапис таблиці в БД
                            const string insertDisciplines = "INSERT INTO discipline (full_name) VALUES (@FULL_NAME)";

                            connection.Open();
                            foreach (string record in recordsInExcelFileDisciplines)
                            {
                                mySqlCommand = new MySqlCommand(insertDisciplines, connection);
                                mySqlCommand.Parameters.AddWithValue("@FULL_NAME", record);
                                mySqlCommand.ExecuteNonQuery();
                                //Console.WriteLine(record);
                            }

                            connection.Close();
                        }
                        catch
                        {
                            Console.WriteLine("Не вдалося виконати перезапис в базі даних, оскільки є залежність між даними!");
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Помилка при завантаженні даних з файлу " + FileName + "\n" + ex.Message);
                }
                //}

                break;

            case "Faculties.xlsx":
                ArrayList namesInExcelFileFaculties = new ArrayList();
                ArrayList codesInExcelFileFaculties = new ArrayList();

                ArrayList missingValuesOfNamesInExcelFileFaculties = new ArrayList();
                ArrayList missingValuesOfCodesInExcelFileFaculties = new ArrayList();

                Dictionary <int, string> duplicatesOfNamesInExcelFileFaculties = new Dictionary <int, string>();
                Dictionary <int, string> duplicatesOfCodesInExcelFileFaculties = new Dictionary <int, string>();

                char columnForLoadingCode = 'D';
                char columnForLoadingName = 'B';

                try
                {
                    open();
                    for (int row = 2, column = getColumnNumber(columnForLoadingName); row <= rowsCount; row++)
                    {
                        //Console.WriteLine(row);
                        //cellContent = ((range.Cells[row, column] as Excel.Range).Value2).ToString();
                        cellContent = ((Excel.Range)worksheet.Cells[row, column]).Text.ToString();
                        //Console.WriteLine("cellContent: " + cellContent);

                        // перевірка наявності дублікатів
                        if (namesInExcelFileFaculties.Contains(cellContent) == true)
                        {
                            duplicatesOfNamesInExcelFileFaculties.Add(row, cellContent);
                        }
                        else
                        {
                            namesInExcelFileFaculties.Add(cellContent);
                        }
                        // перевірка наявності порожніх чарунок
                        if (string.IsNullOrEmpty(cellContent))
                        {
                            missingValuesOfNamesInExcelFileFaculties.Add(row);
                        }
                    }

                    for (int row = 2, column = getColumnNumber(columnForLoadingCode); row <= rowsCount; row++)
                    {
                        //Console.WriteLine(row);
                        //cellContent = ((range.Cells[row, column] as Excel.Range).Value2).ToString();
                        cellContent = ((Excel.Range)worksheet.Cells[row, column]).Text.ToString();
                        //Console.WriteLine("cellContent: " + cellContent);

                        // перевірка наявності дублікатів
                        if (codesInExcelFileFaculties.Contains(cellContent) == true)
                        {
                            duplicatesOfCodesInExcelFileFaculties.Add(row, cellContent);
                        }
                        else
                        {
                            codesInExcelFileFaculties.Add(cellContent);
                        }
                        // перевірка наявності порожніх чарунок
                        if (string.IsNullOrEmpty(cellContent))
                        {
                            missingValuesOfCodesInExcelFileFaculties.Add(row);
                        }
                    }
                    close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Помилка при зчитуванні даних з файлу " + FileName + " " + ex.Message);
                }


                if (missingValuesOfNamesInExcelFileFaculties.Count != 0)
                {
                    Console.Write("В файлі " + FileName + " пропущені назви факультетів в рядках: ");
                    foreach (int row in missingValuesOfNamesInExcelFileFaculties)
                    {
                        Console.Write(row + "\t");
                    }
                    Console.WriteLine();
                }

                if (missingValuesOfCodesInExcelFileFaculties.Count != 0)
                {
                    Console.Write("В файлі " + FileName + " пропущені коди факультетів в рядках: ");
                    foreach (int row in missingValuesOfCodesInExcelFileFaculties)
                    {
                        Console.Write(row + "\t");
                    }
                    Console.WriteLine();
                }

                if (duplicatesOfNamesInExcelFileFaculties.Count != 0)
                {
                    Console.WriteLine("Є дублікати назв факультетів:");
                    foreach (KeyValuePair <int, string> duplicate in duplicatesOfNamesInExcelFileFaculties)
                    {
                        Console.WriteLine("В рядку номер " + duplicate.Key + ": " + duplicate.Value);
                    }
                }

                if (duplicatesOfCodesInExcelFileFaculties.Count != 0)
                {
                    Console.WriteLine("Є дублікати кодів факультетів:");
                    foreach (KeyValuePair <int, string> duplicate in duplicatesOfCodesInExcelFileFaculties)
                    {
                        Console.WriteLine("В рядку номер " + duplicate.Key + ": " + duplicate.Value);
                    }
                }

                //if (duplicatesOfNamesInExcelFileFaculties.Count == 0 && duplicatesOfCodesInExcelFileFaculties.Count == 0
                //&& missingValuesOfCodesInExcelFileFaculties.Count == 0 && missingValuesOfNamesInExcelFileFaculties.Count == 0)
                //{
                try
                {
                    ArrayList facultyNamesInDB = new ArrayList();
                    ArrayList facultyCodesInDB = new ArrayList();

                    MySqlConnection connection = DBUtils.GetDBConnection();
                    MySqlCommand    mySqlCommand;
                    MySqlDataReader dataReader;

                    // Отримання даних з БД та порівняння з даними з Excel-файлу
                    // Якщо вони співпадають - немає сенсу для перезапису, інакше дані в БД перезаписуються

                    const string selectFaculties = "SELECT full_name, faculty_code FROM faculty";
                    connection.Open();
                    mySqlCommand = new MySqlCommand(selectFaculties, connection);
                    dataReader   = mySqlCommand.ExecuteReader();

                    while (dataReader.Read())
                    {
                        //dataReader[0].ToString() - full_name
                        //dataReader[1].ToString() - faculty_code

                        facultyNamesInDB.Add(dataReader[0].ToString());
                        facultyCodesInDB.Add(dataReader[1].ToString());
                    }
                    connection.Close();


                    bool noSenseToReload = true;

                    foreach (string name in namesInExcelFileFaculties)
                    {
                        if (!facultyNamesInDB.Contains(name))
                        {
                            noSenseToReload = false;
                            break;
                        }
                    }

                    if (noSenseToReload)
                    {
                        foreach (string code in codesInExcelFileFaculties)
                        {
                            if (!facultyCodesInDB.Contains(code))
                            {
                                noSenseToReload = false;
                                break;
                            }
                        }
                    }

                    if (noSenseToReload == false)
                    {
                        Console.WriteLine("Є що змінювати");
                        try
                        {
                            /* // очищення таблиці в БД
                             * connection.Open();
                             * const string truncateFaculties = "TRUNCATE TABLE faculty";
                             * mySqlCommand = new MySqlCommand(truncateFaculties, connection);
                             * mySqlCommand.ExecuteNonQuery();
                             * //Console.WriteLine("Очищено");
                             * connection.Close();
                             */

                            // перезапис таблиці в БД
                            const string insertFaculties = "INSERT INTO faculty (full_name, faculty_code) VALUES (@FULL_NAME, @CODE)";

                            connection.Open();
                            for (int i = 0; i < namesInExcelFileFaculties.Count; i++)
                            {
                                mySqlCommand = new MySqlCommand(insertFaculties, connection);

                                mySqlCommand.Parameters.AddWithValue("@FULL_NAME", namesInExcelFileFaculties[i]);
                                mySqlCommand.Parameters.AddWithValue("@CODE", codesInExcelFileFaculties[i]);


                                mySqlCommand.ExecuteNonQuery();
                                //Console.WriteLine("code: " + codesInExcelFileFaculties[i] + "; name: " + namesInExcelFileFaculties[i]);
                            }

                            connection.Close();
                        }
                        catch
                        {
                            Console.WriteLine("Не вдалося виконати перезапис в базі даних, оскільки є залежність між даними!");
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Помилка при завантаженні даних з файлу " + FileName + "\n" + ex.Message);
                }
                //}

                break;

            case "Departments.xlsx":
                break;

            case "Teachers.xlsx":
                break;

            case "Auditories.xls":
                break;

            case "StudyGroups.xlsx":
                break;

            default:
                throw new Exception("Невідомий файл");
            }
        }