|
@@ -1,16 +1,18 @@
|
|
|
# ООП. Основы (CSV)
|
|
# ООП. Основы (CSV)
|
|
|
|
|
|
|
|
-На чемпионате **WorldSkills** часто возникает ситуация, когда нужно загрузить данные в базу программно, поэтому нужно уметь делать это быстро и просто. Подробнее мы остановимся на этом курсе "Проектирование и разработка ИС", но тренироваться использовать загрузку данных из CSV будем на лабораторных работах и в этом курсе.
|
|
|
|
|
|
|
+На чемпионате часто возникает ситуация, когда нужно загрузить данные в базу программно, поэтому нужно уметь делать это быстро и просто. Подробнее мы остановимся на этом в курсе "Проектирование и разработка ИС", но тренироваться использовать загрузку данных из CSV будем на лабораторных работах и в этом курсе.
|
|
|
|
|
|
|
|
-Файл с данными нужно положить в каталог `bin/debug` вашего проекта, либо указать полный путь к нему
|
|
|
|
|
|
|
+Файл с данными нужно положить в каталог `bin/Debug/net9.0` вашего проекта (но так как у нас используется `.gitignore`, то в этом случае для файла CSV нужно настроить исключение), либо туда, где расположен проект (а в этом случае в программе нужно указать относительный путь к файлу CSV: `../../../ваш файл.csv`)
|
|
|
|
|
|
|
|
```csv
|
|
```csv
|
|
|
Акесов,18
|
|
Акесов,18
|
|
|
Андреев,19
|
|
Андреев,19
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
+В коде ниже я не использую никаких библиотек для работы с CSV, вы можете использовать библиотеку CSVHelper, которую мы рассматривали на соответствующей лекции.
|
|
|
|
|
+
|
|
|
```cs
|
|
```cs
|
|
|
-class Peoples{
|
|
|
|
|
|
|
+class Peoples {
|
|
|
string Name;
|
|
string Name;
|
|
|
int Age;
|
|
int Age;
|
|
|
}
|
|
}
|
|
@@ -20,7 +22,7 @@ class Peoples{
|
|
|
var Peoples = new List<People>();
|
|
var Peoples = new List<People>();
|
|
|
|
|
|
|
|
// считываем данные из файла (файл лежит рядышком с .exe)
|
|
// считываем данные из файла (файл лежит рядышком с .exe)
|
|
|
-string[] data = File.ReadAllLines("ваш файл.csv");
|
|
|
|
|
|
|
+string[] data = File.ReadAllLines("./ваш файл.csv");
|
|
|
|
|
|
|
|
// проходим в цикле по считанным строкам
|
|
// проходим в цикле по считанным строкам
|
|
|
foreach (var line in data)
|
|
foreach (var line in data)
|
|
@@ -39,14 +41,13 @@ foreach (var line in data)
|
|
|
|
|
|
|
|
1. Дату в CSV желательно хранить в формате `YYYY-MM-DD` (SQL-формат). Такой формат нормально преобразуется в класс **Data** (**DataTime**) штатным конвертером. Иначе придется разбирать строку даты на составные части (функцией _split_) и создавать дату из этих частей (`new Date(year, month, day)`)
|
|
1. Дату в CSV желательно хранить в формате `YYYY-MM-DD` (SQL-формат). Такой формат нормально преобразуется в класс **Data** (**DataTime**) штатным конвертером. Иначе придется разбирать строку даты на составные части (функцией _split_) и создавать дату из этих частей (`new Date(year, month, day)`)
|
|
|
|
|
|
|
|
-2. В качестве разделителя дробной части в числах с плавающей запятой (**float**, **double**) в CSV обычно используется точка. Но конвертер использует настройки локальной среды, а для России в качестве разделителя задана запятая, поэтому конвертер не может разобрать строку с точкой и выбрасывает исключение. В этом случае можно либо заменить точки на запятые в CSV файле (но в таком случае и разделителем полей должен быть другой знак), либо в конвертер передать дополнительный параметр, явно указывающий разделитель для дробной части:
|
|
|
|
|
|
|
+1. В качестве разделителя дробной части в числах с плавающей запятой (**float**, **double**) в CSV обычно используется точка. Но конвертер использует настройки локальной среды, а для России в качестве разделителя задана запятая, поэтому конвертер не может разобрать строку с точкой и выбрасывает исключение. В этом случае можно либо заменить точки на запятые в CSV файле (но в таком случае и разделителем полей должен быть другой знак), либо в конвертер передать дополнительный параметр, явно указывающий разделитель для дробной части:
|
|
|
|
|
|
|
|
-```cs
|
|
|
|
|
-Convert.ToDouble("113.12", new NumberFormatInfo(){NumberDecimalSeparator="."});
|
|
|
|
|
-```
|
|
|
|
|
|
|
+ ```cs
|
|
|
|
|
+ Convert.ToDouble("113.12", new NumberFormatInfo(){NumberDecimalSeparator="."});
|
|
|
|
|
+ ```
|
|
|
|
|
|
|
|
-# Задача
|
|
|
|
|
|
|
+## Задание
|
|
|
|
|
|
|
|
* сформировать файл с данными в формате CSV для вашей предметной области
|
|
* сформировать файл с данными в формате CSV для вашей предметной области
|
|
|
* загрузить данные с программу из подготовленного файла
|
|
* загрузить данные с программу из подготовленного файла
|
|
|
-
|
|
|