Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 6 лет назад пользователемАнна Петровская
1 ADO.NET: connected layer
2 Для работы в этом режиме нужна копия Microsoft SQL Server (7.0 или выше) или копия Microsoft SQL Server 2008 Express Edition. Этот облегченный сервер баз данных отлично подходит для наших потребностей: он бесплатен, предоставляет графический интерфейс (SQL Server Management Tool) для создания и администрирования баз данных и интегрирован с Visual Studio 2010/Visual C# 2010 Express Edition.Microsoft SQL Server 2008 Express Edition
3 Создание таблицы Чтобы приступить к созданию тестовой базы данных: запустите Visual Studio 2010; откройте Server Explorer через меню View (Просмотр); щелкните правой кнопкой мыши на узле Data Connections (Подключения к данным) и выберите в контекстном меню пункт Create New SQL Server Database (Создать новую базу данных SQL Server); в открывшемся диалоговом окне подключитесь к SQL Server, установленному на вашей локальной машине (с именем (local)), и укажите в поле имени базы данных AutoLot. Для учебных целей можно оставить аутентификацию Windows:
4 Для добавления новой таблицы щелкните правой кнопкой мыши на узле Tables (Таблицы) и выберите в контекстном меню пункт Add New Table: С помощью редактора таблиц добавьте в таблицу нужное количество столбцов данных. Если у столбца должно быть установлено свойство Primary Key (первичный ключ) для этого щелкните правой кнопкой мыши на строке имени столбца и выберите в контекстном меню пункт Set Primary Key (Установить первичный ключ).
6 сохраните и закройте новую таблицу; теперь новая таблица должна быть видна под узлом Tables (Таблицы) в Server Explorer. щелкните правой кнопкой мыши на ее значке и выберите в контекстном меню пункт Show Table Data (Просмотр данных таблицы). введите необходимую информацию один из возможных вариантов списка товаров приведен на рисунке:
7 Создание хранимой процедуры Хранимые процедуры это подпрограммы, хранимые непосредственно в базе данных. Обычно они работают с данными таблиц и возвращают какое-то значение. Чтобы добавить в базу данных одну хранимую процедуру, щелкните правой кнопкой мыши на узле Stored Procedures (Хранимые процедуры) базы данных в Server Explorer и выберите в контекстном меню пункт Add New Stored Procedure (Добавить новую хранимую процедуру). В появившемся окне редактора введите следующий текст:
8 При сохранении, этой процедуре автоматически будет присвоено имя GetPetName, взятое из оператора CREATE PROCEDURE (учтите, что при первом сохранении Visual Studio 2010 автоматически изменяет имя SQL- сценария на "ALTER PROCEDURE..."). После этого новая хранимая процедура будет видна в Server Explorer:
9 Визуальное создание отношений между таблицами Между таблицами нужно установить отношения "родительский-дочерний". В Visual Studio 2010 это выполняется очень просто, т.к. она позволяет вставить новую диаграмму базы данных на этапе проектирования: откройте Server Explorer; щелкните правой кнопкой мыши на узле Database Diagrams базы данных; выберите пункт контекстного меню Add New Diagram (Добавить новое представление); откроется диалоговое окно, в котором можно выбирать таблицы и добавлять их в диаграмму; выберите все таблицы из базы данных
10 Чтобы начать устанавливать отношения между таблицами, щелкните на ключевом поле одной таблицы, а затем (не отпуская кнопку мыши) перетащите его на такое же поле другой таблицы. Когда вы отпустите кнопку, появится диалоговое окно; согласитесь со всеми предложенными в нем значениями по умолчанию. Теперь повторите те же действия для всех имеющихся таблиц. После этого вы увидите диалоговое окно классов, показанное на рисунке ниже (было включено отображение отношений между таблицами за счет щелчка правой кнопкой мыши на конструкторе и выбора в контекстном меню пункта Show Relationship Labels (Показывать метки взаимосвязи)).
11 Генератор поставщиков данных Генератор поставщиков данных.NET позволяет создать единую кодовую базу с помощью обобщенных типов доступа к данным. Более того, посредством конфигурационных файлов приложения (и под элемента ) можно получить поставщики и строки подключения без необходимости в повторной компиляции или развертывания сборки, в которой используются API ADO.NET. Чтобы разобраться в реализации генератора поставщиков данных, надо иметь ввиду, что все классы в поставщике данных порождены от одних и тех же базовых классов, определенных в пространстве имен System.Data.Common:
12 DbCommand абстрактный базовый класс для всех объектов команд; DbConnection абстрактный базовый класс для всех объектов подключений; DbDataAdapter абстрактный базовый класс для всех объектов адаптеров данных; DbDataReader абстрактный базовый класс для всех объектов чтения данных; DbParameter абстрактный базовый класс для всех объектов параметров; DbTransaction –абстрактный базовый класс для всех объектов транзакций. Все поставщики данных, разработанные Microsoft, содержат класс, порожденный от System.Data.Common.DbProviderFactory. В этом базовом классе определен ряд методов, которые выбирают объекты данных, характерные для конкретных поставщиков.
13 Для получения типа, порожденного от DbProviderFactory, непосредственно для определенного поставщика данных в пространстве имен System.Data.Common имеется класс DbProviderFactories. С помощью метода GetFactory() можно получить конкретный объект DbProviderFactory для указанного поставщика данных. Для этого нужно указать строковое имя, которое представляет пространство имен.NET, содержащее функциональность поставщика:
14 После получения генератора для поставщика данных можно получить связанные с ним объекты данных (например, подключения, команды и объекты чтения данных). Для всех практических целей можно рассматривать аргумент, передаваемый в DbProviderFactories.GetFactory(), как имя пространства имен.NET для поставщика данных. В реальности это строковое значение используется в значении machine.config для динамической загрузки нужной библиотеки из глобального кэша сборок.
15 Подключение к базе данных Первое, что нужно сделать при работе с поставщиком данных это установить сеанс с источником данных с помощью объекта подключения (порожденного от DbConnection). У объектов подключения.NET имеется форматированная строка подключения, которая содержит ряд пар имя/значение, разделенных точками с запятой. Эта информация содержит имя машины, к которой нужно подключиться, необходимые параметры безопасности, имя базы данных на этой машине и другую информацию, зависящую от поставщика.
16 Создание, открытие и закрытие соединения с базой данных SqlServer: // Создание открытого подключения using (SqlConnection cn = new SqlConnection()) { cn.ConnectionString Source=MICROSOF-1EA29E\SQLEXPRESS;Initial Catalog=AutoLot; + "Integrated Security=SSPI;Pooling=False"; cn.Open(); // Работа с базой данных cn.Close(); }
17 Некоторые члены базового класса DbConnection: BeginTransaction() Используется для начала транзакции базы данных ChangeDatabase() Изменяет базу данных для открытого подключения ConnectionTimeout Свойство только для чтения. Возвращает время ожидания при установке подключения, после которого ожидание прекращается и выдается сообщение об ошибке (по умолчанию 15 секунд). Для изменения этого времени нужно изменить в строке подключения сегмент Connect Timeout (например, Connect Timeout=30) Database Свойство только для чтения. Содержит имя базы данных, с которой связан объект подключения DataSource Свойство только для чтения. Содержит местоположение базы данных, с которой связан объект подключения GetSchema() Этот метод возвращает объект DataTable, содержащий информацию схемы из источника данных State Свойство только для чтения. Содержит текущее состояние подключения в виде одного из значений перечисления ConnectionState
18 Объекты построителей строк подключения
19 Команды Тип SqlCommand (порожденный от DbCommand) представляет собой объектно-ориентированное представление SQL-запроса, имени таблицы или хранимой процедуры. Тип команды указывается свойством CommandType, которое принимает значения из перечисления CommandType:
21 Выполнение команд Классы Command предлагают следующие методы выполнения: ExecuteNonQuery() выполняет команду, но не возвращает вывода; ExecuteReader() выполняет команду и возвращает типизированный IDataReader; ExecuteScalar() выполняет команду и возвращает значение из первого столбца первой строки любого результирующего набора. SqlCommand предлагает метод: ExecuteXmlReader() выполняет команду и возвращает объект XmlReader, который может быть использован для прохода по фрагменту XML, возвращенному из базы данных. Метод ExecuteNonQuery() обычно используется для операторов UPDATE, INSERT или DELETE, где единственным возвращаемым значением является количество обработанных строк. Однако метод может вернуть результаты, если осуществляется вызов хранимой процедуры с выходными параметрами.
22 Примеры string strSQL = "UPDATE Customers SET LastName = 'Johnson' WHERE LastName = 'Walton'"; SqlCommand myCommand = new SqlCommand(strSQL, cn); int i = myCommand.ExecuteNonQuery(); string strSQL = "SELECT * FROM Inventory"; SqlCommand myCommand = new SqlCommand(strSQL, cn); SqlDataReader dr = myCommand.ExecuteReader(); while (dr.Read()) Console.WriteLine("ID: {0} Car Pet Name: {1}",dr[0],dr[3]);
23 Вставка, удаление, обновление записей в базе данных Метод ExecuteReader() извлекает объект чтения данных, который позволяет просматривать результаты SQL- оператора Select с помощью потока информации, доступного только для чтения в прямом направлении. Если требуется выполнить операторы SQL, модифицирующие таблицу данных, то нужен вызов метода ExecuteNonQuery() данного объекта команды. Этот единый метод предназначен для выполнения вставок, изменений и удалений, в зависимости от формата текста команды. Понятие не запросный (nonquery) означает оператор SQL, который не возвращает результирующий набор. Следовательно, операторы Select представляют собой запросы, а операторы Insert, Update и Delete нет. Соответственно, метод ExecuteNonQuery() возвращает значение int, содержащее количество строк, на которые повлияли эти операторы, а не новое множество записей.
24 Добавление логики вставки Вставка новой записи в таблицу сводится к форматированию SQL-оператора Insert (в зависимости от введенных пользователем данных) и вызову метода ExecuteNonQuery() с помощью объекта команды.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.