Your SlideShare is downloading. ×
Лекц- 12
Өгөгдлийн санд засвар хийхэд
DataAdapter ашиглах
DataAdapter өгөгдлийг хүснэгт рүү
ачаалсны дараа холболтыг хаадаг.Үүнээс...
Өгөгдлийн санд засвар хийхэд
DataAdapter ашиглах
 DataAdapter объектын эдгээр
пропертуудуудад тохирох зөв SQL
командуудыг...
CommandBuilder объект
DataTable dt=ds.Tables[“movies”];
//(1) command builder ашиглах
SqlCommandBuilder sb=new
SqlCommandB...
CommandBuilder объект
//(3) хүснэгтээс мөр устгах
dt.rows[4].Delete();
//(4) баганын утгыг засах
dt.Rows[5][“movie_Year”]=...
CommandBuilder объект
CommandBuilder ашиглах үед хоёр
зүйлийг мэдэх байх хэрэгтэй:
 Select команд дотор нэг л хүснэгт за...
Хүснэгтүүдийг холбох
Хүснэгтүүдийн хоорондын холбоос
үүсгэх:
 DataRelation нь DataTable хүснэгтүүдийн
хооронд мастер/ да...
Хүснэгтүүдийг холбох
public DataRelation(
string relationName,
DataColumn parentColumn,
DataColumn childColumn)
DataSet нь...
Хүснэгтүүдийг холбох
DataSet ds=new DataSet();
//(1) киноны хүснэгтийг дүүргэх
String sql=“select movie_ID, movie_Title,
m...
Хүснэгтүүдийг холбох
//(2) найруулагдын хүснэгтийг дүүргэх
sql=“select
director_id,(first_name+’ ’+last_name)AS
fullname F...
Хүснэгтүүдийг холбох
DataRelation relation=new
DataRelation(“directormovies”,parent.Columns[director_I
D],child.Columns[“m...
Гридтэй өгөгдөл холбох
DataGridView нь өгөгдлийн эх
үүсвэртэй комплекс холболтоор
холбогдоно.
 DataSource : өгөгдлийн эх...
Гридтэй өгөгдөл холбох
//дараахь заавраар баганы нэрийн эх үүсвэрээс
авахгүй болгоно.
dataGridView1.AutoGenerateColumns=fa...
Гридтэй өгөгдөл холбох
DataGridView нь эх үүсвэртэй хоёр
чиглэлтэй холболт хийх зөвшөөрдөг.
 Гридэд хийсэн өөрчлөлт хүсн...
Мастер-Дагуул грид
Холбоотой өгөгдлийн сангийн
хүснэгтүүдийн хооронд мастердагуул холбоос хэрэглэх шаардлага
гардаг
Энэ ...
Мастер-Дагуул грид
ds=new DataSet();
DataTable dt=new DataTable(“movies”);
DataTable da=new DataTable(“actors”);
da.Column...
Мастер-Дагуул грид
// мастер-дагуул холбоос үүсгэх
DataRelation rel=new
DataRelation(“movieactor”, dt.Columns[“movieID”], ...
Мастер-Дагуул грид
If((string) dr[“bestPicture”]==“Y”)
drow[“picture”]=oscar;
else drow[“picture”]=nooscar;
dt.Rows.Add(dr...
Мастер-Дагуул грид
DataGridViewImageColumn vic=new
DataGridViewImageColumn();
dataGridView1.Columns.Add(vic);
dataGridView...
Мастер-Дагуул грид
dataGridView1.Columns[0].DataPropertyName=“Picture”;
dataGridView1.Columns[1].DataPropertyName=“Title”;...
Upcoming SlideShare
Loading in...5
×

Лекц 12

225

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
225
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Лекц 12"

  1. 1. Лекц- 12
  2. 2. Өгөгдлийн санд засвар хийхэд DataAdapter ашиглах DataAdapter өгөгдлийг хүснэгт рүү ачаалсны дараа холболтыг хаадаг.Үүнээс хойших өөрчлөлтүүд DataSet дээр явагдана.Анхны эх үүсвэр рүү өөрчлөлтийг илгээхийн тулд DataAdapter нь холболтыг дахин сэргээгээд өөрчлөгдсөн мөрүүдийг өгөгдлийн сан руу илгээнэ. DataAdapter нь InsertCommand, UpdateCommand, DeleteCommand гэсэн гурван команд нь DataAdapter объектын Update методыг дуудахад ажилладаг.
  3. 3. Өгөгдлийн санд засвар хийхэд DataAdapter ашиглах  DataAdapter объектын эдгээр пропертуудуудад тохирох зөв SQL командуудыг оноох хэрэгтэй. Зөв SQL команд байгуулахад CommandBuilder командуудыг ашиглаж болно.  CommandBuilder объект нь DataSet объект дээр хийсэн өөрчлөлтүүдийг анхны эх үүсвэр рүү илгээх SQL командууд үүсгэхэд тохиромжтой байдаг.  CommandBuilder объектыг үүсгээд DataAdapter байгуулагчид дамжуулна. Дараа нь DataAdapter Update методыг дуудагдахад SQL команд үүсч ажиллана.
  4. 4. CommandBuilder объект DataTable dt=ds.Tables[“movies”]; //(1) command builder ашиглах SqlCommandBuilder sb=new SqlCommandBuilder(da); //(2) хүснэгтэнд мөр нэмэх DataRow drow=dt.NewRow(); drow[“movie_Title”]=“Taxi Driver”; drow[“movie_Year”]=“1976”; dt.Rows.Add(drow);
  5. 5. CommandBuilder объект //(3) хүснэгтээс мөр устгах dt.rows[4].Delete(); //(4) баганын утгыг засах dt.Rows[5][“movie_Year”]=“1944”; //(5) өгөгдлийн сан руу өөрчлөлтийг хийх int updates=da.Update(ds,”movies”); MessageBox.Show(“Засагдсан мөр: ”+ updates.ToString());
  6. 6. CommandBuilder объект CommandBuilder ашиглах үед хоёр зүйлийг мэдэх байх хэрэгтэй:  Select команд дотор нэг л хүснэгт заасан байх  Өгөгдлийн сан дэх хүснэгт нь түлхүүр талбартай байх ёстой ба түлхүүр талбар нь Select команд дотор багтсан байх ёстой.
  7. 7. Хүснэгтүүдийг холбох Хүснэгтүүдийн хоорондын холбоос үүсгэх:  DataRelation нь DataTable хүснэгтүүдийн хооронд мастер/ дагуул холбоос тогтоодог. Хоёр хүснэгтийг багануудыг холбож холбоос үүсгэнэ. Эдгээр баганууд нь ижил төрөлтэй байх ёстой ба мастер хүснэгт дэх багана нь үл давхцах утгуудтай байх ёстой.
  8. 8. Хүснэгтүүдийг холбох public DataRelation( string relationName, DataColumn parentColumn, DataColumn childColumn) DataSet нь хүснэгтүүдийн хамаарлыг тодорхойлсон Relations пропертитой байдаг. Relation.Add методыг ашиглан шинэ холбоосыг нэмнэ.
  9. 9. Хүснэгтүүдийг холбох DataSet ds=new DataSet(); //(1) киноны хүснэгтийг дүүргэх String sql=“select movie_ID, movie_Title, movie_DirectorID, movie_Year from movies”; SqlConnection conn=new SqlcConnection(connStr); SqlCommand cmd=new SqlCommand(); SqlDataAdapter da=new SqlDataAdapter(Sql,conn); da.Fill(ds,”movies”);
  10. 10. Хүснэгтүүдийг холбох //(2) найруулагдын хүснэгтийг дүүргэх sql=“select director_id,(first_name+’ ’+last_name)AS fullname From directors”; da.SelectCommand.CommandText=sql; da.Fill(ds,”directors”); //(3) хүснэгтүүдийн хоорондын хамаарлыг тогтоох DataTable parent=ds.Tables[“directors”]; DataTable child=ds.Tables[“movies”];
  11. 11. Хүснэгтүүдийг холбох DataRelation relation=new DataRelation(“directormovies”,parent.Columns[director_I D],child.Columns[“movies_DirectorID”]); //(4)хамаарлыг DataSet-д нэмэх ds.Relations.Add(relation); //(5) найруулагч болон түүний кинонуудыг харуулах Foreach (DataRow r in parent.Rows) { console.WriteLine(r[“fullname”]; foreach (DataRow rc in .GretChildRows(“directorsmovies”)) { Console.WriteLine(“ “+rc[“movie_title”]); } }
  12. 12. Гридтэй өгөгдөл холбох DataGridView нь өгөгдлийн эх үүсвэртэй комплекс холболтоор холбогдоно.  DataSource : өгөгдлийн эх үүсвэрийг холбоно  DataMember : өгөгдлийн эх үүсвэр дэх хүснэгтийн нэрийг зааж өгөх  DataPropertyName : багана тус бүрт өгөгдөл холбох
  13. 13. Гридтэй өгөгдөл холбох //дараахь заавраар баганы нэрийн эх үүсвэрээс авахгүй болгоно. dataGridView1.AutoGenerateColumns=false; //эх үүсвэрийг заах dataGridView1.DataSource=ds; dataGridView1.DataMember=“Movies”; //гридын баганыг хүснэгтийн талбаруудтай холбох dataGridView1.Columns[0].DataPropertyName=“Title” dataGridView1.Columns[1].DataPropertyName=“Year” dataGridView1.Columns[2].DataPropertyName=“Director”
  14. 14. Гридтэй өгөгдөл холбох DataGridView нь эх үүсвэртэй хоёр чиглэлтэй холболт хийх зөвшөөрдөг.  Гридэд хийсэн өөрчлөлт хүснэгтэд  Хүснэгтэд хийсэн өөрчлөлт гридэд харагдана. Грид руу шууд мөр нэмэхийг оролдвол эксепшен үүсэх болно.Учир нь өгөгдөл холбогдсон байгаа контролд шууд мөр нэмэхийг зөвшөөрөхгүй.
  15. 15. Мастер-Дагуул грид Холбоотой өгөгдлийн сангийн хүснэгтүүдийн хооронд мастердагуул холбоос хэрэглэх шаардлага гардаг Энэ холбоост мастер хүснэгтийн нэг мөр нь дагуул хүснэгтийн хэд хэдэн бичлэгтэй холбогдоно.
  16. 16. Мастер-Дагуул грид ds=new DataSet(); DataTable dt=new DataTable(“movies”); DataTable da=new DataTable(“actors”); da.Columns.Add(“movieID”); da.Columns.Add(“firstname”); da.Columns.Add(“lastname”); dt.Columns.Add(“movieID”); dt.Columns.Add(“Title”); dt.Columns.Add(“Year”); dt.Columns.Add(“picture”,typeof(bitmap)); ds.Table.Add(dt); ds.Table.Add(da);
  17. 17. Мастер-Дагуул грид // мастер-дагуул холбоос үүсгэх DataRelation rel=new DataRelation(“movieactor”, dt.Columns[“movieID”], da. Columns[“movieID”]); Ds.Relations.Add(rel); Bitmap oscar=new Bitmap(@”c:oscar.gif”); Bitmap nooscar=new Bitmap(@”c:nooscar.gif”); While(dr.Read()) { DataRow drow=dt.NewRow(); drow[“Title”]=(string)(dr[“movie_Title”]); drow[“Year”]=(int)(dr[“movie_Year”]).ToString(); drow[“movieID”]=(int)(dr[“movie_ID”]);
  18. 18. Мастер-Дагуул грид If((string) dr[“bestPicture”]==“Y”) drow[“picture”]=oscar; else drow[“picture”]=nooscar; dt.Rows.Add(drow); } sql=“select am.movie_ID, actor_first, actor_last from actors a JOIN actor_movie am ON a.actor_ID=am.actor_ID”;
  19. 19. Мастер-Дагуул грид DataGridViewImageColumn vic=new DataGridViewImageColumn(); dataGridView1.Columns.Add(vic); dataGridView1.ColumnCount=3; dataGridView1.Columns[0].Name=“Oscar”; dataGridView1.Columns[1].HeaderText=“Movie_title”; dataGridView1.Columns[2]. HeaderText =“Year”; dataGridView1.DataSource=ds; dataGridView1.DataMember=“movies”; dataGridView2.DataSource=ds; dataGridView2.DataMember=dt.TableName+”.movieactor”;
  20. 20. Мастер-Дагуул грид dataGridView1.Columns[0].DataPropertyName=“Picture”; dataGridView1.Columns[1].DataPropertyName=“Title”; dataGridView1.Columns[2].DataPropertyName=“Year”; dataGridView1.Columns[3].DataPropertyName=“Director”; dataGridView2.Columns[0].DataPropertyName=“firstname”; dataGridView2.Columns[1].DataPropertyName=“lastname”;

×