Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Выборка, добавление, удаление и обновление данных с помощью SQL-запросов на подсоединенном уровне.

Читайте также:
  1. DEL *.BAK - удаление всех файлов с типа BAK из текущего каталога.
  2. I.2.3. Обработка исходных данных в режиме таблицы
  3. II. С помощью Мобильных технологий
  4. PROFIBUS Слой Связи Данных (слой 2)
  5. SIMD – одиночный поток команд и множественный поток данных.
  6. Trading Techniques Inc. предоставляет месячные, недельные, дневные и почасовые (60 минут) данные по всем фьючерсам с помощью сервиса загрузки данных.
  7. Анализ данных и подготовка заключительного доклада
  8. Анализ данных и подготовка заключительного отчета
  9. Анализ и интерпретация данных
  10. Анализ и интерпретация данных экспериментально-психологического исследования.

Для модификации таблиц базы данных нужно вызвать метод 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 | Поможем написать вашу работу | Нарушение авторских прав

Файловый ввод-вывод с ориентацией на символы. Использование класса StreamWriter. Использование класса StreamReader. | Считывание и запись двоичных данных. Класс BinaryWriter. Класс BinaryReader. | Public enum FileAttributes | Основы организации потоков. Потоки и многозадачность. Пространство имен System.Threading. Класс Thread. Создание потока. | Проблемы одновременности и синхронизации потоков. Общий доступ к данным из разных потоков, предотвращение коллизий. | Краткий обзор ADO.NET. Три стороны технологии ADO.NET. Пространство имен System.Data. | Поставщики данных ADO.NET. Поведение объектов подключения. | Объектная модель ADO.NET | Краткий обзор объектов ADO .NET. | События |


lektsii.net - Лекции.Нет - 2014-2025 год. (0.01 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав