Реферат: Типизированные наборы данных. Триггеры

Триггер – это ХП, которая реагирует на удаление, изменение и добавление записей.

Пример:

using System;

using System.Text;

using System.Data;

using System.Data.OleDb;

 

namespace ConsoleApplication6

{

class Program

{

static void Main()

{

OleDbConnection mycon = new OleDbConnection( «Provider = Microsoft.Jet.OleDB.4.0;» + «DataSource = C:\\1\\mydb.mdb»);

OleDbCommand mycmd = mycon.CreateCommand();

mycmd.Connection = mycon;

mycon.Open();

string sq = «Select * from stud»;

mycmd.CommandText = sq;

DataSet ds = new DataSet();

OleDbDataAdapter oda = new OleDbDataAdapter(mycmd);

oda.Fill(null);

ds.Tables[0].RowChanged += new DataRowChangeEventHandler( RowIsChanged );

ds.Tables[0].Rows[0][«Fam»] = «Doe»;

mycon.Close();

}

public static void RowIsChanged(Object sender, DataRowChangeEventArgs e)

{

Console.WriteLine(«New row value is: » + e.Row[«Fam»]);

Console.ReadLine();

}

}

}

 

Аналогично изменение:

ds.Tables[0].RowChanging += new DataRowChangeEventHandler(MyProcForCh);

Удаление после завершения:

ds.Tables[0].RowDeleted += new DataRowChangeEventHandler(ProcForDEl);

 

Использование отношений для перемещения по таблицам

Пример:

При считывании таблиц в DataSet связи между таблицами теряются. Допустим, в Access есть 2 таблицы:

· Stud (содержит поля name, grp)

· Range (содержит поля name, range)

Таблицы связаны по полю name. Создадим приложение на основе формы:

Кнопка Load:

private void button1_Click(object sender, EventArgs e)

{

string constr = @«provider = Microsoft.Jet.OleDb.4.0;» + @«data source = C:\Users\Violent\Documents\123.mdf»;

System.Data.OleDb.OleDbConnection myCon = new System.Data.OleDb.OleDbConnection(constr);

string sq = «Select Name, grp from Stud»;

System.Data.OleDb.OleDbCommand cmd = myCon.CreateCommand();

cmd.CommandText = sq;

System.Data.OleDb.OleDbDataAdapter oda1, oda2;

DataSet myDataSet;

myCon.Open();

oda1.Fill(myDataSet, «stud A» );

sq = «Select Name, Range from Range»;

cmd.CommandText = sq;

oda2.Fill(myDataSet, «Range»);

DataSet myDataTable1, myDataTable2;

myDataSet.Relations.Add(«ret», myDataSet.Tables[«stud A»].Columns[«Name»],

myDataSet.Tables[«Range A»].Columns[«Name»]);

Name :textBox1.DataBindings.Add(«Text», myDataTable1, «Name»);

grp :textBox2.DataBindings.Add(«Text», myDataTable1, (string)«grp»);

Range:textBox3.DataBindings.Add(«Text», myDataTable2, (string) «range»);

}

 

Кнопка Show:

private void button2_Click(object sender, EventArgs e)

{

DataRow myDataTable1 = null;

DataRow[] rows = myDataTable1.Table.Select(«Name' » + textBox1.Text + "'");

if (rows.Length > 0 )

{

textBox2.Text = rows[0][«grp»].ToString();

var childrows = rows[0].GetChildRows(«rd»);

textBox3.Text = childrows[0][«Range»].ToString();

}

}

 

Пример:

*вот этот код точно должен работать: *

string con = @«Provider=Microsoft.Jet.OLEDB.4.0.; data source=D:\1.mdb»;

OleDbConnection myconn = new OleDbConnection(con);

string s = «Select name,groop,rate from stud INNER JOIN rate on stud.id=rate.id»;

OleDbCommand cmd = new OleDbCommand();

cmd.CommandText = s;

OleDbDataAdapter ad = new OleDbDataAdapter(s, myconn.ConnectionString);

DataTable table = new DataTable();

table.Locale = System.Globalization.CultureInfo.InvariantCulture;

ad.Fill(table);

dataGridView1.DataSource = table;

еще рефераты
Еще работы по информатике