Корректировка записей в базе данных

Перейдем на вкладку UPDATE. Выполним двойной щелчок по кнопке «Изменить». Здесь нужно проверить наличие идентификатора и заполнены ли поля «Имя продукта» и «Цена». Также как и на вкладке UPDATE, добавим Label на вкладку UPDATE.

Корректировка записей в базе данных - student2.ru

Выполним проверку, не пусты ли поля в обработчике события кнопки «Изменить»:

if (label8.Visible) label8.Visible = false;

if (!string.IsNullOrEmpty(textBox4.Text) && !string.IsNullOrWhiteSpace(textBox4.Text) &&

!string.IsNullOrEmpty(textBox3.Text) && !string.IsNullOrWhiteSpace(textBox3.Text) &&

!string.IsNullOrEmpty(textBox5.Text) && !string.IsNullOrWhiteSpace(textBox5.Text))

{

}

else

{

label8.Visible = true;

label8.Text = "Заполните все поля!";

}

Корректировка записей в базе данных - student2.ru

Напишем команду для обновления данных:

SqlCommand command = new SqlCommand("UPDATE [Products] SET [Name] = @Name, [Price] = @Price WHERE [Id] = @Id", sqlConnection);

Свяжем ее с полями TextBox:

command.Parameters.AddWithValue("Id", textBox5.Text);

command.Parameters.AddWithValue("Name", textBox4.Text);

command.Parameters.AddWithValue("Price", textBox3.Text);

И выполним:

command.ExecuteNonQuery();

Корректировка записей в базе данных - student2.ru

Запустим приложение, перейдем на вкладку UPDATE, и изменим данные по идентификатору 3. В поле «Имя» запишем банан, а в поле «Цена» - 30.

Корректировка записей в базе данных - student2.ru

Нажмем кнопку «Изменить» и затем обновим вывод на вкладке SELECT:

Корректировка записей в базе данных - student2.ru

Видим, что вместо печенья в строку три занесен банан.

Удаление записей из базы данных

Также как и в предыдущих примерах, добавим Label на вкладку DELETE, и присвоим свойству Visible значение false.

Вызовем обработчик события кнопки «Удалить» и пропишем туда проверку заполнения полей:

if (label9.Visible) label8.Visible = false;

if (!string.IsNullOrEmpty(textBox6.Text) && !string.IsNullOrWhiteSpace(textBox6.Text))

{

}

else

{

label9.Visible = true;

label9.Text = "Заполните поле 'Id'!";

}

Корректировка записей в базе данных - student2.ru

Теперь напишем новую команду и выполним ее:

SqlCommand command = new SqlCommand("DELETE FROM [Products]" +

" WHERE [Id] = @Id", sqlConnection);

command.Parameters.AddWithValue("Id", textBox6.Text);

command.ExecuteNonQuery();

Корректировка записей в базе данных - student2.ru

Запустим программу и удалим запись в таблице продуктов под номером 3:

Корректировка записей в базе данных - student2.ru

После нажатия на кнопку «Удалить», обновим список на вкладке SELECT, и увидим, что запись под номером 3 удалена.

Корректировка записей в базе данных - student2.ru

Установка ReportViewer

Формирование отчетов в Visual Studio может выполняться разными способами, в том числе и без специализированных элементов управления. Рассмотрим элемент управления ReportViewer. Он используется для размещения детализированных отчетов в проектах приложений Windows.

Начнем с установки ReportViewer в проект. Выберем вкладку «Сервис» в панели управления, и из выпадающего списка «Расширения и обновления».

Корректировка записей в базе данных - student2.ru

Откроется окно расширений. В меню слева выберем пункт «В сети». Теперь найдем нужные компоненты через строку поиска, напишем туда «report».

Корректировка записей в базе данных - student2.ru

Теперь нужно скачать Microsoft Rdlc Report Designer for Visual Studio. После завершения установки закроем окно и закроем Visual Studio, для того чтобы скачанное расширение установилось. После закрытия студии откроется следующее окно:

Корректировка записей в базе данных - student2.ru

Нажимаем «Изменить» и дожидаемся окончания установки.

В обозревателе решений правой кнопкой выберем пункт «Ссылки» и затем «Управление пакетами NuGet». В появившемся окне выберем вкладку «Обзор». В строке поиска введем запрос «reportviewercontrol».

Корректировка записей в базе данных - student2.ru

Скачаем версию для .Net Windows Forms.

Корректировка записей в базе данных - student2.ru

В панели элементов правой кнопкой выберем «Общие» и затем «Выбрать элементы». Откроется следующее окно:

Корректировка записей в базе данных - student2.ru

