Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Триггер – это ХП, которая реагирует на удаление, изменение и добавление записей.
Пример:
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;
Дата публикования: 2015-02-03; Прочитано: 174 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!