🗊Презентация Доступ к данным при помощи ADO.NET

Нажмите для полного просмотра!
Доступ к данным при помощи ADO.NET, слайд №1Доступ к данным при помощи ADO.NET, слайд №2Доступ к данным при помощи ADO.NET, слайд №3Доступ к данным при помощи ADO.NET, слайд №4Доступ к данным при помощи ADO.NET, слайд №5Доступ к данным при помощи ADO.NET, слайд №6Доступ к данным при помощи ADO.NET, слайд №7Доступ к данным при помощи ADO.NET, слайд №8Доступ к данным при помощи ADO.NET, слайд №9Доступ к данным при помощи ADO.NET, слайд №10Доступ к данным при помощи ADO.NET, слайд №11Доступ к данным при помощи ADO.NET, слайд №12Доступ к данным при помощи ADO.NET, слайд №13Доступ к данным при помощи ADO.NET, слайд №14Доступ к данным при помощи ADO.NET, слайд №15Доступ к данным при помощи ADO.NET, слайд №16Доступ к данным при помощи ADO.NET, слайд №17Доступ к данным при помощи ADO.NET, слайд №18Доступ к данным при помощи ADO.NET, слайд №19Доступ к данным при помощи ADO.NET, слайд №20Доступ к данным при помощи ADO.NET, слайд №21Доступ к данным при помощи ADO.NET, слайд №22Доступ к данным при помощи ADO.NET, слайд №23Доступ к данным при помощи ADO.NET, слайд №24Доступ к данным при помощи ADO.NET, слайд №25Доступ к данным при помощи ADO.NET, слайд №26Доступ к данным при помощи ADO.NET, слайд №27Доступ к данным при помощи ADO.NET, слайд №28Доступ к данным при помощи ADO.NET, слайд №29Доступ к данным при помощи ADO.NET, слайд №30Доступ к данным при помощи ADO.NET, слайд №31Доступ к данным при помощи ADO.NET, слайд №32Доступ к данным при помощи ADO.NET, слайд №33Доступ к данным при помощи ADO.NET, слайд №34Доступ к данным при помощи ADO.NET, слайд №35Доступ к данным при помощи ADO.NET, слайд №36Доступ к данным при помощи ADO.NET, слайд №37Доступ к данным при помощи ADO.NET, слайд №38Доступ к данным при помощи ADO.NET, слайд №39Доступ к данным при помощи ADO.NET, слайд №40Доступ к данным при помощи ADO.NET, слайд №41Доступ к данным при помощи ADO.NET, слайд №42Доступ к данным при помощи ADO.NET, слайд №43Доступ к данным при помощи ADO.NET, слайд №44Доступ к данным при помощи ADO.NET, слайд №45Доступ к данным при помощи ADO.NET, слайд №46Доступ к данным при помощи ADO.NET, слайд №47Доступ к данным при помощи ADO.NET, слайд №48Доступ к данным при помощи ADO.NET, слайд №49Доступ к данным при помощи ADO.NET, слайд №50Доступ к данным при помощи ADO.NET, слайд №51Доступ к данным при помощи ADO.NET, слайд №52Доступ к данным при помощи ADO.NET, слайд №53Доступ к данным при помощи ADO.NET, слайд №54Доступ к данным при помощи ADO.NET, слайд №55Доступ к данным при помощи ADO.NET, слайд №56Доступ к данным при помощи ADO.NET, слайд №57Доступ к данным при помощи ADO.NET, слайд №58Доступ к данным при помощи ADO.NET, слайд №59Доступ к данным при помощи ADO.NET, слайд №60Доступ к данным при помощи ADO.NET, слайд №61Доступ к данным при помощи ADO.NET, слайд №62Доступ к данным при помощи ADO.NET, слайд №63Доступ к данным при помощи ADO.NET, слайд №64Доступ к данным при помощи ADO.NET, слайд №65Доступ к данным при помощи ADO.NET, слайд №66Доступ к данным при помощи ADO.NET, слайд №67Доступ к данным при помощи ADO.NET, слайд №68

Содержание

Вы можете ознакомиться и скачать презентацию на тему Доступ к данным при помощи ADO.NET. Доклад-сообщение содержит 68 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Доступ к данным при помощи ADO.NET
Лекция 10
Описание слайда:
Доступ к данным при помощи ADO.NET Лекция 10

Слайд 2





Общие характеристики
Установить соединение с БД
Создать и заполнить данными объект DataSet
Вернуть изменения обратно в БД
SQL
OLE DB
Описание слайда:
Общие характеристики Установить соединение с БД Создать и заполнить данными объект DataSet Вернуть изменения обратно в БД SQL OLE DB

Слайд 3





Пространства имен
Описание слайда:
Пространства имен

Слайд 4





Типы пространства имен System.Data
Описание слайда:
Типы пространства имен System.Data

Слайд 5





Свойства класса DataColumn
Описание слайда:
Свойства класса DataColumn

Слайд 6