Для указания пути к установленной библиотеке нажмем «Обзор». Откроется окно для указания пути. В папке проекта откроем папку packages, затем папку «Microsoft.ReportingServices.ReportViewerControl.Winforms.140.1000.523», затем «lib», затем «net40», и выберем файл «Microsoft.ReportViewer.WinForms.dll». Нажмем «Открыть».

Корректировка записей в базе данных - student2.ru

Видим, что в панели элементов появился элемент ReportViewer.

Формирование отчетов

Создадим еще одну форму. В обозревателе решений правой кнопкой нажмем на название проекта, выберем «Добавить», и выберем «Создать элемент». Из списка выберем элемент «Форма WindowsForms». Теперь на форму добавим элемент управления ReportViewer и закрепи ее в родительском контейнере.

Корректировка записей в базе данных - student2.ru

В обозревателе решений правой кнопкой нажмем на название проекта, выберем пункт «Добавить» и далее «Создать элемент». Из списка выберем мастер отчетов. Откроется мастер отчетов:

Корректировка записей в базе данных - student2.ru

В мастере настройки источника данных нажимаем «Далее».

Корректировка записей в базе данных - student2.ru

Нажимаем «Далее».

Корректировка записей в базе данных - student2.ru

Нажимаем «Далее». Ставим галочку на пункте «Таблицы» и нажимаем «Готово».

Корректировка записей в базе данных - student2.ru

Теперь из доступных полей нужно мышкой перетащить поля в область «Значения» и нажать «Далее».

Корректировка записей в базе данных - student2.ru

После этого завершаем мастер установки, нажимая «Далее» и «Готово» в конце.

Корректировка записей в базе данных - student2.ru

Теперь отчет выглядит так:

Корректировка записей в базе данных - student2.ru

Перейдем на форму 2, и элементу ReportViewer в выпадающем меню, в пункте «Choose report» укажем наш созданный отчет.

Корректировка записей в базе данных - student2.ru

На вкладку SELECT формы 1 добавим кнопку «Показать отчет», а в ее обработчике события пропишем следующий код:

new Form2().Show();

Корректировка записей в базе данных - student2.ru

Выровняем данные в отчете по центру, добавим новое текстовое поле с названием отчета над таблицей, запустим приложение, и нажмем на кнопку «Показать отчет».

Корректировка записей в базе данных - student2.ru

Файлы

В начале рассмотрим основные возможности.

В С# есть пространство имен System.IO, в котором реализованы все необходимые нам классы для работы с файлами. Чтобы подключить это пространство имен, необходимо в самом начале программы добавить строку using System.IO. Для использования кодировок еще добавим пространство:

using System.Text;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

Для создания пустого файла, в классе File есть метод Create(). Он принимает один аргумент – путь. Ниже приведен пример создания пустого текстового файла new_file.txt на диске D:

static void Main(string[] args)
{ File.Create("D:\\new_file.txt");}

Если файл с таким именем уже существует, он будет переписан на новый пустой файл.

Метод WriteAllText() создает новый файл (если такого нет), либо открывает существующий и записывает текст, заменяя всё, что было в файле:

static void Main(string[] args)
{ File. WriteAllText("D:\\new_file.txt", "текст");}

Метод AppendAllText() работает, как и метод WriteAllText() за исключением того, что новый текст дописывается в конец файла, а не переписывает всё что было в файле:

static void Main(string[] args)
{ File.AppendAllText("D:\\new_file.txt", "текст метода AppendAllText ()"); //допишет текст в конец файла
}

