Читайте также:
|
|
Для модификации таблиц базы данных нужно вызвать метод ExecuteNonQuery() объекта команды, который выполняет вставки, обновления, и удаления в соответствии с форматом соотвествующей команды:
Вставка записи:
//Сбор информации о новом друге:
Console.WriteLine("Введите код друга!");
int kod = Int32.Parse(Console.ReadLine());
Console.WriteLine("Введите фамилию друга!");
string fam = Console.ReadLine();
Console.WriteLine("Введите отчество друга!");
string ot = Console.ReadLine();
Console.WriteLine("Введите имя друга!");
string imja = Console.ReadLine();
// Создание и формирование sql-запроса:
string sql = string.Format("Insert Into Друзья" + "([Код друга], Фамилия, Отчество, Имя) Values" + "('{0}','{1}','{2}','{3}')", kod, fam, ot, imja);
SqlCommand cmd = new SqlCommand(sql, cn);
Console.WriteLine(cmd.CommandText);
try { cmd.ExecuteNonQuery(); }
catch (Exception e) { Console.WriteLine(e.Message); }
Удаление записи: (если соответствующей записи нет в связанной таблице, она не удаляется!)
// Удаление записи с указанным номером друга:
Console.WriteLine("Введите код друга для удаления!");
int kod = Int32.Parse(Console.ReadLine());
string sql = string.Format("Delete from Друзья where [Код друга]={0}", kod);
SqlCommand cmd = new SqlCommand(sql, cn);
Console.WriteLine(cmd.CommandText);
try { cmd.ExecuteNonQuery(); }
catch (Exception e) { Console.WriteLine(e.Message); }
Обновление записи:
// Обновление записи:
Console.WriteLine("Введите код друга для обновления записи!");
int kod = Int32.Parse(Console.ReadLine());
Console.WriteLine("Введите новую фамилию друга!");
string fam = Console.ReadLine();
string sql = string.Format("Update Друзья Set Фамилия='{0}' where [Код друга]={1} ",fam,kod);
SqlCommand cmd = new SqlCommand(sql, cn);
Console.WriteLine(cmd.CommandText);
try { cmd.ExecuteNonQuery(); }
catch (Exception e) { Console.WriteLine(e.Message); }
Отметим, что оба подхода (визуальный и ручной) к созданию и использованию объектов ADO обладают своими областями применения. Для упрощения разработки и сопровождения визуальных форм проще использовать визуальный подход. При создании приложений, от которых требуется надежность, гибкость или отсутствие экранных форм (например, Web-сервис) лучше создавать объекты ADO вручную.
При визуальном подходе наряду с представлением данных в виде таблицы часто приходится использовать традиционные элементы интерфейса, такие как TextBox, Label и пр.
19. Вывод информации с использованием объекта чтения данных: создание SqlDataReader; чтение данных из DataReader; чтение полей из текущей записи; закрытие DataReader.
Преимуществом использования объекта DataSet является то, что он дает отдаленный обзор базы данных. Для долгого использования приложений, это часто лучший подход. Для Веб-приложений разработчики обычно выполняют короткие и простые операции с каждым запросом, такие как отображение данных. Для таких операций разработчики не должны поддерживать объект DataSet. Или, когда большое количество данных воспроизведено, держать ли память открытой становится вопросом. Например, чтение 10000 строк из базы данных заставляет DataTable выделять и держать память для всех 10000 строк, для жизни таблицы. Если 1000 пользователей сделают это в одно и тоже время, использование памяти станет критическим. В таких случаях лучше использовать объект чтения данных DataReader. Есть два DataReader-объекта: SqlDataReader и OleDbDataReader.
Итак, улучшить производительность приложения можно с помощью DataReader, если нужно получить данные только в прямом направлении, т.е. только для чтения. С помощью DataReader можно получить следующий прирост производительности:
– сохранение памяти, которая будет потребляться DataSet;
– экономия времени обработки, которая потребуются для создания и заполнения содержания DataSet;
Для решения таких ситуаций предназначен DataReader. Он служит для выполнения только чтения информации из базы данных в однонаправленный поток. Только одна запись в одну единицу времени существует в памяти. Поэтому объекты чтения данных используются только для SQL-операторов выборки данных. Объекты чтения данных (в отличие от объектов адаптеров данных) поддерживают открытое соединение с источником данных, пока вы явно не закроете соединение.
Существуют важные различия между записями DataReader и DataSet, которые выделены в таблице ниже.
Сравнение DataReader и DataSet:
Свойство | DataReader | DataSet |
Количество таблиц | Одна таблица | Множество таблиц |
Отношения | Основано на присоединении | Включает в себя отношения |
Перемещение по данным | Перемещение строка за строкой | Переход через Отношения |
Соединение данных | Подключен или отключен | Отключен |
Передача данных | Сортировка COM | Передача XML-файла |
Создание SqlDataReader: Объекты чтения данных получаются из объекта команды с помощью вызова метода ExecuteReader(). После того как вызван метод ExecuteReader объекта Command, вы получаете доступ к записи в DataReader путем вызова метода Read. По умолчанию позиционирование в DataReader устанавливается перед первой записью, поэтому вы должны вызвать Read перед доступом к любым данным. Когда ни одна запись не доступна, метод Read возвращает нулевое значение (false).
Чтение данных из DataReader:
Можно ссылаться на поля данных в текущей записи чтения данных по имени поля, а затем вызвать соответствующую функцию преобразования, как показано на следующем примере кода:
string customerID = myReader["CustomerID"].ToString();
string companyName = myReader["CompanyName"].ToString();
Закрытие DataReader. Когда DataReader используется, связи заняты обслуживанием DataReader. Таким образом, нужно всегда вызывать команду Close()(Закрыть), чтобы закрыть DataReader по окончании работы с ним:
if (myReader!= null)
myReader.Close();
if (cn.State == ConnectionState.Open)
cn.Close();
Обработка ошибок с помощью DataReader. При использовании соединения с объектом DataReader, всегда нужно использовать блоки try / catch/ finally, чтобы убедиться, что если что-нибудь случится, соединения будут закрыты:
Чтение полей из текущей записи. Чтобы получить данные из полей в текущей записи, следует вызвать соответствующий метод Get класса SqlDataReader, например, GetName(i) – имя i-го столбца, GetValue(i) – значение i-го столбца, GetDateTime, GetDouble, GetInt32, или GetString. Параметр метода Get – это порядковый номер поля (столбца записи), которое вы хотите считать. Например, следующий код считывает поля CustomerID и CompanyName, из текущей записи DataReader, с помощью метода GetString:
string customerID = myReader.GetString(0);
string companyName = myReader.GetString(1);
Дата добавления: 2015-09-10; просмотров: 113 | Поможем написать вашу работу | Нарушение авторских прав |