Advertisement
constk

Lab6 Task2 For Dudko

Mar 14th, 2023
898
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.77 KB | None | 0 0
  1. using System;
  2. using System.Windows.Forms;
  3. using System.Data.SqlClient;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7.  
  8. namespace Lab62
  9. {
  10.     public partial class Form2 : Form
  11.     {
  12.         public string ConnectionString { get; set; } = "Data Source=DESKTOP-83FUTMU\\SQLEXPRESS;Initial Catalog=Автосервис;Persist Security Info=True;User ID=sa;Password=2007;Pooling=False";
  13.  
  14.         public class Car
  15.         {
  16.             /// <summary>Рег знак</summary>
  17.             public string PlateNumber { get; set; }
  18.             /// <summary>Марка</summary>
  19.             public string Mark { get; set; }
  20.             /// <summary>Цвет</summary>
  21.             public string Color { get; set; }
  22.             /// <summary>Год выпуска</summary>
  23.             public string YearOfRelease { get; set; }
  24.         }
  25.  
  26.         public Form2()
  27.         {
  28.             InitializeComponent();
  29.         }
  30.  
  31.         /// <summary>Нажата кнопка "Обновить"</summary>
  32.         private void button1_Click(object sender, EventArgs e)
  33.         {
  34.             SqlConnection con = new SqlConnection(ConnectionString);
  35.             con.Open();
  36.             SqlCommand cmd = con.CreateCommand();
  37.             cmd.CommandText = "SELECT * FROM Автомобили";
  38.             dataGridView1.Rows.Clear();
  39.             SqlDataReader rdr = cmd.ExecuteReader();
  40.             while (rdr.Read())
  41.                 dataGridView1.Rows.Add(rdr["РегЗнак"].ToString(),
  42.                                     rdr["Марка"].ToString(),
  43.                                     rdr["Цвет"].ToString(),
  44.                                     rdr["ГодВыпуска"].ToString());
  45.             rdr.Close();
  46.             con.Close();
  47.  
  48.         }
  49.  
  50.         /// <summary>Нажата кнопка "Сохранить"</summary>
  51.         private void button2_Click(object sender, EventArgs e)
  52.         {
  53.             var carOrms = GetCarsFromDb();
  54.             var carsFromGrid = GetCarsFromGrid();
  55.  
  56.             DeleteAllCars();
  57.             InsertCars(carsFromGrid);
  58.         }
  59.  
  60.         public IList<Car> GetCarsFromDb()
  61.         {
  62.             var cars = new List<Car>();
  63.             using (var connection = new SqlConnection(ConnectionString))
  64.             {
  65.                 connection.Open();
  66.                 SqlCommand getCarsCommand = connection.CreateCommand();
  67.                 getCarsCommand.CommandText = "SELECT * FROM Автомобили";
  68.                 SqlDataReader reader = getCarsCommand.ExecuteReader();
  69.                 while (reader.Read())
  70.                 {
  71.                     var carOrm = new Car
  72.                     {
  73.                         PlateNumber = reader["РегЗнак"].ToString(),
  74.                         Mark = reader["Марка"].ToString(),
  75.                         Color = reader["Цвет"].ToString(),
  76.                         YearOfRelease = reader["ГодВыпуска"].ToString()
  77.                     };
  78.  
  79.                     cars.Add(carOrm);
  80.                 }
  81.             }
  82.  
  83.             return cars;
  84.         }
  85.  
  86.         public IList<Car> GetCarsFromGrid()
  87.         {
  88.             var cars = new List<Car>();
  89.             foreach (DataGridViewRow row in this.dataGridView1.Rows)
  90.             {
  91.                 var car = new Car
  92.                 {
  93.                     PlateNumber = row.Cells[0].Value?.ToString(),
  94.                     Mark = row.Cells[1].Value?.ToString(),
  95.                     Color = row.Cells[2].Value?.ToString(),
  96.                     YearOfRelease = row.Cells[3].Value?.ToString()
  97.                 };
  98.  
  99.                 if (car.PlateNumber != null)
  100.                     cars.Add(car);
  101.             }
  102.  
  103.             return cars;
  104.         }
  105.  
  106.         public void DeleteAllCars()
  107.         {
  108.             using (var connection = new SqlConnection(ConnectionString))
  109.             {
  110.                 connection.Open();
  111.                 SqlCommand insertCarsCommand = connection.CreateCommand();
  112.                 insertCarsCommand.CommandText = "DELETE * FROM Автомобили";
  113.                 insertCarsCommand.ExecuteNonQuery();
  114.             }
  115.         }
  116.  
  117.         public void InsertCars(IEnumerable<Car> cars)
  118.         {
  119.             if (cars == null || !cars.Any())
  120.                 return;
  121.  
  122.             using (var connection = new SqlConnection(ConnectionString))
  123.             {
  124.                 connection.Open();
  125.                 SqlCommand insertCarsCommand = connection.CreateCommand();
  126.                 insertCarsCommand.CommandText = GetTextOfInsertCarsCommand(cars);
  127.                 insertCarsCommand.ExecuteNonQuery();
  128.             }
  129.         }
  130.  
  131.         public string GetTextOfInsertCarsCommand(IEnumerable<Car> cars)
  132.         {
  133.             var commandText = new StringBuilder("INSERT INTO Автомобили VALUES ");
  134.  
  135.             foreach (var car in cars)
  136.                 commandText
  137.                     .Append("(")
  138.                     .Append(StringForInsert(car.PlateNumber))
  139.                     .Append(", ")
  140.                     .Append(StringForInsert(car.Mark))
  141.                     .Append(", ")
  142.                     .Append(StringForInsert(car.Color))
  143.                     .Append(", ")
  144.                     .Append(IntForInsert(car.YearOfRelease))
  145.                     .Append("),");
  146.             commandText.Length--; // Удаляем последнюю запятую
  147.  
  148.             return commandText.ToString();
  149.         }
  150.  
  151.         public string StringForInsert(string str)
  152.         {
  153.             if (string.IsNullOrEmpty(str))
  154.                 return "NULL";
  155.  
  156.             return "'" + str.Trim() + "'";
  157.         }
  158.  
  159.         public string IntForInsert(string num)
  160.         {
  161.             if (string.IsNullOrEmpty(num))
  162.                 return "NULL";
  163.  
  164.             return num.Trim();
  165.         }
  166.     }
  167. }
  168.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement