• Save
Лекц 12
Upcoming SlideShare
Loading in...5
×
 

Лекц 12

on

  • 380 views

 

Statistics

Views

Total Views
380
Views on SlideShare
359
Embed Views
21

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 21

http://ubuse09.blogspot.com 21

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Лекц 12 Лекц 12 Presentation Transcript

    • Лекц- 12
    • Өгөгдлийн санд засвар хийхэд DataAdapter ашиглах DataAdapter өгөгдлийг хүснэгт рүү ачаалсны дараа холболтыг хаадаг.Үүнээс хойших өөрчлөлтүүд DataSet дээр явагдана.Анхны эх үүсвэр рүү өөрчлөлтийг илгээхийн тулд DataAdapter нь холболтыг дахин сэргээгээд өөрчлөгдсөн мөрүүдийг өгөгдлийн сан руу илгээнэ. DataAdapter нь InsertCommand, UpdateCommand, DeleteCommand гэсэн гурван команд нь DataAdapter объектын Update методыг дуудахад ажилладаг.
    • Өгөгдлийн санд засвар хийхэд DataAdapter ашиглах  DataAdapter объектын эдгээр пропертуудуудад тохирох зөв SQL командуудыг оноох хэрэгтэй. Зөв SQL команд байгуулахад CommandBuilder командуудыг ашиглаж болно.  CommandBuilder объект нь DataSet объект дээр хийсэн өөрчлөлтүүдийг анхны эх үүсвэр рүү илгээх SQL командууд үүсгэхэд тохиромжтой байдаг.  CommandBuilder объектыг үүсгээд DataAdapter байгуулагчид дамжуулна. Дараа нь DataAdapter Update методыг дуудагдахад SQL команд үүсч ажиллана.
    • 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);
    • CommandBuilder объект //(3) хүснэгтээс мөр устгах dt.rows[4].Delete(); //(4) баганын утгыг засах dt.Rows[5][“movie_Year”]=“1944”; //(5) өгөгдлийн сан руу өөрчлөлтийг хийх int updates=da.Update(ds,”movies”); MessageBox.Show(“Засагдсан мөр: ”+ updates.ToString());
    • CommandBuilder объект CommandBuilder ашиглах үед хоёр зүйлийг мэдэх байх хэрэгтэй:  Select команд дотор нэг л хүснэгт заасан байх  Өгөгдлийн сан дэх хүснэгт нь түлхүүр талбартай байх ёстой ба түлхүүр талбар нь Select команд дотор багтсан байх ёстой.
    • Хүснэгтүүдийг холбох Хүснэгтүүдийн хоорондын холбоос үүсгэх:  DataRelation нь DataTable хүснэгтүүдийн хооронд мастер/ дагуул холбоос тогтоодог. Хоёр хүснэгтийг багануудыг холбож холбоос үүсгэнэ. Эдгээр баганууд нь ижил төрөлтэй байх ёстой ба мастер хүснэгт дэх багана нь үл давхцах утгуудтай байх ёстой.
    • Хүснэгтүүдийг холбох public DataRelation( string relationName, DataColumn parentColumn, DataColumn childColumn) DataSet нь хүснэгтүүдийн хамаарлыг тодорхойлсон Relations пропертитой байдаг. Relation.Add методыг ашиглан шинэ холбоосыг нэмнэ.
    • Хүснэгтүүдийг холбох 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”);
    • Хүснэгтүүдийг холбох //(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”];
    • Хүснэгтүүдийг холбох 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”]); } }
    • Гридтэй өгөгдөл холбох DataGridView нь өгөгдлийн эх үүсвэртэй комплекс холболтоор холбогдоно.  DataSource : өгөгдлийн эх үүсвэрийг холбоно  DataMember : өгөгдлийн эх үүсвэр дэх хүснэгтийн нэрийг зааж өгөх  DataPropertyName : багана тус бүрт өгөгдөл холбох
    • Гридтэй өгөгдөл холбох //дараахь заавраар баганы нэрийн эх үүсвэрээс авахгүй болгоно. dataGridView1.AutoGenerateColumns=false; //эх үүсвэрийг заах dataGridView1.DataSource=ds; dataGridView1.DataMember=“Movies”; //гридын баганыг хүснэгтийн талбаруудтай холбох dataGridView1.Columns[0].DataPropertyName=“Title” dataGridView1.Columns[1].DataPropertyName=“Year” dataGridView1.Columns[2].DataPropertyName=“Director”
    • Гридтэй өгөгдөл холбох DataGridView нь эх үүсвэртэй хоёр чиглэлтэй холболт хийх зөвшөөрдөг.  Гридэд хийсэн өөрчлөлт хүснэгтэд  Хүснэгтэд хийсэн өөрчлөлт гридэд харагдана. Грид руу шууд мөр нэмэхийг оролдвол эксепшен үүсэх болно.Учир нь өгөгдөл холбогдсон байгаа контролд шууд мөр нэмэхийг зөвшөөрөхгүй.
    • Мастер-Дагуул грид Холбоотой өгөгдлийн сангийн хүснэгтүүдийн хооронд мастердагуул холбоос хэрэглэх шаардлага гардаг Энэ холбоост мастер хүснэгтийн нэг мөр нь дагуул хүснэгтийн хэд хэдэн бичлэгтэй холбогдоно.
    • Мастер-Дагуул грид 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);
    • Мастер-Дагуул грид // мастер-дагуул холбоос үүсгэх 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”]);
    • Мастер-Дагуул грид 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”;
    • Мастер-Дагуул грид 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”;
    • Мастер-Дагуул грид 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”;