datatable ,dataset,datagridview in c#

24
C# DATASET, DATATABLE, DATAGRIDVIEW 5-р баг Д.Бүжинлхам Ч.Энхтуул Нямжаргал Мөнхжин

Upload: -

Post on 10-Aug-2015

105 views

Category:

Engineering


6 download

TRANSCRIPT

Page 1: datatable ,dataset,datagridview in C#

C# DATASET, DATATABLE, DATAGRIDVIEW

5-р багД.Бүжинлхам

Ч.Энхтуул

Нямжаргал

Мөнхжин

Page 2: datatable ,dataset,datagridview in C#

Агуулга

Өгөгдлийн сангийн тухай Өгөгдлийн санг удирдах систем SQL-н тухай Dataset DataTable DataGridView

Page 3: datatable ,dataset,datagridview in C#

Өгөгдлийн сангийн тухай

Мэдээллийн үйлчилгээ үзүүлж буй газруудын хамгийн чухал зүйл бол мэдээллийн сан байдаг. Тухайн үйлчлүүлэгчийн хүсэлтэд тохирох мэдээлэл мэдээллийн санд байх ёстой учраас өөрийн үйлчилгээ, зорилгод нийцүүлэн мэдээллийн сангаа системчилж, баяжуулж, хайхад илүү хурдан, юу ч хайсан олдохоор их мэдээлэлтэй, уян хатан гэх мэт хүчин зүйлсийг тусган зохион байгуулдаг. Тиймээс ихэнх цахим аппликэйшн, програм хангамжуудад database буюу өгөгдлийн сан гэсэн чухал ойлголт юм.

Page 4: datatable ,dataset,datagridview in C#

Өгөгдлийн санг удирдах систем (ӨСУС)

Таны програм хэрэглэгчийн явуулсан хүсэлтийн дагуу автоматаар өгөгдлийн сангаас мэдээллийг хайж, тодорхой формат, тодорхой хугацаа, тодорхой шүүлттэйгээр үр дүнгүүдийг буцааж өгдөг байх ёстой. Тиймээс зайлшгүй database management system буюу өгөгдлийн санг удирдах систем гэдэг зүйл байх шаардлагатай болдог. Энэ нь өгөгдлийг дэс даралаасан, эмх цэгцтэйгээр хадгалах, богино хугацаанд хайх, нууцлал хамгаалалтыг сайжруулах гэх мэт зүйлсийг автоматаар шийдэж өгсөн байдаг. Мөн бусад програмчлалуудтай чөлөөтэй уялдан ажилладаг, хөгжүүлэгчид хүндрэлтэй бус байх зэрэг давуу талуудыг агуулдагаараа энгийн гар аргаар өгөгдлийн сангийн систем хийхээс хавьгүй илүү уян хатан, хүчирхэг сонголт болдог. Маш олон нэр төрлийн ӨСУС-ууд байдаг.

Page 5: datatable ,dataset,datagridview in C#

SQL-н тухай

Structured Query Language буюу товчоор SQL юм. Энэ нь өгөгдлийн санг удирдахад ашигладаг нэгдсэн хэл ба маш энгийн буюу оруулах INSERT, авах SELECT, шинэчлэх UPDATE, устгах DELETE гэсэн үндсэн дөрөвхөн үйлдэл дээр өгөгдлийн санг тэр чигээр нь удирддаг.

Командууд нь гүйцэтгэх үүргүүдээс хамаарч хэдэн хэсэгт хуваагддаг. DDL/Data Definition Language/

Өгөгдлийн санд хүснэгт үүсгэх, засвар хийх командууд ордог DML/Data Manipulation Language/

Бичлэг нэмэх, устгах, засварах командууд ордог DQL/Data Query Language/

Мэдээлэл хадгалж авах командууд ордог. 

Page 6: datatable ,dataset,datagridview in C#

ADO.NET классуудыг танилцуулга

ADO.NET нь санах ойд єгєгдлийн олонлогуудыг байгуулахыг

зєвшєєрдєг объектын загвар юм. ADO.NET-д сурах зайлшгvй

хэрэгтэй хэд хэдэн класс бий. DataSet DataTable DataView Connection Command CommandBuilder DataAdapter DataReader

Page 7: datatable ,dataset,datagridview in C#

ADO классуудыг хэрэглэх нь

Page 8: datatable ,dataset,datagridview in C#
Page 9: datatable ,dataset,datagridview in C#

Connection - Энэ класс нь өгөгдлийн эхтэй (data source) холболт хийхэд хэрэглэгддэг. Энэ классад үндсэн OLE DB, SQL server гэсэн 2 төрөл байна.

Command – Энэ класс нь SQL мэдэгдлүүдийг өгөгдлийн эх рүү буцаан дамжуулж байдаг. SQL болон stored procedure-уудыг ашиглан бvх өгөгдлийг сэргээх ба өөрчлөлт хийж чадна.Энэ классад өөрчлөлтүүдийг хадгалж чадах, өгөгдөл сэргээх method-ууд бий.

CommandBuilder - Энэ класс нь SELECT, INSERT, UPDATE, DELETE command oбъектуудыг байгуулахад хэрэглэгддэг.

Page 10: datatable ,dataset,datagridview in C#

DataAdapter -Энэ класс нь DataSet эсвэл DataTable-ийг өгөгдлийн баазаас өгөгдлөөр дүүргэхэд хэрэглэгддэг.

DataAdapter нь өгөгдлийн баазтай холболт үүсгэх ба SQL мэдэгдэлд тохирох command oбъектыг байгуулж, өгөгдлийг сэргээн, DataSet эсвэл DataTable-ийг байгуулаад, өгөгдлийн баазаас салгагдана.

DataReader - Энэ класс нь өгөгдлийн эхээс өгөгдлийг хурдан уншиж чадах ба forward-only, зөвхөн уншигдах курсор юм. Энэ класс нь DataGrid-үүдийг, ListBox-уудыг, ComboBox-уудыг дүүргэхэд хамгийн тохиромжтой.

Page 11: datatable ,dataset,datagridview in C#

C# DataSet

Энэ классыг санах ой дахь өгөгдлийн бааз гэж ойлгож болно. DataSet нь нэг болон түүнээс дээш DataTable обьектуудыг агуулж чаддаг ба тэдгээрийн хооронд relationship (холбоос) тогтоож чадна. Энэ классад жинхэнэ өгөгдлөөс уншсан өгөгдөл байрлах ба ямар нэгэн өөрчлөлт бүр нь түүнрүү хийгдэж байдаг.

Page 12: datatable ,dataset,datagridview in C#

DataSet –н жишээ

using System;

using System.Data;

class Program { // Program гсн класс үүсгэж бна

static void Main() //static хандалтай байгуулагч Main() метод тод-сон

{

// DataTable классын объектыг үүсгэж table1 хувьсагчид олгож бна.

// table1 нь DataTable объектыг агуулахгүй, харин санах ойд нэргүй DataTable төрлийн объект үүсэх ба тэр объект руу хүрэх хаягыг table1 агуулна. 

DataTable table1 = new DataTable("patients");

table1.Columns.Add("name");

table1.Columns.Add("id");

table1.Rows.Add("sam", 1);

table1.Rows.Add("mark", 2);

Page 13: datatable ,dataset,datagridview in C#

DataTable table2 = new DataTable("medications");

table2.Columns.Add("id");

table2.Columns.Add("medication");

table2.Rows.Add(1, "atenolol");

table2.Rows.Add(2, "amoxicillin");

//DataSet ‘дээр тухайн хоёр хүснэгтээ үүсгэж тавьсан байна.

DataSet set = new DataSet("office");

set.Tables.Add(table1);

set.Tables.Add(table2);

Page 14: datatable ,dataset,datagridview in C#

//DataSet дээрх DataTable –н гогцоо

DataTableCollection collection = set.Tables;

for (int i = 0; i < collection.Count; i++)

{

DataTable table = collection[i]; Console.WriteLine("{0}: {1}", i,table.TableName);

}

// Эхний хүснэгтийн нэрийг бич.

Console.WriteLine("x: {0}", set.Tables[0].TableName);

// Эмийн хүснэгтийн мөр тоолж бичнэ үү.

Console.WriteLine("y: {0}",set.Tables["medications"].Rows.Count);

}

}

Page 15: datatable ,dataset,datagridview in C#

C# DataTable

Энэ класс нь мөр болон багануудаас тогтох ба мөр бүр нь өөр өөр өгөгдөл агуулж байдаг.Мөн багана бүр нь нэгэн төрлийн өгөгдлүүдийг агуулж байдаг.

Page 16: datatable ,dataset,datagridview in C#

DataTable-н жишээ

using System;

using System.Data;

class Program {

static void Main() {

//Datatable үүсгэн авна.

DataTable table = GetTable();

}

//энэ method нь Datatable үүсгэдэг.

static DataTable GetTable() {

//энд дөрвөн баганатай хүснэгт үүсгэнэ.

DataTable table = new DataTable();

table.Columns.Add("Dosage", typeof(int));

Page 17: datatable ,dataset,datagridview in C#

table.Columns.Add("Drug", typeof(string));

table.Columns.Add("Patient", typeof(string));

table.Columns.Add("Date", typeof(DateTime));

// Энд бид таван DataRows нэмнэ.

table.Rows.Add(25, "Indocin", "David", DateTime.Now);

table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now);

table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now);

table.Rows.Add(21, "Combivent", "Janet", DateTime.Now);

table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now);

return table;

}

}

Page 18: datatable ,dataset,datagridview in C#

C# DataGridView

DataGridView нь хүснэгт хэлбэрийн өгөгдөлтэй ажиллах контроль юм. Энэ заавар нь SQL мэдээллийн сангаас тодорхой хүснэгтийг авч, нэг DataGridView дээр харуулдаг.

Page 19: datatable ,dataset,datagridview in C#

Нийлмэл холболт

Page 20: datatable ,dataset,datagridview in C#
Page 21: datatable ,dataset,datagridview in C#

DataGridView-н жишээ

using System.Data;

using System.Data.SqlServerCe;

using System.Windows.Forms;

namespace WindowsFormsApplication5

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

FillData();

}

Page 22: datatable ,dataset,datagridview in C#

DataGridView-н жишээ

void FillData()

{

//Нээлттэй холболт

using (SqlCeConnection c = new SqlCeConnection( Properties.Settings.Default.DataConnectionString))

{

c.Open();

// Шинэ DataAdapter үүсгэх

using (SqlCeDataAdapter a = new SqlCeDataAdapter( "SELECT * FROM Animals", c)) {

Page 23: datatable ,dataset,datagridview in C#

DataGridView-н жишээ

// DataAdapter ашиглан DataTable үүсгэнэ

DataTable t = new DataTable();

a.Fill(t);

// Дэлгэцэн дээр өгөгдлийг үзүүлнэ

dataGridView1.DataSource = t;

}

}

}

}

}

Page 24: datatable ,dataset,datagridview in C#

Танд амжилт хүсье

Анхаарал тавьсанд баярлалаа