Метод Delete() удаляет файл по указаному пути:
static void Main(string[] args)
{ File.Delete("d:\\test.txt"); //удаление файла }

Кроме того, чтобы читать/записывать данные в файл с С# можно использовать потоки.

Поток – это абстрактное представление данных (в байтах), которое облегчает работу с ними. В качестве источника данных может быть файл, устройство ввода-вывода, принтер.

Класс Stream является абстрактным базовым классом для всех потоковых классов в Си-шарп. Для работы с файлами нам понадобится класс FileStream(файловый поток).

FileStream - представляет поток, который позволяет выполнять операции чтения/записи в файл.

static void Main(string[] args)
{ FileStream file = new FileStream("d:\\test.txt", FileMode.Open
, FileAccess.Read); //открывает файл только на чтение
}

Режимы открытия FileMode:

- Append – открывает файл (если существует) и переводит указатель в конец файла (данные будут дописываться в конец), или создает новый файл. Данный режим возможен только при режиме доступа FileAccess.Write.
- Create - создает новый файл(если существует – заменяет).

- CreateNew – создает новый файл (если существует – генерируется исключение).
- Open - открывает файл (если не существует – генерируется исключение).
- OpenOrCreate – открывает файл, либо создает новый, если его не существует.
- Truncate – открывает файл, но все данные внутри файла затирает (если файла не существует – генерируется исключение).

static void Main(string[] args)
{
FileStream file1 = new FileStream("d:\\file1.txt", FileMode.CreateNew); //создание нового файла
FileStream file2 = new FileStream("d:\\file2.txt", FileMode.Open); //открытие существующего файла
FileStream file3 = new FileStream("d:\\file3.txt", FileMode.Append); //открытие файла на дозапись в конец файла
}

Режим доступа FileAccess:
- Read – открытие файла только на чтение. При попытке записи генерируется исключение.

- Write - открытие файла только на запись. При попытке чтения генерируется исключение.

- ReadWrite - открытие файла на чтение и запись.

Для чтения данных из потока нам понадобится класс StreamReader. В нем реализовано множество методов для удобного считывания данных. Ниже приведена программа, которая выводит содержимое файла на экран:
static void Main(string[] args)
{
FileStream file1 = new FileStream("d:\\test.txt", FileMode.Open); //создаем файловый поток
StreamReader reader = new StreamReader(file1); // создаем «потоковый читатель» и связываем его с файловым потоком
Console.WriteLine(reader.ReadToEnd()); //считываем все данные с потока и выводим на экран
reader.Close(); //закрываем поток
Console.ReadLine();
}

Метод ReadToEnd() считывает все данные из файла. ReadLine() – считывает одну строку (указатель потока при этом переходит на новую строку, и при следующем вызове метода будет считана следующая строка).
Свойство EndOfStream указывает, находится ли текущая позиция в потоке в конце потока (достигнут ли конец файла). Возвращает true или false.

Для записи данных в поток используется класс StreamWriter. Пример записи в файл:

static void Main(string[] args)
{
FileStream file1 = new FileStream("d:\\test.txt", FileMode.Create); //создаем файловый поток
StreamWriter writer = new StreamWriter(file1); //создаем «потоковый писатель» и связываем его с файловым потоком
writer.Write("текст"); //записываем в файл
writer.Close(); //закрываем поток. Не закрыв поток, в файл ничего не запишется
}

Метод WriteLine() записывает в файл построчно (то же самое, что и простая запись с помощью Write(), только в конце добавляется новая строка).

Нужно всегда помнить, что после работы с потоком, его нужно закрыть (освободить ресурсы), использовав метод Close().

Кодировка, в которой будут считываться/записываться данные указывается при создании StreamReader/StreamWriter:

static void Main(string[] args)
{
FileStream file1 = new FileStream("d:\\test.txt", FileMode.Open);
StreamReader reader = new StreamReader(file1, Encoding.Unicode);
StreamWriter writer = new StreamWriter(file1, Encoding.UTF8);
}

Кроме того, при использовании StreamReader и StreamWriter можно не создавать отдельно файловый поток FileStream, а сделать это сразу при создании StreamReader/StreamWriter:

static void Main(string[] args)
{
StreamWriter writer = new StreamWriter("d:\\test.txt"); //указываем путь к файлу, а не поток
writer.WriteLine("текст");
writer.Close();
}

Папка создаётся с помощью статического метода CreateDirectory() класса Directory:

static void Main(string[] args)
{ Directory.CreateDirectory("d:\\new_folder");}

Для удаления папок используется метод Delete():
static void Main(string[] args)
{ Directory.Delete("d:\\new_folder"); //удаление пустой папки }

Если папка не пустая, необходимо указать параметр рекурсивного удаления - true:

static void Main(string[] args)
{ Directory.Delete("d:\\new_folder", true); //удаление папки, и всего, что внутри }

Далее рассмотрим боле подробно.

Для работы с файлами предназначена пара классов File и FileInfo. С их помощью мы можем создавать, удалять, перемещать файлы, получать их свойства и многое другое.

Некоторые полезные методы и свойства класса FileInfo:

CopyTo(path): копирует файл в новое место по указанному пути path.

Create(): создает файл.

Delete(): удаляет файл.

MoveTo(destFileName): перемещает файл в новое место.

Свойство Directory: получает родительский каталог в виде объекта DirectoryInfo

Свойство DirectoryName: получает полный путь к родительскому каталогу.

Свойство Exists: указывает, существует ли файл.

Свойство Length: получает размер файла.

Свойство Extension: получает расширение файла.

Свойство Name: получает имя файла.

Свойство FullName: получает полное имя файла.

Класс File реализует похожую функциональность с помощью статических методов:

Copy(): копирует файл в новое место.

Create(): создает файл.

Delete(): удаляет файл.

Move: перемещает файл в новое место.

Exists(file): определяет, существует ли файл.

Наши рекомендации