ADO.NET ADO.NET это набор классов, которые предоставляют службы
ADO.NET
ADO.NET это набор классов, которые предоставляют службы доступа к данным программисту, работающему на платформе .NET.
Сравнение ADO и ADO.NET ADO.NET - эволюционное развитие ADO.
Преимущества и нововведения в ADO.NET Использование разъединенной модели доступа к данным Хранение данных в объектах DataSet Глубокая интеграция с XML
Архитектура ADO.NET
Поставщики данных .NET .NET Framework Data Provider for SQL Server .NET Framework Data Provider for OLE DB .NET Framework Data Provider for ODBC .NET Framework Data Provider for Oracle
Объект DataSet Объект DataSet является центральным элементом поддержки разъединенных распределенных сценариев данных в ADO.NET.
Внутреннее устройство DataSet
Способы работы с DataSet Программно создать DataTable и Constraint внутри DataSet и заполнить таблицы данными Заполнить DataSet таблицами данных из существующего реляционного источника данных с помощью DataAdapter Загрузить и сохранить содержимое DataSet с помощью XML-кода
Объект Connection объект Connection используется для подключения к определенному источнику данных.
Открытие/закрытие соединения //Вариант №1 using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); …………. } //Вариант №2 SqlConnection connection = new SqlConnection(connectionString)); connection.Open(); ………… connection.Close();
Синтаксис строки соединения Свойство ConnectionString получает или задает строку, используемую для подключения к базе данных. Формат строки соединения: keyword1=value1; keyword2=value2;
Пример строки соединения connectionString= "Data Source=.\SQLEXPRESS; AttachDbFilename=C:\prog\App_Data\BD.mdf; Integrated Security=True; Connect Timeout=30"
строка замены DataDirectory AttachDbFilename=C:\prog\App_Data\BD.mdf; AttachDbFilename=|DataDirectory|\BD.mdf;
Транзакция Транзакция состоит из одной команды или группы команд, которые выполняются как одна единица работы. connection.Open(); SqlTransaction sqlTran = connection.BeginTransaction(); SqlCommand command = connection.CreateCommand(); command.Transaction = sqlTran; try { …………………. sqlTran.Commit(); } catch (Exception ex) { sqlTran.Rollback(); } connection.Close();
Объект DataReader получает однопроходный поток данных из БД, доступный только для чтения. Чтобы создать объект SqlDataReader рекомендуется вызвать метод ExecuteReader объекта SqlCommand. SqlDataReader reader = command.ExecuteReader();
static void function(SqlConnection connection) { using (connection) { SqlCommand command = new SqlCommand( "SELECT CategoryID, CategoryName FROM Categories;", connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { Console.WriteLine("{0}\t{1}", reader.GetInt32(0), reader.GetString(1)); } } else { Console.WriteLine("No rows found."); } reader.Close(); } }
Метод Read перемещает DataReader к следующей записи. Возвращаемое значение Тип: System..::.Boolean true, если имеются строки; false, если нет строк.
Доступ к столбцам По имени: reader[“column_name”]; По индексу: reader[0]; reader.GetInt32(0); //типизи- рованный метод доступа
Метод NextResult При возвращении нескольких результирующих наборов объект DataReader предоставляет метод NextResult для просмотра наборов результатов по порядку. Метод NextResult перемещает средство чтения данных на следующий результат. По умолчанию средство чтения данных располагается на первом результате.
static void RetrieveMultipleResults(SqlConnection connection) { SqlCommand command = new SqlCommand( "SELECT CategoryID, CategoryName FROM dbo.Categories;" + "SELECT EmployeeID, LastName FROM dbo.Employees", connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(); while (reader.HasRows) { Console.WriteLine("\t{0}\t{1}", reader.GetName(0), reader.GetName(1)); while (reader.Read()) { Console.WriteLine("\t{0}\t{1}", reader.GetInt32(0), reader.GetString(1)); } reader.NextResult(); } reader.Close(); connection.Close(); }
Объект Command позволяет обращаться к командам базы данных для возврата данных изменения данных выполнения хранимых процедур передачи или получения сведений о параметрах
Создания объекта Command string sql ="INSERT INTO tblExample (columnEx) VALUES (‘ValueEx’)"; SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd1 = new SqlCommand(sql, conn); SqlCommand cmd2 = new SqlCommand(); cmd2.Connection = conn; cmd2.CommandText = sql; cmd2.CommandType = CommandType.Text; SqlCommand cmd3 = conn.CreateCommand();
Методы ExecuteReader SqlDataReader reader = command.ExecuteReader(); ExecuteScalar Int32 ID = (Int32) command.ExecuteScalar(); ExecuteNonQuery Int32 str = command.ExecuteNonQuery(); ExecuteXMLReader XmlReader xmlread = command. ExecuteXMLReader();
Параметры Создание: SqlParameter parameter = new SqlParameter(); Свойство Direction Input InputOutput Output ReturnValue
Пример static void ExampleFunc (SqlConnection connection, string ParamValue) { SqlCommand command = new SqlCommand(); command.Connection = connection; command.CommandText = "NameProcedure"; command.CommandType = CommandType.StoredProcedure; SqlParameter parameter = new SqlParameter(); parameter.ParameterName = "@ParamName"; parameter.SqlDbType = SqlDbType.NVarChar; parameter.Direction = ParameterDirection.Input; parameter.Value = ParamValue; command.Parameters.Add(parameter); connection.Open(); SqlDataReader reader = command.ExecuteReader(); }
Объект DataAdapter Функции: получение данных из источника данных заполнение таблиц в DataSet сохранение изменений, сделанных в объекте DataSet, в источнике данных
Пример string queryStr = "SELECT * FROM tblExample"; SqlDataAdapter adapter = new SqlDataAdapter(queryStr, connection); DataSet dataset = new DataSet(); adapter.Fill(dataset, "tblExample");
Постраничный просмотр результата запроса int currentIndex = 0; int pageSize = 5; adapter.Fill (dataset, currentIndex, pageSize, "tblExample");
Свойства DataAdapter SelectCommand InsertCommand UpdateCommand DeleteCommand
Пример SqlDataAdapter adapter = new SqlDataAdapter(); adapter.UpdateCommand = new SqlCommand( "UPDATE tblExample SET ID = @ID, Column = @Param WHERE ID = @oldID", connection); adapter.UpdateCommand.Parameters.Add("@ID", SqlDbType.Int ,"ID"); adapter.UpdateCommand.Parameters.Add("@Param",SqlDbType.VarChar, 40, "Column"); adapter.UpdateCommand.Parameters.Add("@oldID", SqlDbType.Int, "ID" ).SourceVersion = DataRowVersion.Original;
Пример SqlDataAdapter adapter = new SqlDataAdapter( "SELECT ID, Column FROM tblExample",connection); adapter.UpdateCommand = new SqlCommand("UPDATE tblExample SET Column = @Param WHERE ID = @ID", connection); adapter.UpdateCommand.Parameters.Add("@Param", SqlDbType.VarChar, 40, "Column"); adapter.UpdateCommand.Parameters.Add("@ID", SqlDbType.Int, "ID" ).SourceVersion = DataRowVersion.Original; DataTable Table = new DataTable(); dataAdpater.Fill(Table); DataRow Row = Table.Rows[0]; Row["Column"] = "New value"; dataAdpater.Update(Table);
35588-ado.net.ppt
- Количество слайдов: 32