Создание объекта DataColumn
protected void btnColumn_Click (object sender, System.EventArgs e)
{
	// Создаем столбец FirstName
	DataColumn colFName = new DataColumn();
	// Настраиваем его параметры
	colFName.DataType = Type.GetType("System.String");
	colFName.ReadOnly = true;
	colFName.Caption = "First Name";
	colFName.ColumnName = "FirstName";
	// А теперь извлекаем информацию о них
	string temp = "Column type: " + colFName.DataType + "\n" + "Read only? " + 
		colFName.ReadOnly + "\n" + "Caption: " + 
		colFName.Caption + "\n" + "Column Name: " + 
		colFName.ColumnName + "\n" + "Nulls allowed?" + 	colFName.AllowDBNull;
		MessageBox.Show(temp, "Column Properties");
}
Описание слайда:
Создание объекта DataColumn protected void btnColumn_Click (object sender, System.EventArgs e) { // Создаем столбец FirstName DataColumn colFName = new DataColumn(); // Настраиваем его параметры colFName.DataType = Type.GetType("System.String"); colFName.ReadOnly = true; colFName.Caption = "First Name"; colFName.ColumnName = "FirstName"; // А теперь извлекаем информацию о них string temp = "Column type: " + colFName.DataType + "\n" + "Read only? " + colFName.ReadOnly + "\n" + "Caption: " + colFName.Caption + "\n" + "Column Name: " + colFName.ColumnName + "\n" + "Nulls allowed?" + colFName.AllowDBNull; MessageBox.Show(temp, "Column Properties"); }

Слайд 7





Добавляем объект DataColumn в DataTable
// Создаем столбец myColumn
DataColumn myColumn = new DataColumn();
			
// Создаем таблицу myTable
	DataTable myTable = new DataTable("MyTable");
// Свойство Columns возвращает объект типа 
// DataColumnCollection. Для добавления столбца
// в таблицу используется метод Add();
	myTable.Columns.Add(myColumn);
Описание слайда:
Добавляем объект DataColumn в DataTable // Создаем столбец myColumn DataColumn myColumn = new DataColumn(); // Создаем таблицу myTable DataTable myTable = new DataTable("MyTable"); // Свойство Columns возвращает объект типа // DataColumnCollection. Для добавления столбца // в таблицу используется метод Add(); myTable.Columns.Add(myColumn);

Слайд 8





Делаем столбец первичным ключом таблицы
// Столбец EmpID будет первичным
DataColumn colEmpID = new DataColumn("EmpID",Type.GetType(“System.Int32"));
colEmpID.Caption = “Employee ID”;
colEmpID.AllowDBNull=false;
colEmpID.Unique=true;
// Еще надо воспользоваться свойством 
//  DataTable.PrimaryKey
Описание слайда:
Делаем столбец первичным ключом таблицы // Столбец EmpID будет первичным DataColumn colEmpID = new DataColumn("EmpID",Type.GetType(“System.Int32")); colEmpID.Caption = “Employee ID”; colEmpID.AllowDBNull=false; colEmpID.Unique=true; // Еще надо воспользоваться свойством // DataTable.PrimaryKey

Слайд 9





Настройка автоматического увеличения значений
		// Создаем столбец данных
		DataColumn myColumn = new DataColumn();
		myColumn.ColumnName = "Foo";
		myColumn.DataType = System.Type.GetType("System.Int32");

		// Настраиваем автоматическое увеличение значений
		myColumn.AutoIncrement = true;
		myColumn.AutoIncrementSeed = 500;
		myColumn.AutoIncrementStep = 12;

		// Добавляем этот столбец в таблицу
		DataTable myTable = new DataTable("MyTable");
		myTable.Columns.Add(myColumn);

		// Добавляем 20 строк
		DataRow r;
		for(int i = 0; i < 20; i++) { r = myTable.NewRow();
				     myTable.Rows.Add(r);   }

		// А теперь выводим значения для каждой строки
		string temp = "";
		DataRowCollection rows = myTable.Rows;
		for(int i = 0; i < myTable.Rows.Count; i++)   {   DataRow currRow = rows[i];
					      	    temp += currRow["Foo"] + " ";  }

		MessageBox.Show(temp, "These values brought ala auto-increment");
Описание слайда:
Настройка автоматического увеличения значений // Создаем столбец данных DataColumn myColumn = new DataColumn(); myColumn.ColumnName = "Foo"; myColumn.DataType = System.Type.GetType("System.Int32"); // Настраиваем автоматическое увеличение значений myColumn.AutoIncrement = true; myColumn.AutoIncrementSeed = 500; myColumn.AutoIncrementStep = 12; // Добавляем этот столбец в таблицу DataTable myTable = new DataTable("MyTable"); myTable.Columns.Add(myColumn); // Добавляем 20 строк DataRow r; for(int i = 0; i < 20; i++) { r = myTable.NewRow(); myTable.Rows.Add(r); } // А теперь выводим значения для каждой строки string temp = ""; DataRowCollection rows = myTable.Rows; for(int i = 0; i < myTable.Rows.Count; i++) { DataRow currRow = rows[i]; temp += currRow["Foo"] + " "; } MessageBox.Show(temp, "These values brought ala auto-increment");

Слайд 10





Тип DataRow
Структура таблицы определяется как коллекция объектов DataColumn
DataColumnCollection хранит ее в объекте DataTable
Коллекция объектов DataRow – данные, хранящиеся в таблице
Объект DataRow не нужно создавать напрямую
Описание слайда:
Тип DataRow Структура таблицы определяется как коллекция объектов DataColumn DataColumnCollection хранит ее в объекте DataTable Коллекция объектов DataRow – данные, хранящиеся в таблице Объект DataRow не нужно создавать напрямую

Слайд 11





Тип DataRow
// Создаем объект таблицы
DataTable myTable = new DataTable("Employees");
// … здесь формируем структуру таблицы (столбцы)
// Создаем строку
DataRow row = empTable.NewRow();
Row[“EmpID”]=102;
Row[“FirstName”]=“Joe”;
Row[“LastName”]=“Blow”;
// Добавляем ее во внутреннюю коллекцию строк
empTable.Rows.Add(row)
Описание слайда:
Тип DataRow // Создаем объект таблицы DataTable myTable = new DataTable("Employees"); // … здесь формируем структуру таблицы (столбцы) // Создаем строку DataRow row = empTable.NewRow(); Row[“EmpID”]=102; Row[“FirstName”]=“Joe”; Row[“LastName”]=“Blow”; // Добавляем ее во внутреннюю коллекцию строк empTable.Rows.Add(row)

Слайд 12





Члены класса DataRow
Описание слайда:
Члены класса DataRow

Слайд 13





Перечисление DataRowState
Описание слайда:
Перечисление DataRowState

Слайд 14





Иллюстрация состояния DataRow
DataTable myTable = new DataTable("Employees"); // Создаем DataTable из одного столбца
DataColumn colID = new DataColumn("EmpID", Type.GetType("System.Int32"));
myTable.Columns.Add(colID);
DataRow myRow; // Начинаем работу с DataRow
myRow = myTable.NewRow(); // Создаем объект DataRow (пока в состоянии Detached) 
Console.WriteLine(myRow.RowState.ToString());
			
myTable.Rows.Add(myRow); 	// Теперь добавлем его в таблицу
Console.WriteLine(myRow.RowState.ToString());
myTable.AcceptChanges(); 	// Записываем изменения
Console.WriteLine(myRow.RowState.ToString());
myRow["EmpId"] = 100; // Изменяем строку
Console.WriteLine(myRow.RowState.ToString());
myRow.Delete(); // А теперь ее удаляем
Console.WriteLine(myRow.RowState.ToString());
myRow.AcceptChanges();
Описание слайда:
Иллюстрация состояния DataRow DataTable myTable = new DataTable("Employees"); // Создаем DataTable из одного столбца DataColumn colID = new DataColumn("EmpID", Type.GetType("System.Int32")); myTable.Columns.Add(colID); DataRow myRow; // Начинаем работу с DataRow myRow = myTable.NewRow(); // Создаем объект DataRow (пока в состоянии Detached) Console.WriteLine(myRow.RowState.ToString()); myTable.Rows.Add(myRow); // Теперь добавлем его в таблицу Console.WriteLine(myRow.RowState.ToString()); myTable.AcceptChanges(); // Записываем изменения Console.WriteLine(myRow.RowState.ToString()); myRow["EmpId"] = 100; // Изменяем строку Console.WriteLine(myRow.RowState.ToString()); myRow.Delete(); // А теперь ее удаляем Console.WriteLine(myRow.RowState.ToString()); myRow.AcceptChanges();

Слайд 15





Свойство ItemArray
ItemArray – свойство класса DataRow
Позволяет получить полный «снимок» строки в виде массива объектов типа System.Object
При помощи этого свойства можно вставить новую строку в таблицу, не указывая явно значения для каждого столбца
Описание слайда:
Свойство ItemArray ItemArray – свойство класса DataRow Позволяет получить полный «снимок» строки в виде массива объектов типа System.Object При помощи этого свойства можно вставить новую строку в таблицу, не указывая явно значения для каждого столбца

Слайд 16





Свойство ItemArray
// Объявляем массив
object [] myVals = new object[2];
DataRow dr;
// Создаем новые строки и добавляем их в DataRowCollection
for (int i = 0; i < 5; i++)
{
		myVals[0] = i;
		myVals[1] = "Name " + i;
		dr = myTable.NewRow();
		dr.ItemArray = myVals;
		myTable.Rows.Add(dr);
}
// А теперь выводим каждое из значений
foreach(DataRow r in myTable.Rows)
{
		foreach(DataColumn c in myTable.Columns)
			Console.WriteLine(r[c]);
}
Описание слайда:
Свойство ItemArray // Объявляем массив object [] myVals = new object[2]; DataRow dr; // Создаем новые строки и добавляем их в DataRowCollection for (int i = 0; i < 5; i++) { myVals[0] = i; myVals[1] = "Name " + i; dr = myTable.NewRow(); dr.ItemArray = myVals; myTable.Rows.Add(dr); } // А теперь выводим каждое из значений foreach(DataRow r in myTable.Rows) { foreach(DataColumn c in myTable.Columns) Console.WriteLine(r[c]); }

Слайд 17





Свойства класса DataTable
Описание слайда:
Свойства класса DataTable

Слайд 18





Создание объекта DataTable
// Создаем объект DataTable
DataTable inventoryTable = new DataTable(“Invetory”);
// Объявляем переменную DataColumn
DataColumn myDataColumn;
// Создаем столбец CarID
myDataColumn = new DataColumn();
myDataColumn.DataType = Type.GetType("System.Int32");
myDataColumn.ColumnName = "CarID";
myDataColumn.ReadOnly = true;
myDataColumn.AllowDBNull = false;
myDataColumn.Unique = true;
// Настраиваем CarID как счетчик и добавляем его в таблицу
myDataColumn.AutoIncrement = true;
myDataColumn.AutoIncrementSeed = 1000;
myDataColumn.AutoIncrementStep = 10;
inventoryTable.Columns.Add(myDataColumn);
Описание слайда:
Создание объекта DataTable // Создаем объект DataTable DataTable inventoryTable = new DataTable(“Invetory”); // Объявляем переменную DataColumn DataColumn myDataColumn; // Создаем столбец CarID myDataColumn = new DataColumn(); myDataColumn.DataType = Type.GetType("System.Int32"); myDataColumn.ColumnName = "CarID"; myDataColumn.ReadOnly = true; myDataColumn.AllowDBNull = false; myDataColumn.Unique = true; // Настраиваем CarID как счетчик и добавляем его в таблицу myDataColumn.AutoIncrement = true; myDataColumn.AutoIncrementSeed = 1000; myDataColumn.AutoIncrementStep = 10; inventoryTable.Columns.Add(myDataColumn);

Слайд 19





Создание объекта DataTable
// Создаем столбец Make и добавляем его в таблицу
myDataColumn = new DataColumn();
myDataColumn.DataType = Type.GetType("System.String");
myDataColumn.ColumnName = "Make";
inventoryTable.Columns.Add(myDataColumn);
// Создаем столбец Color и добавляем его в таблицу
myDataColumn = new DataColumn();
myDataColumn.DataType = Type.GetType("System.String");
myDataColumn.ColumnName = "Color";
inventoryTable.Columns.Add(myDataColumn);
// Создаем и добавляем последний столбец — PetName
myDataColumn = new DataColumn();
myDataColumn.DataType = Type.GetType("System.String");
myDataColumn.ColumnName = "PetName";
myDataColumn.AllowDbNull = true;
inventoryTable.Columns.Add(myDataColumn);
Описание слайда:
Создание объекта DataTable // Создаем столбец Make и добавляем его в таблицу myDataColumn = new DataColumn(); myDataColumn.DataType = Type.GetType("System.String"); myDataColumn.ColumnName = "Make"; inventoryTable.Columns.Add(myDataColumn); // Создаем столбец Color и добавляем его в таблицу myDataColumn = new DataColumn(); myDataColumn.DataType = Type.GetType("System.String"); myDataColumn.ColumnName = "Color"; inventoryTable.Columns.Add(myDataColumn); // Создаем и добавляем последний столбец — PetName myDataColumn = new DataColumn(); myDataColumn.DataType = Type.GetType("System.String"); myDataColumn.ColumnName = "PetName"; myDataColumn.AllowDbNull = true; inventoryTable.Columns.Add(myDataColumn);

Слайд 20





Определяем первичный ключ
// В качестве первичного ключа используем столбец CarID
// Первичный ключ может быть композитным, поэтому
// используется массив объектов DataColumn
DataColumn [ ] PK = new DataColumn[1];
PK[0] = inventoryTable.Columns[“CarID”];
inventoryTable.PrimaryKey = PK;
Описание слайда:
Определяем первичный ключ // В качестве первичного ключа используем столбец CarID // Первичный ключ может быть композитным, поэтому // используется массив объектов DataColumn DataColumn [ ] PK = new DataColumn[1]; PK[0] = inventoryTable.Columns[“CarID”]; inventoryTable.PrimaryKey = PK;

Слайд 21





Заполняем данными и отображаем
// Пусть уже есть массив типа ArrayList объектов Car
// Последовательно создаем строки и заполняем их.
	foreach(Car c in arTheCars)
	{
		DataRow newRow;
		newRow = inventoryTable.NewRow();
		newRow["Make"] = c.make;
		newRow["Color"] = c.color;
		newRow["PetName"] = c.petName;
		inventoryTable.Rows.Add(newRow);
	}
			
// Пусть есть объект DataGrid. 
// Связываем таблицу с этим объектом
	CarDataGrid.DataSource = inventoryTable;
Описание слайда:
Заполняем данными и отображаем // Пусть уже есть массив типа ArrayList объектов Car // Последовательно создаем строки и заполняем их. foreach(Car c in arTheCars) { DataRow newRow; newRow = inventoryTable.NewRow(); newRow["Make"] = c.make; newRow["Color"] = c.color; newRow["PetName"] = c.petName; inventoryTable.Rows.Add(newRow); } // Пусть есть объект DataGrid. // Связываем таблицу с этим объектом CarDataGrid.DataSource = inventoryTable;

Слайд 22





Можно и так
// Пусть уже есть массив типа ArrayList объектов Car
// Последовательно создаем строки и заполняем их.
	foreach(Car c in arTheCars)
	{
		DataRow newRow;
		newRow = inventoryTable.NewRow();
		newRow[1] = c.make;
		newRow[2] = c.color;
		newRow[3] = c.petName;
		inventoryTable.Rows.Add(newRow);
	}
			
// Пусть есть объект DataGrid. 
// Связываем таблицу с этим объектом
	CarDataGrid.DataSource = inventoryTable;
Описание слайда:
Можно и так // Пусть уже есть массив типа ArrayList объектов Car // Последовательно создаем строки и заполняем их. foreach(Car c in arTheCars) { DataRow newRow; newRow = inventoryTable.NewRow(); newRow[1] = c.make; newRow[2] = c.color; newRow[3] = c.petName; inventoryTable.Rows.Add(newRow); } // Пусть есть объект DataGrid. // Связываем таблицу с этим объектом CarDataGrid.DataSource = inventoryTable;

Слайд 23





Удаление строк из таблицы
protected void btnRemoveRow_Click (object sender, System.EventArgs e)
{
	try
	{	inventoryTable.Rows[(int.Parse(txtRemove.Text))].Delete();
		inventoryTable.AcceptChanges();
	}
	catch(Exception ex)
	{	MessageBox.Show(ex.Message);
	}
}
Описание слайда:
Удаление строк из таблицы protected void btnRemoveRow_Click (object sender, System.EventArgs e) { try { inventoryTable.Rows[(int.Parse(txtRemove.Text))].Delete(); inventoryTable.AcceptChanges(); } catch(Exception ex) { MessageBox.Show(ex.Message); } }

Слайд 24





Применение фильтров и порядка сортировки
// Создаем фильтр для отбора
string filterStr = "Make='" + txtMake.Text + "'";
string strMake = null;
// Находим все строки, соответсвующие нашему условию
DataRow[] makes = inventoryTable.Select(filterStr);
//  Выводим информацию о найденных строках
if(makes.Length == 0) 
        { MessageBox.Show("Sorry, no cars...", "Selection error!"); 
         }
else  {	for (int i = 0; i < makes.Length; i++)
		{	DataRow temp = makes[i];
			strMake += temp["PetName"].ToString() + "\n";
		}
		MessageBox.Show(strMake, txtMake.Text + " type(s):");
	}
Описание слайда:
Применение фильтров и порядка сортировки // Создаем фильтр для отбора string filterStr = "Make='" + txtMake.Text + "'"; string strMake = null; // Находим все строки, соответсвующие нашему условию DataRow[] makes = inventoryTable.Select(filterStr); // Выводим информацию о найденных строках if(makes.Length == 0) { MessageBox.Show("Sorry, no cars...", "Selection error!"); } else { for (int i = 0; i < makes.Length; i++) { DataRow temp = makes[i]; strMake += temp["PetName"].ToString() + "\n"; } MessageBox.Show(strMake, txtMake.Text + " type(s):"); }

Слайд 25





Применение фильтров и порядка сортировки
DataRow[] properIDs;
string newFilterStr = "ID > '1030'";
properIDs = inventoryTable.Select(newFilterStr,”PetName”);
string strIDs = null;
for(int i = 0; i < properIDs.Length; i++)
{
	DataRow temp = properIDs[i];
	strIDs += temp["PetName"].ToString() 
	   + " is ID " + temp["ID"] + "\n";	
}
MessageBox.Show(strIDs, "Pet names of cars where ID > 1030");
Описание слайда:
Применение фильтров и порядка сортировки DataRow[] properIDs; string newFilterStr = "ID > '1030'"; properIDs = inventoryTable.Select(newFilterStr,”PetName”); string strIDs = null; for(int i = 0; i < properIDs.Length; i++) { DataRow temp = properIDs[i]; strIDs += temp["PetName"].ToString() + " is ID " + temp["ID"] + "\n"; } MessageBox.Show(strIDs, "Pet names of cars where ID > 1030");

Слайд 26





Внесение изменений в строки
protected void btnChange_Click (object sender, System.EventArgs e)
{
	// Создаем фильтр для отбора строк
	string filterStr = "Make='BMW'";
	string strMake = null;
	// Получаем строки
	DataRow[] makes = 	inventoryTable.Select(filterStr);
	//  Изменяем их
	for(int i = 0; i < makes.Length; i++)
	{
		DataRow temp = makes[i];
		strMake += temp["Make"] = "Colt";		
		makes[i] = temp;
	}
}
Описание слайда:
Внесение изменений в строки protected void btnChange_Click (object sender, System.EventArgs e) { // Создаем фильтр для отбора строк string filterStr = "Make='BMW'"; string strMake = null; // Получаем строки DataRow[] makes = inventoryTable.Select(filterStr); // Изменяем их for(int i = 0; i < makes.Length; i++) { DataRow temp = makes[i]; strMake += temp["Make"] = "Colt"; makes[i] = temp; } }

Слайд 27





Элемент управления DataGrid
DataRow.BeginEdit();
DataRow.EndEdit();
DataRow.CancelEdit();
Описание слайда:
Элемент управления DataGrid DataRow.BeginEdit(); DataRow.EndEdit(); DataRow.CancelEdit();

Слайд 28





Тип DataView
Специальным образом настроенное отображение данных из таблицы
Для одной и той же таблицы можно создать неограниченное число представлений
Описание слайда:
Тип DataView Специальным образом настроенное отображение данных из таблицы Для одной и той же таблицы можно создать неограниченное число представлений

Слайд 29





Члены класса DataView
Описание слайда:
Члены класса DataView

Слайд 30





Тип DataView
// Переменные класса
	DataView redCarsView;
	DataView coltsView;
. . . . . . . .
// Определяем базовую таблицу представлений
	redCarsView = new DataView(inventoryTable);
	coltsView = new DataView(inventoryTable);
// Конфигурируем фильтры
	redCarsView.RowFilter = "Color = 'red'";
	coltsView.RowFilter = "Make = 'colt'";
// Привязываем к элементам управления
	RedCarViewGrid.DataSource = redCarsView;
	ColtsViewGrid.DataSource = coltsView;
Описание слайда:
Тип DataView // Переменные класса DataView redCarsView; DataView coltsView; . . . . . . . . // Определяем базовую таблицу представлений redCarsView = new DataView(inventoryTable); coltsView = new DataView(inventoryTable); // Конфигурируем фильтры redCarsView.RowFilter = "Color = 'red'"; coltsView.RowFilter = "Make = 'colt'"; // Привязываем к элементам управления RedCarViewGrid.DataSource = redCarsView; ColtsViewGrid.DataSource = coltsView;

Слайд 31





Класс DataSet
Создаваемый в ОП набор таблиц, связанных между собой отношениями и снабженными средствами проверки целостности данных
Свойство Tables – набор таблиц (DataTableCollection)
Свойство Relations – отношения между таблицами (DataRelationCollection)
Описание слайда:
Класс DataSet Создаваемый в ОП набор таблиц, связанных между собой отношениями и снабженными средствами проверки целостности данных Свойство Tables – набор таблиц (DataTableCollection) Свойство Relations – отношения между таблицами (DataRelationCollection)

Слайд 32





Свойства DataSet
Описание слайда:
Свойства DataSet

Слайд 33





Методы DataSet
Описание слайда:
Методы DataSet

Слайд 34





Методы DataSet
Описание слайда:
Методы DataSet

Слайд 35





Создание объекта DataSet
Описание слайда:
Создание объекта DataSet

Слайд 36





Создание объекта DataSet
// Inventory DataTable.
private DataTable inventoryTable = new DataTable("Inventory");
// Customers DataTable.
private DataTable customersTable = 
					new DataTable("Customers");
// Orders DataTable.
private DataTable ordersTable = new DataTable("Orders");
// Our DataSet
private DataSet carsDataSet = new DataSet("CarDataSet");
Описание слайда:
Создание объекта DataSet // Inventory DataTable. private DataTable inventoryTable = new DataTable("Inventory"); // Customers DataTable. private DataTable customersTable = new DataTable("Customers"); // Orders DataTable. private DataTable ordersTable = new DataTable("Orders"); // Our DataSet private DataSet carsDataSet = new DataSet("CarDataSet");

Слайд 37





Создадим два простых класса
public class Car
{
	// Переменные мы объявляем как public исключительно для упрощения доступа  к ним 
	public string petName, make, color;
	public Car (string petName, string make, string Color)
	{
		this.petName = petName;
		this.color = color;
		this.make = make;
	}
}

public class Customer
{
	public Customer (string fName, string lName, int currentOrder)
	{
		this.firstName = fName;
		this.lastName = lName;
		this.currCarOrder = currentOrder;
	}
	public string firstName, lastName;
	public int currCarOrder;
}
Описание слайда:
Создадим два простых класса public class Car { // Переменные мы объявляем как public исключительно для упрощения доступа к ним public string petName, make, color; public Car (string petName, string make, string Color) { this.petName = petName; this.color = color; this.make = make; } } public class Customer { public Customer (string fName, string lName, int currentOrder) { this.firstName = fName; this.lastName = lName; this.currCarOrder = currentOrder; } public string firstName, lastName; public int currCarOrder; }

Слайд 38





Списки автомобилей и заказчиков
private ArrayList arTheCars, arTheCustomers;

public mainForm()
{
	// Заполняем массив автомобилей соответствующими объектами 
 	arTheCars = new ArrayList();
	arTheCars.Add(new Car("Chucky", "BMW", "Green"));
	...
	// Производим ту же операцию с массивом заказчиков
	arTheCustomers = new ArrayList();
	arTheCustomers.Add(new Customer("Dave", "Brenner", 1020));
	...
	// Создаем объекты DataTable (самым обычным способом, рассмотренным в предыдущих  разделах) 
	MakeInventoryTable();
	MakeCustomerTable();
	MakeOrderTable();
		
	// Создаем объект DataRelation (об этом чуть позже)
	BuildTableRelationship();

	// Привязываем две таблицы к элементам управления DataGrid (первый параметр — 
	// DataSet, второй — таблица в DataSet) 
	CarDataGrid.SetDataBinding(carsDataSet, "Inventory");
	CustomerDataGrid.SetDataBinding(carsDataSet, "Customers");
}
Описание слайда:
Списки автомобилей и заказчиков private ArrayList arTheCars, arTheCustomers; public mainForm() { // Заполняем массив автомобилей соответствующими объектами arTheCars = new ArrayList(); arTheCars.Add(new Car("Chucky", "BMW", "Green")); ... // Производим ту же операцию с массивом заказчиков arTheCustomers = new ArrayList(); arTheCustomers.Add(new Customer("Dave", "Brenner", 1020)); ... // Создаем объекты DataTable (самым обычным способом, рассмотренным в предыдущих разделах) MakeInventoryTable(); MakeCustomerTable(); MakeOrderTable(); // Создаем объект DataRelation (об этом чуть позже) BuildTableRelationship(); // Привязываем две таблицы к элементам управления DataGrid (первый параметр — // DataSet, второй — таблица в DataSet) CarDataGrid.SetDataBinding(carsDataSet, "Inventory"); CustomerDataGrid.SetDataBinding(carsDataSet, "Customers"); }

Слайд 39





Добавляем таблицу в DataSet
private void MakeOrderTable()
{
...
// Добавляем таблицу в DataSet
carsDataSet.Tables.Add(customerstable);
		
// Создаем столбцы OrderID, CustID и CarID и добавляем их в таблицу 
		...
// Назначаем столбец CarID первичным ключом
		...
// Добавляем несколько заказов
for(int i = 0; i < arTheCustomers.Count; i++)
	{
		DataRow newRow;
		newRow = ordersTable.NewRow();
		Customer c = (Customer)arTheCustomers[i];
		newRow["CustID"] = i;
		newRow["CarID"] = c.currCarOrder;
		carsDataSet.Tables["Orders"].Rows.Add(newRow);
	}
}
Описание слайда:
Добавляем таблицу в DataSet private void MakeOrderTable() { ... // Добавляем таблицу в DataSet carsDataSet.Tables.Add(customerstable); // Создаем столбцы OrderID, CustID и CarID и добавляем их в таблицу ... // Назначаем столбец CarID первичным ключом ... // Добавляем несколько заказов for(int i = 0; i < arTheCustomers.Count; i++) { DataRow newRow; newRow = ordersTable.NewRow(); Customer c = (Customer)arTheCustomers[i]; newRow["CustID"] = i; newRow["CarID"] = c.currCarOrder; carsDataSet.Tables["Orders"].Rows.Add(newRow); } }

Слайд 40





Моделируем отношения между таблицами
private void BuildTableRelationShip()
{
		// Создаем объект DataRelation
		DataRelation dr = new DataRelation("CustomerOrder", 
		// Родительская таблица
		carsDataSet.Tables["Customers"].Columns["CustID"], 
		// Подчиненная таблица
		carsDataSet.Tables["Orders"].Columns["CustID"];
		// Добавляем объект DataRelation в DataSet
		carsDataSet.Relations.Add(dr);
		// Создаем еще один объект DataRelation
		dr = new DataRelation("InventoryOrder", 
		// Родительская таблица
		carsDataSet.Tables["Inventory"].Columns["CarID"], 
		// Подчиненная таблица
		carsDataSet.Tables["Orders"].Columns["CarID"];
		// Добавляем и этот объект DataRelation в DataSet
		carsDataSet.Relations.Add(dr);
}
Описание слайда:
Моделируем отношения между таблицами private void BuildTableRelationShip() { // Создаем объект DataRelation DataRelation dr = new DataRelation("CustomerOrder", // Родительская таблица carsDataSet.Tables["Customers"].Columns["CustID"], // Подчиненная таблица carsDataSet.Tables["Orders"].Columns["CustID"]; // Добавляем объект DataRelation в DataSet carsDataSet.Relations.Add(dr); // Создаем еще один объект DataRelation dr = new DataRelation("InventoryOrder", // Родительская таблица carsDataSet.Tables["Inventory"].Columns["CarID"], // Подчиненная таблица carsDataSet.Tables["Orders"].Columns["CarID"]; // Добавляем и этот объект DataRelation в DataSet carsDataSet.Relations.Add(dr); }

Слайд 41





Свойства типа DataRelation
Описание слайда:
Свойства типа DataRelation

Слайд 42





Переход между таблицами, участвующими в отношении
	string strInfo = "";   
       DataRow drCust = null;
	DataRow[ ] drsOrder = null;

	int theCust = int.Parse(this.txtCustID.Text); // Получаем CustID из текстового поля

	// Теперь, основываясь на этом CustID, получаем всю строку из таблицы  Customers 
	drCust = carsDataSet.Tables["Customers"].Rows[theCust];
	strInfo += "Cust #" + drCust["CustID"].ToString() + "\n";

	// Теперь производим переход от таблицы Customers в таблицу Orders 
	drsOrder = drCust.GetChildRows(carsDataSet.Relations["CustomerOrder"]);

	// Получаем имя заказчика
	foreach(DataRow r in drsOrder) strInfo += "Order Number: " + r["OrderID"] + "\n";

	// Теперь переходим от таблицы Orders к таблице Inventory 
	DataRow[ ] drsInv = 	drsOrder[0].GetParentRows(carsDataSet.Relations["InventoryOrder"]);

	// Получаем информацию об автомобилях
	foreach(DataRow r in drsInv)
	{	strInfo += "Make: " + r["Make"] + "\n";
		strInfo += "Color: " + r["Color"] + "\n";
		strInfo += "PetName: " + r["PetName"] + "\n";
	}

	MessageBox.Show(strInfo, "Info based on cust ID");
Описание слайда:
Переход между таблицами, участвующими в отношении string strInfo = ""; DataRow drCust = null; DataRow[ ] drsOrder = null; int theCust = int.Parse(this.txtCustID.Text); // Получаем CustID из текстового поля // Теперь, основываясь на этом CustID, получаем всю строку из таблицы Customers drCust = carsDataSet.Tables["Customers"].Rows[theCust]; strInfo += "Cust #" + drCust["CustID"].ToString() + "\n"; // Теперь производим переход от таблицы Customers в таблицу Orders drsOrder = drCust.GetChildRows(carsDataSet.Relations["CustomerOrder"]); // Получаем имя заказчика foreach(DataRow r in drsOrder) strInfo += "Order Number: " + r["OrderID"] + "\n"; // Теперь переходим от таблицы Orders к таблице Inventory DataRow[ ] drsInv = drsOrder[0].GetParentRows(carsDataSet.Relations["InventoryOrder"]); // Получаем информацию об автомобилях foreach(DataRow r in drsInv) { strInfo += "Make: " + r["Make"] + "\n"; strInfo += "Color: " + r["Color"] + "\n"; strInfo += "PetName: " + r["PetName"] + "\n"; } MessageBox.Show(strInfo, "Info based on cust ID");

Слайд 43





Получаем информацию о таблицах, подчиненных по отношению к таблице 

protected void btnGetChildRels_Click (object sender, System.EventArgs e)
{
	DataRelationCollection relCol;
	DataRow[ ] arrRows;
	string info = "";
	relCol = carsDataSet.Tables["inventory"].ChildRelations;

	info += "\tRelation is called: " + relCol[0].RelationName + "\n\n";

	// При помощи цикла проходим по всем отношениям и выводим о них  информацию: 
	foreach(DataRelation dr in relCol)
	{
		foreach(DataRow r in inventoryTable.Rows)
		{
			arrRows = r.GetChildRows(dr);
				
			// Выводим значения каждого столбца в строке
			for (int i = 0; i < arrRows.Length; i++)
			{
				foreach(DataColumn dc in arrRows[i].Table.Columns)
						info += "\t" + arrRows[i][dc];
				info += "\n";
			}
			MessageBox.Show(info, "Data in Orders Table obtained by child relations");
		}
}
Описание слайда:
Получаем информацию о таблицах, подчиненных по отношению к таблице protected void btnGetChildRels_Click (object sender, System.EventArgs e) { DataRelationCollection relCol; DataRow[ ] arrRows; string info = ""; relCol = carsDataSet.Tables["inventory"].ChildRelations; info += "\tRelation is called: " + relCol[0].RelationName + "\n\n"; // При помощи цикла проходим по всем отношениям и выводим о них информацию: foreach(DataRelation dr in relCol) { foreach(DataRow r in inventoryTable.Rows) { arrRows = r.GetChildRows(dr); // Выводим значения каждого столбца в строке for (int i = 0; i < arrRows.Length; i++) { foreach(DataColumn dc in arrRows[i].Table.Columns) info += "\t" + arrRows[i][dc]; info += "\n"; } MessageBox.Show(info, "Data in Orders Table obtained by child relations"); } }

Слайд 44





Запись объектов DataSet в формате XML
protected void btnToXML_Click (object sender, System.EventArgs e)
	{
		carsDataSet.WriteXml("cars.xml");
		MessageBox.Show("Wrote CarDataSet to XML file in app directory");
		btnReadXML.Enabled = true;
	}
Описание слайда:
Запись объектов DataSet в формате XML protected void btnToXML_Click (object sender, System.EventArgs e) { carsDataSet.WriteXml("cars.xml"); MessageBox.Show("Wrote CarDataSet to XML file in app directory"); btnReadXML.Enabled = true; }

Слайд 45





Чтение объектов DataSet в формате XML
protected void btnReadXML_Click (object sender, System.EventArgs e)
{
		// Очищаем и удаляем имеющийся объект DataSet
		carsDataSet.Clear();
		carsDataSet.Dispose();
		MessageBox.Show("Just cleared data set...");
		carsDataSet = new DataSet("CarDataSet");
		carsDataSet.ReadXml("Cars.xml");
		MessageBox.Show("Reconstructed data set from XML file...");
		btnReadXML.Enabled = false;
		// Настраиваем привязки к элементам управления DataGrid 
		CarDataGrid.SetDataBinding(carsDataSet, "Inventory");
		CustomerDataGrid.SetDataBinding(carsDataSet, "Customers");
}
Описание слайда:
Чтение объектов DataSet в формате XML protected void btnReadXML_Click (object sender, System.EventArgs e) { // Очищаем и удаляем имеющийся объект DataSet carsDataSet.Clear(); carsDataSet.Dispose(); MessageBox.Show("Just cleared data set..."); carsDataSet = new DataSet("CarDataSet"); carsDataSet.ReadXml("Cars.xml"); MessageBox.Show("Reconstructed data set from XML file..."); btnReadXML.Enabled = false; // Настраиваем привязки к элементам управления DataGrid CarDataGrid.SetDataBinding(carsDataSet, "Inventory"); CustomerDataGrid.SetDataBinding(carsDataSet, "Customers"); }

Слайд 46





Управляемые провайдеры ADO.NET
Шлюз к хранилищу данных
OLE DB
SQL Server
MS Access
Oracle
SQL (MS SQL Server)
Описание слайда:
Управляемые провайдеры ADO.NET Шлюз к хранилищу данных OLE DB SQL Server MS Access Oracle SQL (MS SQL Server)

Слайд 47





Пространство имен System.Data.OleDb
Описание слайда:
Пространство имен System.Data.OleDb

Слайд 48





Установление соединения с OleDbConnection
OleDbConnection cn = new OleDbConnection();
// MS Access
 cn.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;" +
			 @"data source = D:\Access DB\cars.mdb";     
// SQL Server
cn.ConnectionString = "Provider=SQLOLEDB.1;" +
				"Integrated Security=SSPI;" + 
				"Persist Security Info=False;" + 
				"Initial Catalog=Cars;" + 
				"Data Source=(local);";
Описание слайда:
Установление соединения с OleDbConnection OleDbConnection cn = new OleDbConnection(); // MS Access cn.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;" + @"data source = D:\Access DB\cars.mdb"; // SQL Server cn.ConnectionString = "Provider=SQLOLEDB.1;" + "Integrated Security=SSPI;" + "Persist Security Info=False;" + "Initial Catalog=Cars;" + "Data Source=(local);";

Слайд 49





Члены класса OleDbConnection
Описание слайда:
Члены класса OleDbConnection

Слайд 50





Объектно-ориентированное построение команды SQL
Класс OleDbCommand
Описание слайда:
Объектно-ориентированное построение команды SQL Класс OleDbCommand

Слайд 51





Пример построения SQL-запроса
// Первый вариант
string strSQL = "SELECT Make FROM Inventory WHERE Color='Red'"; 
OleDbCommand myCommand = new OleDbCommand(strSQL, cn);
// Второй вариант
string strSQL = "SELECT Make FROM Inventory WHERE Color='Red'"; 
OleDbCommand myCommand = new OleDbCommand();
myCommand.Connection = cn;
myCommand.CommandText = strSQL;
Описание слайда:
Пример построения SQL-запроса // Первый вариант string strSQL = "SELECT Make FROM Inventory WHERE Color='Red'"; OleDbCommand myCommand = new OleDbCommand(strSQL, cn); // Второй вариант string strSQL = "SELECT Make FROM Inventory WHERE Color='Red'"; OleDbCommand myCommand = new OleDbCommand(); myCommand.Connection = cn; myCommand.CommandText = strSQL;

Слайд 52





Обращение к хранимой процедуре
// Открываем соединение с источником данных
OleDbConnection cn = new OleDbConnection();
cn.ConnectionString = 
		"Provider=SQLOLEDB.1;" +
		"Integrated security=SSPI;" +
		"Persist Security Info=False;" +
		"Initial Catalog=Cars;" +
		"Data Source=BIGMANU;";
cn.Open();
// А теперь создаем и настраиваем объект OleDbCommand для
//  хранимой процедуры: 
OleDbCommand myCommand = new OleDbCommand("GetPetName", cn);
myCommand.CommandType = CommandType.StoredProcedure;
Описание слайда:
Обращение к хранимой процедуре // Открываем соединение с источником данных OleDbConnection cn = new OleDbConnection(); cn.ConnectionString = "Provider=SQLOLEDB.1;" + "Integrated security=SSPI;" + "Persist Security Info=False;" + "Initial Catalog=Cars;" + "Data Source=BIGMANU;"; cn.Open(); // А теперь создаем и настраиваем объект OleDbCommand для // хранимой процедуры: OleDbCommand myCommand = new OleDbCommand("GetPetName", cn); myCommand.CommandType = CommandType.StoredProcedure;

Слайд 53





Передача параметров хранимым процедурам
// Создаем объект для наших параметров
OleDbparameter theParam = new OleDbParameter();
// Параметр для передачи хранимой процедуре
theParam.ParameterName = "@carID";
theParam.DbType = OleDbType,Integer;
theParam.Direction = ParameterDirecton.Input;
theParam.Value = 1; // CarID = 1
myCommand.Parameters.Add(theParam);
// Параметр для возврата значений из хранимой процедуры
theParam = new OleDbParameter();
theParam.ParameterName = "@PetName";
theParam.DbType = OleDbType.Char;
theParam.Size = 20;
theParam.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(theParam);
Описание слайда:
Передача параметров хранимым процедурам // Создаем объект для наших параметров OleDbparameter theParam = new OleDbParameter(); // Параметр для передачи хранимой процедуре theParam.ParameterName = "@carID"; theParam.DbType = OleDbType,Integer; theParam.Direction = ParameterDirecton.Input; theParam.Value = 1; // CarID = 1 myCommand.Parameters.Add(theParam); // Параметр для возврата значений из хранимой процедуры theParam = new OleDbParameter(); theParam.ParameterName = "@PetName"; theParam.DbType = OleDbType.Char; theParam.Size = 20; theParam.Direction = ParameterDirection.Output; myCommand.Parameters.Add(theParam);

Слайд 54





Вызов хранимой процедуры
// Создаем объект для наших параметров
myCommand.ExecuteNonQuery();
// Выводим результат
Console.WriteLine
     (“Car ID: “+myCommand.Parameters[“@CarID”].Value);
Console.WriteLine
     (“PetName: “+myCommand.Parameters[“@petName”].Value);
Описание слайда:
Вызов хранимой процедуры // Создаем объект для наших параметров myCommand.ExecuteNonQuery(); // Выводим результат Console.WriteLine (“Car ID: “+myCommand.Parameters[“@CarID”].Value); Console.WriteLine (“PetName: “+myCommand.Parameters[“@petName”].Value);

Слайд 55





Работа с OleDbDataReader
// Первый шаг: устанавливаем соединение
OleDbConnection cn = new OleDbConnection();
cn.ConnectionString = @"Provider=Microsoft.JET.OLEDB.4.0;"+
@"data source = D:\Access DB\cars.mdb";
cn.Open();
// Второй шаг: создаем команду SQL
string strSQL = "SELECT Make FROM Inventory WHERE Color='Red'";
OleDbCommand myCommand = new OleDbCommand(strSQL, cn);
			
// Третий шаг: получаем объект OleDbDataReader при помощи метода 
ExecuteReader() 
OleDbDataReader myDataReader;
myDataReader = myCommand.ExecuteReader();
// Четвертый шаг: проходим циклом по всем возращаемым данным 
while (myDataReader.Read())
{	Console.WriteLine("Red car: " + myDataReader["Make"].ToString());
}
myDataReader.Close();
cn.Close();
Описание слайда:
Работа с OleDbDataReader // Первый шаг: устанавливаем соединение OleDbConnection cn = new OleDbConnection(); cn.ConnectionString = @"Provider=Microsoft.JET.OLEDB.4.0;"+ @"data source = D:\Access DB\cars.mdb"; cn.Open(); // Второй шаг: создаем команду SQL string strSQL = "SELECT Make FROM Inventory WHERE Color='Red'"; OleDbCommand myCommand = new OleDbCommand(strSQL, cn); // Третий шаг: получаем объект OleDbDataReader при помощи метода ExecuteReader() OleDbDataReader myDataReader; myDataReader = myCommand.ExecuteReader(); // Четвертый шаг: проходим циклом по всем возращаемым данным while (myDataReader.Read()) { Console.WriteLine("Red car: " + myDataReader["Make"].ToString()); } myDataReader.Close(); cn.Close();

Слайд 56





Тип OleDbDataAdapter
Извлечь информацию из БД и заполнить ею объект DataTable в DataSet при помощи метода OleDbDataAdapter.Fill
public int Fill(DataSet DS, string tableName);
public int Fill(DataSet DS, string tableName, 
int startRecord, int maxRecord);
Описание слайда:
Тип OleDbDataAdapter Извлечь информацию из БД и заполнить ею объект DataTable в DataSet при помощи метода OleDbDataAdapter.Fill public int Fill(DataSet DS, string tableName); public int Fill(DataSet DS, string tableName, int startRecord, int maxRecord);

Слайд 57





Заполнение данными объекта DataSet при помощи OleDbDataReader
// Шаг 1: открываем соединение с базой данных Cars
OleDbConnection cn = new OleDbConnection();
cn.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0; data source =Cars.mdb";     
cn.Open();
// Шаг 2: Создаем OleDbDataAdapter при помощи команды SELECT 
string sqlSELECT = "SELECT * FROM Inventory";
OleDbDataAdapter dAdapt = new OleDbDataAdapter(sqlSELECT, cn);
// Шаг 3: Создаем и заполняем объект DataSet, а потом закрываем соединение 
DataSet myDS = new DataSet("CarsDataSet");
try			{	
				dAdapt.Fill(myDS, "Inventory");
			}
catch(Exception ex)	{  Console.WriteLine(ex.Message);
			}
finally		{  cn.Close();
			}
// Вспомогательная функция для вывода содержимого таблицы 
PrintTable(myDS);
Описание слайда:
Заполнение данными объекта DataSet при помощи OleDbDataReader // Шаг 1: открываем соединение с базой данных Cars OleDbConnection cn = new OleDbConnection(); cn.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0; data source =Cars.mdb"; cn.Open(); // Шаг 2: Создаем OleDbDataAdapter при помощи команды SELECT string sqlSELECT = "SELECT * FROM Inventory"; OleDbDataAdapter dAdapt = new OleDbDataAdapter(sqlSELECT, cn); // Шаг 3: Создаем и заполняем объект DataSet, а потом закрываем соединение DataSet myDS = new DataSet("CarsDataSet"); try { dAdapt.Fill(myDS, "Inventory"); } catch(Exception ex) { Console.WriteLine(ex.Message); } finally { cn.Close(); } // Вспомогательная функция для вывода содержимого таблицы PrintTable(myDS);

Слайд 58





Примерный вид функции PrintTable
public static void PrintTable(DataSet ds)
{
	// Получаем таблицу Inventory из объекта DataSet
	ConsoleWriteLine("Here is what we have right now: \n");
	DataTable invTable = ds.Tables["Inventory"];
	// Выводим имена столбцов
	for(int curCol = 0; curCol < Invtable.Columns.Count; curCol++)
	{	Console.WriteLine(invTable.Columns[curCol].ColumnName.Trim() + "\t");
	}
	Console.WriteLine();
	// Выводим значения из каждого поля таблицы
	for(int curRow = 0; curRow < invTable.Rows.Count; curRow++)
	{
	    for(int curCol = 0; curCol < Invtable.Columns.Count; curCol++)
		Console.Write(InvTable.Rows[curRow][curCol].ToString().Trim() +"\t");
	    Console.WriteLine()
	}
}
Описание слайда:
Примерный вид функции PrintTable public static void PrintTable(DataSet ds) { // Получаем таблицу Inventory из объекта DataSet ConsoleWriteLine("Here is what we have right now: \n"); DataTable invTable = ds.Tables["Inventory"]; // Выводим имена столбцов for(int curCol = 0; curCol < Invtable.Columns.Count; curCol++) { Console.WriteLine(invTable.Columns[curCol].ColumnName.Trim() + "\t"); } Console.WriteLine(); // Выводим значения из каждого поля таблицы for(int curRow = 0; curRow < invTable.Rows.Count; curRow++) { for(int curCol = 0; curCol < Invtable.Columns.Count; curCol++) Console.Write(InvTable.Rows[curRow][curCol].ToString().Trim() +"\t"); Console.WriteLine() } }

Слайд 59





Пространство имен System.Data.SqlClient
Описание слайда:
Пространство имен System.Data.SqlClient

Слайд 60





Удаление записи при помощи SqlDataAdapter
// Шаг 1: Создаем соединение и объект SqlDataAdapter  (с командой SELECT) 
SqlConnection cn = new SqlConnection 							("server=(local);uid=sa;pwd=;database=Cars");
SqlDataAdapter dAdapt = new SqlDataAdapter("Select * from Inventory", cn);
// Шаг 2: Если в таблице уже присутствует запись с номером,
// совпадающим 	с номером вставляемой нами записи, удаляем ее 
cn.Open();
SqlCommand killCmd = new SqlCommand
        ("Delete from Inventory where CarID = '1111'", cn);
killCmd.ExecuteNonQuery();
cn.Close();
Описание слайда:
Удаление записи при помощи SqlDataAdapter // Шаг 1: Создаем соединение и объект SqlDataAdapter (с командой SELECT) SqlConnection cn = new SqlConnection ("server=(local);uid=sa;pwd=;database=Cars"); SqlDataAdapter dAdapt = new SqlDataAdapter("Select * from Inventory", cn); // Шаг 2: Если в таблице уже присутствует запись с номером, // совпадающим с номером вставляемой нами записи, удаляем ее cn.Open(); SqlCommand killCmd = new SqlCommand ("Delete from Inventory where CarID = '1111'", cn); killCmd.ExecuteNonQuery(); cn.Close();

Слайд 61





Подготовка представления команды INSERT
// Шаг 3: создаем команду INSERT
dAdapt.InsertCommand = new SqlCommand("INSERT INTO Inventory" + 
"(CarID, Make, Color, PetName) VALUES" + "(@CarID, @Make, @Color, @PetName)", cn)";
// Шаг 4: Начинаем работу по созданию параметров для каждого столбца  в таблице Inventory 
SqlParameter workParam = null;
// Параметр для столбца CarID
workParam = d.Adapt.InsertCommand.Parameters.Add(new SqlParameter("@CarID", SqlDbType.Int));
workParam.SourceColumn = "CarID";
workParam.SourceVersion = DataRowVersion.Current;
// Параметр для столбца Make
workParam = d.Adapt.InsertCommand.Parameters.Add(new SqlParameter("@Make", SqlDbType.VarChar));
workParam.SourceColumn = "Make";
workParam.SourceVersion = DataRowVersion.Current;
// Параметр для столбца Color
workParam = d.Adapt.InsertCommand.Parameters.Add(new SqlParameter("@Color", SqlDbType.VarChar));
workParam.SourceColumn = "Color";
workParam.SourceVersion = DataRowVersion.Current;
// Параметр для столбца PetName
workParam = d.Adapt.InsertCommand.Parameters.Add(new SqlParameter("@PetName",SqlDbType.VarChar));
workParam.SourceColumn = "PetName";
workParam.SourceVersion = DataRowVersion.Current;
Описание слайда:
Подготовка представления команды INSERT // Шаг 3: создаем команду INSERT dAdapt.InsertCommand = new SqlCommand("INSERT INTO Inventory" + "(CarID, Make, Color, PetName) VALUES" + "(@CarID, @Make, @Color, @PetName)", cn)"; // Шаг 4: Начинаем работу по созданию параметров для каждого столбца в таблице Inventory SqlParameter workParam = null; // Параметр для столбца CarID workParam = d.Adapt.InsertCommand.Parameters.Add(new SqlParameter("@CarID", SqlDbType.Int)); workParam.SourceColumn = "CarID"; workParam.SourceVersion = DataRowVersion.Current; // Параметр для столбца Make workParam = d.Adapt.InsertCommand.Parameters.Add(new SqlParameter("@Make", SqlDbType.VarChar)); workParam.SourceColumn = "Make"; workParam.SourceVersion = DataRowVersion.Current; // Параметр для столбца Color workParam = d.Adapt.InsertCommand.Parameters.Add(new SqlParameter("@Color", SqlDbType.VarChar)); workParam.SourceColumn = "Color"; workParam.SourceVersion = DataRowVersion.Current; // Параметр для столбца PetName workParam = d.Adapt.InsertCommand.Parameters.Add(new SqlParameter("@PetName",SqlDbType.VarChar)); workParam.SourceColumn = "PetName"; workParam.SourceVersion = DataRowVersion.Current;

Слайд 62





Добавление новой записи
// Шаг 5: Создаем объект DataSet и заполняем его данными из базы данных / на источнике: 
DataSet myDS = new DataSet();
dAdapt.Fill(myDS, "Inventory");
PrintTable(myDS);
// Шаг 6: добавляем новую запись в таблицу в DataSet
DataRow newRow = myDS.Tables["Inventory"].NewRow();
newRow["CarID"] = 1111;
newRow["Make"] = "SlugBug";
newRow["Color"] = "Pink";
newRow["PetName"] = "Cranky";
myDS.Tables["Inventory"].Rows.Add(newRow);
 // Шаг 7: Передаем изменения на источник данных и проверяем это 
try {	dAdapt.Update(myDS, "Inventory");
		myDS.Dispose();
		myDS = new DataSet();
		dAdapt.Fill(myDS, "Inventory");
		PrintTable(myDS);
	}
catch(Exception e)	{  Console.Write(e.ToString()); 
			}
Описание слайда:
Добавление новой записи // Шаг 5: Создаем объект DataSet и заполняем его данными из базы данных / на источнике: DataSet myDS = new DataSet(); dAdapt.Fill(myDS, "Inventory"); PrintTable(myDS); // Шаг 6: добавляем новую запись в таблицу в DataSet DataRow newRow = myDS.Tables["Inventory"].NewRow(); newRow["CarID"] = 1111; newRow["Make"] = "SlugBug"; newRow["Color"] = "Pink"; newRow["PetName"] = "Cranky"; myDS.Tables["Inventory"].Rows.Add(newRow); // Шаг 7: Передаем изменения на источник данных и проверяем это try { dAdapt.Update(myDS, "Inventory"); myDS.Dispose(); myDS = new DataSet(); dAdapt.Fill(myDS, "Inventory"); PrintTable(myDS); } catch(Exception e) { Console.Write(e.ToString()); }

Слайд 63





Изменение записей при помощи SqlDataAdapter
public static void Main()
{
	// Шаг 1: Создаем объект SqlDataAdapter и открываем соединение (аналогично 
	// предыдущему примеру, поэтому эту часть кода опускаем) 
		...
	// Шаг 2: Создаем команду UPADTE
	dAdapt.UpdateCommand = new SqlCommand("UPDATE Inventory SET Make=@Make, 
			Color=@Color, PetName=@PetName WHERE CarID = @CarID", cn);
	// Шаг 3: Создаем объекты параметров для каждого столбца в таблице Inventory. 
	// Все так же, как и в предыдущем примере, только мы помещаем эти параметры 
	// в коллекцию ParameterCollection для UpdateCommand. Например: 
	SqlParameter workParam = null;
	workParam = dAdapt.UpdateCommand.Parameters.Add(new SqlParameter("@CarID", 
								SqlDbType.Int));
	workParam.SourceColumn = "CarID";
	workParam.SourceVersion = DataRowVersion.Current;
	// Делаем то же самое для столбцов PetName, Make и Color 
	...
Описание слайда:
Изменение записей при помощи SqlDataAdapter public static void Main() { // Шаг 1: Создаем объект SqlDataAdapter и открываем соединение (аналогично // предыдущему примеру, поэтому эту часть кода опускаем) ... // Шаг 2: Создаем команду UPADTE dAdapt.UpdateCommand = new SqlCommand("UPDATE Inventory SET Make=@Make, Color=@Color, PetName=@PetName WHERE CarID = @CarID", cn); // Шаг 3: Создаем объекты параметров для каждого столбца в таблице Inventory. // Все так же, как и в предыдущем примере, только мы помещаем эти параметры // в коллекцию ParameterCollection для UpdateCommand. Например: SqlParameter workParam = null; workParam = dAdapt.UpdateCommand.Parameters.Add(new SqlParameter("@CarID", SqlDbType.Int)); workParam.SourceColumn = "CarID"; workParam.SourceVersion = DataRowVersion.Current; // Делаем то же самое для столбцов PetName, Make и Color ...

Слайд 64





Изменение записей при помощи SqlDataAdapter
// Шаг 4: Заполняем данными объект DataSet
DataSet myDS = new DataSet();
dAdapt.Fill(myDS, "Inventory");
PrintTable(myDS);
// Шаг 5: Меняем значения столбцов во второй строке таблицы на 'FooFoo' 
DataRow changeRow = myDS.Tables["Inventory"].Row[1];
changeRow["Make"] = "FooFoo";
changeRow["Color"] = "FooFoo";
changeRow["PetName"] = "FooFoo";
// Шаг 6: Сохраняем данные в базе данных и выводим значения на консоль 
try		{	dAdapt.Update(myDS, "Inventory");
			myDS.Dispose();
			myDS = new DataSet();
			dAdapt.Fill(myDS, "Inventory");
			PrintTable(myDS);
		}
catch(Excception e)	{ Console.Write(e.ToString()); }
}
Описание слайда:
Изменение записей при помощи SqlDataAdapter // Шаг 4: Заполняем данными объект DataSet DataSet myDS = new DataSet(); dAdapt.Fill(myDS, "Inventory"); PrintTable(myDS); // Шаг 5: Меняем значения столбцов во второй строке таблицы на 'FooFoo' DataRow changeRow = myDS.Tables["Inventory"].Row[1]; changeRow["Make"] = "FooFoo"; changeRow["Color"] = "FooFoo"; changeRow["PetName"] = "FooFoo"; // Шаг 6: Сохраняем данные в базе данных и выводим значения на консоль try { dAdapt.Update(myDS, "Inventory"); myDS.Dispose(); myDS = new DataSet(); dAdapt.Fill(myDS, "Inventory"); PrintTable(myDS); } catch(Excception e) { Console.Write(e.ToString()); } }

Слайд 65





Автоматическое создание команд SQL
Утомительно заполнение свойств 
InsertCommand 
UpdateCommand 
DeleteCommand
SqlCommandBuilder
Автоматически настраивает свойства по первоначальной команде SELECT
Должен быть определен первичный ключ
Описание слайда:
Автоматическое создание команд SQL Утомительно заполнение свойств InsertCommand UpdateCommand DeleteCommand SqlCommandBuilder Автоматически настраивает свойства по первоначальной команде SELECT Должен быть определен первичный ключ

Слайд 66





Автоматическое создание команд SQL
public class mainForm : System.Windows.Forms.Form
{
	private SqlConnection cn = new 
				SqlConnection("server=(local);uid=sa;pwd=;database=Cars");

	private SqlDataAdapter dAdapt;
	private SqlCommandbuilder invBuilder;
	private DataSet myDS = new DataSet();
	private System.Windows.Forms.DataGrid dataGrid1;
	private System.Windows.Forms.Button btnUpdateData;
	private System.ComponentMode1.Container components;
public mainForm();
{
	InitializeComponents();
			
	// Создаем исходную команду SELECT
	dAdapt = new SqlDataAdapter("SELECT * from Inventory", cn);

	// А сейчас команды INSERT, UPDATE и DELETE будут сгенерированы  автоматически 
	invBuider = new SqlCommandBuilder(dAdapt);

	// Заполняем DataSet и привязываем к нему DataGrid
	dAdapt.Fill(myDS, "Inventory");
	dataGrid1.DataSource = myDS.Tables["Inventory"].DefaultView;
}
Описание слайда:
Автоматическое создание команд SQL public class mainForm : System.Windows.Forms.Form { private SqlConnection cn = new SqlConnection("server=(local);uid=sa;pwd=;database=Cars"); private SqlDataAdapter dAdapt; private SqlCommandbuilder invBuilder; private DataSet myDS = new DataSet(); private System.Windows.Forms.DataGrid dataGrid1; private System.Windows.Forms.Button btnUpdateData; private System.ComponentMode1.Container components; public mainForm(); { InitializeComponents(); // Создаем исходную команду SELECT dAdapt = new SqlDataAdapter("SELECT * from Inventory", cn); // А сейчас команды INSERT, UPDATE и DELETE будут сгенерированы автоматически invBuider = new SqlCommandBuilder(dAdapt); // Заполняем DataSet и привязываем к нему DataGrid dAdapt.Fill(myDS, "Inventory"); dataGrid1.DataSource = myDS.Tables["Inventory"].DefaultView; }

Слайд 67





Код обновления БД
	private void btnUpdateData_Click(object sender, System.EventArgs e)
	{
		try
		{
			dataGrid1.Refresh();
			dAdapt.Update(myDS, "Inventory");
		}
		catch(Exception ex)
		{
				MessageBox.Show(ex.ToString());
		}		
	}
Описание слайда:
Код обновления БД private void btnUpdateData_Click(object sender, System.EventArgs e) { try { dataGrid1.Refresh(); dAdapt.Update(myDS, "Inventory"); } catch(Exception ex) { MessageBox.Show(ex.ToString()); } }

Слайд 68





Заключение
ADO.NET
System.Data
System.Data.SqlClient
System.Data.OleDb
DataSet – представление в ОП любого количества таблиц и отношений между ними
OleDbDataAdapter, SqlDataAdapter – связывают DataSet с истониками данных
Описание слайда:
Заключение ADO.NET System.Data System.Data.SqlClient System.Data.OleDb DataSet – представление в ОП любого количества таблиц и отношений между ними OleDbDataAdapter, SqlDataAdapter – связывают DataSet с истониками данных



Похожие презентации
Mypresentation.ru
Загрузить презентацию