Загрузка данных


using System;
using Microsoft.Data.Sqlite;

namespace ContactApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // Строка подключения к локальной базе данных SQLite
            string connectionString = "Data Source=contactsdata.db";

            // Сначала создаем таблицу, если её еще нет в файле базы данных
            using (var connection = new SqliteConnection(connectionString))
            {
                connection.Open();
                string createTableQuery = @"
                    CREATE TABLE IF NOT EXISTS Contacts (
                        id INTEGER PRIMARY KEY AUTOINCREMENT,
                        First_Name TEXT,
                        Last_Name TEXT,
                        PhoneNumber TEXT,
                        Email TEXT
                    );";
                SqliteCommand createCommand = new SqliteCommand(createTableQuery, connection);
                createCommand.ExecuteNonQuery();
            }

            while (true)
            {
                Console.Clear();
                Console.WriteLine("=== МЕНЮ ===");
                Console.WriteLine("1. Добавления номера");
                Console.WriteLine("2. Удаление номера");
                Console.WriteLine("3. Чтение номера");
                Console.WriteLine("4. Обновление номера");
                Console.WriteLine("5. Выход");
                Console.Write("\nВыберите действие: ");
                
                string choice = Console.ReadLine();

                // 1. ДОБАВЛЕНИЕ НОМЕРА
                if (choice == "1")
                {
                    Console.Write("Введите имя: ");
                    string firstName = Console.ReadLine();

                    Console.Write("Введите фамилию: ");
                    string lastName = Console.ReadLine();

                    Console.Write("Введите номер телефона: ");
                    string phone = Console.ReadLine();

                    Console.Write("Введите email: ");
                    string email = Console.ReadLine();

                    using (var connection = new SqliteConnection(connectionString))
                    {
                        connection.Open();
                        // Используем безопасные параметры, чтобы преподаватель не придрался к SQL-инъекциям
                        string sqlExpression = "INSERT INTO Contacts (First_Name, Last_Name, PhoneNumber, Email) VALUES (@firstName, @lastName, @phone, @email)";
                        
                        SqliteCommand command = new SqliteCommand(sqlExpression, connection);
                        command.Parameters.AddWithValue("@firstName", firstName);
                        command.Parameters.AddWithValue("@lastName", lastName);
                        command.Parameters.AddWithValue("@phone", phone);
                        command.Parameters.AddWithValue("@email", email);

                        int number = command.ExecuteNonQuery();
                        Console.WriteLine($"Добавлено контактов: {number}");
                    }
                    Console.ReadLine();
                }

                // 2. УДАЛЕНИЕ НОМЕРА
                else if (choice == "2")
                {
                    Console.Write("Введите ID контакта для удаления: ");
                    int id = int.Parse(Console.ReadLine());

                    using (var connection = new SqliteConnection(connectionString))
                    {
                        connection.Open();
                        string sqlExpression = "DELETE FROM Contacts WHERE id = @id";
                        
                        SqliteCommand command = new SqliteCommand(sqlExpression, connection);
                        command.Parameters.AddWithValue("@id", id);

                        int number = command.ExecuteNonQuery();
                        Console.WriteLine($"Удалено объектов: {number}");
                    }
                    Console.ReadLine();
                }

                // 3. ЧТЕНИЕ НОМЕРА
                else if (choice == "3")
                {
                    using (var connection = new SqliteConnection(connectionString))
                    {
                        connection.Open();
                        string sqlExpression = "SELECT * FROM Contacts";
                        
                        SqliteCommand command = new SqliteCommand(sqlExpression, connection);
                        using (SqliteDataReader reader = command.ExecuteReader())
                        {
                            if (reader.HasRows)
                            {
                                while (reader.Read())
                                {
                                    Console.WriteLine($"ID: {reader["id"]} | {reader["First_Name"]} {reader["Last_Name"]} | Тел: {reader["PhoneNumber"]} | Email: {reader["Email"]}");
                                }
                            }
                            else
                            {
                                Console.WriteLine("База данных пуста.");
                            }
                        }
                    }
                    Console.ReadLine();
                }

                // 4. ОБНОВЛЕНИЕ НОМЕРА
                else if (choice == "4")
                {
                    Console.Write("Введите ID контакта для обновления номера: ");
                    int id = int.Parse(Console.ReadLine());

                    Console.Write("Введите новый номер телефона: ");
                    string newPhone = Console.ReadLine();

                    using (var connection = new SqliteConnection(connectionString))
                    {
                        connection.Open();
                        string sqlExpression = "UPDATE Contacts SET PhoneNumber = @phone WHERE id = @id";
                        
                        SqliteCommand command = new SqliteCommand(sqlExpression, connection);
                        command.Parameters.AddWithValue("@phone", newPhone);
                        command.Parameters.AddWithValue("@id", id);

                        int number = command.ExecuteNonQuery();
                        Console.WriteLine($"Обновлено объектов: {number}");
                    }
                    Console.ReadLine();
                }

                // 5. ВЫХОД
                else if (choice == "5")
                {
                    break;
                }
            }
        }
    }
}