bai tap - hp2 - mon 2

Upload: nguyen-duc-tri

Post on 08-Jul-2015

896 views

Category:

Documents


6 download

TRANSCRIPT

TRUNG TM TIN HC I HC KHOA HC T NHIN TP.HCM 227 Nguyn Vn C - Qun 5- Tp.H Ch Minh Tel: 8351056 Fax 8324466 Email: [email protected]

BI TPCHNG TRNH K THUT VIN NGNH LP TRNH Hc phn 2 --CNG NGH ADO.NET VI C#

M ti liu: DT_NCM_CC_BT_CNADONET Phin bn 3.1 Thng 05/2011

Bi tp

BI 1: Cc kin thc c bn v SQL Server

S dng tin ch SQL Server Management Studio (SSMS) To c s d liu, to cc bng v cc quan h rng buc kha ngoi Vit cc cu lnh truy vn d liu trn cc bng Vit cc cu lnh cp nht d liu trn cc bng

1.1. To c s d liu QL_SinhVien (bng tin ch SSMS)M t C s d liu Qun l Sinh vin cho php lu tr thng tin cc sinh vin trong cc khoa v kt qu hc tp ca cc sinh vin theo mn hc To cu trc cc bng Cc Field c gch di v in m l kha chnh ca bng KHOA Danh mc khoa Field Name Ma_khoa Ten_khoa Field Type Char NVarchar Field Size 2 50 Format M khoa Tn khoa Description

MON_HOC Danh mc mn hc Field Name Ma_mon Ten_mon Field Type Char NVarchar Field Size 2 50 Format M mn Tn mn Description

SINH_VIEN Danh mc sinh vin Field Name Ma_sinh_vien Ho_sinh_vien Ten_sinh_vien Ngay_sinh Gioi_tinh Dia_chi Hoc_bong Ma_khoa Field Type Char NVarchar NVarchar DateTime Bit NVarchar Int Char Field Size 3 30 20 Format Description M sinh vin H Tn Ngy sinh True: Nam; False: N a ch Hc bng M khoa

50 2

KET_QUA Kt qu hc tp Field Name Ma_sinh_vien Ma_mon Diem Field Type Char Char Real Field Size 3 2 Format Description M sinh vin M mn im

To Database Diagram vi cc quan h theo m t sau Bng cha KHOA v bng con SINH_VIEN quan h theo ct Ma_khoa Bng cha SINH_VIEN v bng con KET_QUA quan h theo ct Ma_sinh_vien Bng cha MON_HOC v bng con KET_QUA quan h theo ct Ma_mon

Cng ngh ADO.NET vi C#

Trang 2/59

Bi tp

Nhp d liu mu KHOA M khoa CN TO VL MON_HOC M mn CO CS CT LT RR TC TT SINH_VIEN M C00 C01 C02 C03 C04 T00 T01 T02 T03 T04 H Nguyn Th H Trn Ngc Bi Th Nguyn Hong L Bi Minh Trn Th L L Th Tn Trang Tun Ho Tho Hng Tun Khnh Lan Thin Tho Ngy sinh 13/8/1991 24/2/1991 11/6/1990 26/2/1990 19/3/1990 15/2/1991 9/4/1990 4/3/1990 18/5/1990 27/3/1990 Gii tnh False True False False True True True False True False Hc bng 100000 0 120000 100000 150000 0 120000 100000 0 120000 M khoa CN CN CN CN CN TO TO TO TO TO C l thuyt C s d liu Cu trc d liu Lng t Ton ri rc Ton cao cp Tr tu nhn to Tn mn Tn khoa Khoa Cng ngh thng tin Khoa Ton Khoa L

KET_QUA M sinh vin C00 C00 C00 C00 C01 C01 C01 C01 C02 M mn hc CS CT TT RR CS CT TT RR CS

im10 9 7 8.5 7 6 7 9 7.5

Cng ngh ADO.NET vi C#

Trang 3/59

Bi tp

C02 C02 C02 C03 C03 C03 C03 C04 C04

CT TT RR CS CT TT RR CS CT

4 5 3 9 1 8.5 9 2 1

1.2. Truy vn d liu (bng cu lnh)Ghi ch: cc bi c nh du (*) l bi v nh Truy vn n gin a. Lit k danh sch sinh vin gm cc ct M, H v Tn, Ngy sinh, Gii tnh, Hc bng. C sp tng theo ct hc bng Mu: M C00 C04 Hng dn: th hin ct Phi l Nam/N CASE WHEN gioi_tinh='true' THEN 'Nam' ELSE N'N' END b. Lit k danh sch sinh vin gm cc ct M, H, Tn, Ngy sinh, Gii tnh, Hc bng. Ch lit k cc sinh vin hc khoa Cng ngh thng tin v c hc bng >3,000,000 c. Lit k danh sch sinh vin gm cc ct M, H, Tn, Ngy sinh, Gii tnh, Hc bng. Ch lit k cc sinh vin c tn bt u l T H tn Nguyn Th Trang Nguyn Hong Hng Ngy sinh 8/13/1991 3/19/1990 Phi N Nam Hc bng 100000 150000

d. Lit k danh sch sinh vin gm cc ct M, H, Tn, Ngy sinh, Gii tnh, Hc bng. Ch lit k cc sinh vin c hc bng t 100000 n 120000 e. Lit k danh sch sinh vin gm cc ct M, H, Tn, Ngy sinh, Hc bng. Ch lit k cc sinh vin c hc bng v ngy sinh nm trong khong [1/6/1990, 30/6/1991] f. Hin th danh sch 10 sinh vin u tin c hc bng t cao n thp (Hng dn: dng TOP 10 v ORDER BY DESC)

Truy vn trn nhiu bng a. Lit k danh sch sinh vin gm cc ct m, h, tn, ngy sinh, gii tnh, m khoa, tn khoa b. Lit k kt qu hc tp gm cc ct m sinh vin, h v tn, m mn hc, im c. Lit k danh sch cc sinh vin (gm cc ct m, h tn, ngy sinh) c hc mn C s d liu

d. Lit k danh sch cc sinh vin (gm cc ct m, h tn, ngy sinh) t im 10 trong bi thi e. Lit k danh sch cc sinh vin (gm cc ct m, h tn, ngy sinh) c im thi mn Ton cao cp nh hn 5 (*) f. Cho bit danh sch cc mn hc cha c sinh vin ng k (*)

g. Cho bit danh sch cc sinh vin (gm cc ct m, h tn, ngy sinh) cha ng k hc mn hc no (*)

Cng ngh ADO.NET vi C#

Trang 4/59

Bi tp

Truy vn c nhm a. Thng k tng s sinh vin theo khoa. C sp tng theo tng s sinh vin Mu: M khoa TO CN b. Thng k tng hc bng theo khoa. Ch hin th nhng khoa c tng hc bng >=3,000,000 Mu: M khoa CN c. Hin th danh sch sinh vin gm m, h tn v im trung bnh cc mn hc m sinh vin c ng k hc Tn khoa Khoa Cng ngh thng tin Tng hc bng 3,500,000 Tng s sinh vin 30 40

d. Hin th danh sch khoa gm m khoa, tn khoa v im trung bnh ca tt c cc sinh vin trong khoa e. Hin th danh sch sinh vin gm m, h tn, im trung bnh v kt qu xp loi hc tp ca sinh vin, trong kt qu xp loi hc tp c xt da trn im trung bnh theo quy tc sau: (*) iu kin im trung bnh < 5 5 0 c. Cp nht hc bng l 50,000 cho cc sinh vin n hc khoa Cng ngh thng tin v cha c hc bng

d. Cng thm 5 im mn Tr Tu Nhn To cho cc sinh vin thuc khoa Anh vn. im ti a ca mn l 10 Xa mu tin a. Xo cc kt qu hc tp ca sinh vin c m H01 b. Xo sinh vin c m H01c.

Xa tt c nam sinh vin ca khoa Tin hc trong bng SINH_VIEN (nhn xt: c xa c khng?)

d. Xa cc kt qu hc tp ca nhng sinh vin no c im cc mn < 5

Cng ngh ADO.NET vi C#

Trang 6/59

Bi tp

BI 2: Kt ni c s d liu v c d liu

- Thc hin thao tc kt ni CSDL t client n Server vi cc loi Data Provider khc nhau - Lu tr chui kt ni trong tp tin cu hnh ca ng dng Windows Forms

2.1. Kt ni n CSDL SQL Server c bnMc tiu: S dng i tng Connection mc c bn Yu cu: Xy dng chng trnh gm c 2 chc nng: Thc hin kt ni n CSDL QL_Sinhvien vi chng thc l Windows Thc hin kt ni n CSDL QL_Sinhvien vi chng thc l SQL Server Nu kt thnh cng th xut hp thoi thng bo Kt ni thnh cng, ngc li th xut Kt ni KHNG thnh cng v km thng tin li. Giao din Form nh sau:

Hng dn: X l nt S dng chng thc Windows SqlConnection Ketnoi = new SqlConnection(@"Server=.\sqlexpress;Database=QL_Sinhvien;Integrated Security=true"); try { Ketnoi.Open(); MessageBox.Show( "Kt ni thnh cng","Thng bo"); } catch (SqlException ex) { MessageBox.Show("Kt ni b li: " + ex.Message, "Thng bo"); } finally { Ketnoi.Close(); } X l nt S dng chng thc SQL Server

Cng ngh ADO.NET vi C#

Trang 7/59

Bi tp

SqlConnection Ketnoi = new SqlConnection(); Ketnoi.ConnectionString = @"Server=.\sqlexpress;Database=QL_Sinhvien;User=sa; Password=357lhp"; //Code tip theo ging nt trn

2.2. M phng mn hnh Connect to Server ca SQL Server Mc tiu: S dng i tng Connection v SqlConnectionStringBuilder Yu cu: Xy dng chng trnh thc hin kt ni, trong : Cho php ngi dng nhp vo cc thng tin: Server, Database, kiu chng thc, User v Password Thc hin kt ni n CSDL vi cc thng tin trn, c x l li v xut thng bo tng ng vi tnh trng kt ni Giao din Form nh sau:

+ +

Nu chn Windows Authentication th tt 2 nhp User v Pass Nu chn SQL Serever Authentication th sng 2 nhp User v Pass

Hng dn Phn thit k Form: t User v Pass vo trong iu khin Panel X l s kin CheckedChanged ca 2 iu khin RadioButton: .Enabled = .Checked; X l nt Kt ni: SqlConnectionStringBuilder Chuoi_ket_noi = new SqlConnectionStringBuilder(); Chuoi_ket_noi.DataSource = txtserver.Text; Chuoi_ket_noi.InitialCatalog = txtdatabase.Text; if (rdbwin.Checked == true) Chuoi_ket_noi.IntegratedSecurity = true; else

Cng ngh ADO.NET vi C#

Trang 8/59

Bi tp

{ Chuoi_ket_noi.UserID = txtuser.Text; Chuoi_ket_noi.Password = txtpass.Text; } SqlConnection Ket_noi = new SqlConnection(Chuoi_ket_noi.ConnectionString); try { Ket_noi.Open(); if (Ket_noi.State == ConnectionState.Open) MessageBox.Show("Kt ni thnh cng, trng thi m", "Thng bo"); else if (Ket_noi.State == ConnectionState.Closed) MessageBox.Show("Kt ni thnh cng, trng thi ng", "Thng bo"); } catch (SqlException ex) { MessageBox.Show("Li: "+ex.Message,"Thng bo"); } finally { Ket_noi.Close(); MessageBox.Show("Kt ni trong trng thi ng", "Thng bo"); }

2.3. Kt ni vi cc Data Provider khc nhau Mc tiu: S dng ODBC, OLEDB, SQL Client kt ni n CSDL SQL Server Yu cu: Xy dng chng trnh thc hin kt ni n CSDL QL_Sinhvien vi cc Data Provider khc nhau, sau : m tng s sinh vin v xut ra mn hnh. C yu cu x l li Giao din Form nh sau:

Hng dn X l nt ODBC:

Cng ngh ADO.NET vi C#

Trang 9/59

Bi tp

string Chuoi_ket_noi = @"Driver={SQL Server}; server=.\sqlexpress;database=ql_sinhvien; trusted_connection=yes;"; OdbcConnection Ket_noi = new OdbcConnection(Chuoi_ket_noi); try { Ket_noi.Open(); string Lenh = "SELECT Count(*) FROM sinh_vien"; OdbcCommand Bo_lenh = new OdbcCommand(); Bo_lenh.CommandText = Lenh; Bo_lenh.Connection = Ket_noi; int Tong_so_sinh_vien = (int)Bo_lenh.ExecuteScalar(); txttongsosinhvien.Text = Tong_so_sinh_vien.ToString(); MessageBox.Show("c d liu xong"); } catch (SqlException ex) { MessageBox.Show("Li: " + ex.Message); } finally { Ket_noi.Close(); } X l nt OLEDB: string Chuoi_ket_noi = @"Provider=SQLOLEDB;server=.\sqlexpress;database=ql_sinhvien; trusted_connection=yes;"; OleDbConnection Ket_noi = new OleDbConnection(Chuoi_ket_noi); //Code tip tc, ging nt ODBC nhng s dng OleDbCommand X l nt SQL Client: string Chuoi_ket_noi = @"server=.\sqlexpress;database=ql_sinhvien; trusted_connection=yes;"; SqlConnection Ket_noi = new SqlConnection(Chuoi_ket_noi); //Code tip tc, ging nt ODBC nhng s dng SqlCommand

2.4. Lu chui kt ni trong tp tin cu hnh ca ng dng (Bi v nh) Mc tiu: S dng tp tin cu hnh App.config lu chui kt ni Yu cu: Xy dng chng trnh thc hin kt ni n CSDL QL_Sinhvien, sau : m tng s sinh vin v xut ra mn hnh. C yu cu x l li Giao din Form nh sau:

Cng ngh ADO.NET vi C#

Trang 10/59

Bi tp

Hng dn: Thc hin cc thao tc: thm Reference, khai bo namespace System.Configuration, khai bo chui kt ni trong tp App.config (c hng dn trong Ti liu hc tp) X l nt c d liu: ConnectionStringSettings Bo_ket_noi = ConfigurationManager.ConnectionStrings["Gi_tr_ca_thuc_tnh_name"]; string Chuoi_ket_noi = Bo_ket_noi.ConnectionString; SqlConnection Ket_noi = new SqlConnection(Chuoi_ket_noi); //Code tip tc, ging nt SQL Client ca bi 2.3

-

2.5. c d liu t tp tin .mdf (Bi v nh) Mc tiu: Kt ni n server vi CSDL l mt tp tin .mdf Yu cu: Xy dng chng trnh thc hin kt ni n tp tin CSDL QL_Sinhvien.mdf, sau : m tng s sinh vin v xut ra mn hnh. C yu cu x l li Giao din Form ging bi 2.4

2.6. X l s kin (event) Mc tiu: S dng s kin StateChange ca i tng Connection Yu cu: Xy dng chng trnh, trong : C 2 chc nng: + + M kt ni n CSDL QL_Sinhvien, c x l li ng kt ni li

Theo di trng thi ca Connection trong qu trnh ng, m. Xut cc thng tin nh: + + + i tng pht s kin: sender Trng thi gc: OriginalState Trng thi hin hnh: CurrentState

Giao din Form nh sau:

Cng ngh ADO.NET vi C#

Trang 11/59

Bi tp

Hng dn Khai bo bin Ket_noi dng chung trong form X l s kin Load ca Form //Khi to bin Ket_noi //By s kin Ket_noi.StateChange += new StateChangeEventHandler(Ket_noi_StateChange); X l s kin Ket_noi_StateChange: StringBuilder sb=new StringBuilder(); sb.AppendLine("---------------------"); sb.AppendLine("Entering StateChange EventHandler"); sb.AppendFormat("Original State: {0}\r\n",e.OriginalState); sb.AppendFormat("Current State: {0}\r\n", e.CurrentState); sb.AppendLine("Exiting StateChange EventHandler"); sb.AppendLine("---------------------"); txttrangthai.Text = sb.ToString();

2.7. c d liu t Excel (Bi lm thm) Phn cung cp: GV cung cp tp tin Sinh_vien.xls Mc tiu: S dng ODBC v OLEDB c d liu t tp tin Excel Yu cu: Xy dng chng trnh c d liu t tp tin Excel, tnh tng s sinh vin v xut ra mn hnh, trong : C 2 chc nng: + + c d liu dng ODBC c d liu dng OLEDB

Giao din Form nh sau:

Cng ngh ADO.NET vi C#

Trang 12/59

Bi tp

Hng dn X l nt ODBC: //Khai bo chui kt ni string Chuoi_ket_noi = @"Dsn=Excel Files;Dbq=ng_dn_cha_tp_tin/Sinh_vien.xls"; OdbcConnection Ket_noi = new OdbcConnection(Chuoi_ket_noi); //Code tip tc, ging nt bi 2.4 X l nt OLEDB: //Khai bo chui kt ni string Chuoi_ket_noi = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source = ng_dn_cha_tp_tin/Sinh_vien.xls;Extended Properties='Excel 8.0;HDR=Yes;'"; OleDbConnection Ket_noi = new OleDbConnection(Chuoi_ket_noi); //Code tip tc, ging nt bi 2.4, nhng lu cu lnh thc hin s c dng sau: // "select Count(*) from [SINH_VIEN$]" + M rng: Hiu chnh cu lnh thc hin sao cho ch m s sinh vin trong 1 vng a ch ca 1 Sheet trong bng tnh Excel

2.8. c d liu t Access (Bi lm thm) Phn cung cp: GV cung cp tp tin QLSinhvien.mdb Mc tiu: S dng ODBC v OLEDB c d liu t tp tin Access Yu cu: Xy dng chng trnh c d liu t tp tin Access. Cc yu cu ging bi 2.7 Hng dn: X l nt ODBC: //Khai bo chui kt ni string Chuoi_ket_noi = @"Driver={Microsoft Access Driver (*.mdb)}; Dbq= ng_dn_cha_tp_tin/QLSinhvien.mdb;"; X l nt OLEDB: //Khai bo chui kt ni string Chuoi_ket_noi = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= ng_dn_cha_tp_tin/QLSinhvien.mdb";

Cng ngh ADO.NET vi C#

Trang 13/59

Bi tp

BI 3: i tng Command

-

Thc hin lnh tnh ton v truy vn d liu Thc hin lnh tnh ton v truy vn d liu c tham s Thc hin lnh cp nht d liu c cc gi tr d liu c kch thc ln t SQL Server

Lu : T bi tp s 3 tr v sau, hc vin s s dng CSDL Qun l sinh vin (QLSinhvien), trong cu trc cc Table c kha chnh t ng tng (CSDL ny s do Gio vin cung cp)

3.1. m s sinh vin theo khoaMc tiu: S dng phng thc ExecuteScalar Yu cu: Xy dng chng trnh tnh tng s sinh theo Khoa, trong thng tin Khoa c ly t TextBox. Xut ra mn hnh kt qu tnh ton Giao din Form nh sau:

Hng dn: X l nt c d liu: //Khai bo v khi to i tng kt ni Ket_noi (HV vn dng kin thc bi 2 vit x l) .. try { string Lenh = string.Format("SELECT Count(*) FROM sinh_vien where ma_khoa={0}", txtmakhoa.Text); SqlCommand Bo_lenh = new SqlCommand(); Bo_lenh.CommandText = Lenh; Bo_lenh.Connection = Ket_noi; Ket_noi.Open(); int Tong_so_sinh_vien = (int)Bo_lenh.ExecuteScalar(); txttongsosinhvien.Text = Tong_so_sinh_vien.ToString(); }

Cng ngh ADO.NET vi C#

Trang 14/59

Bi tp

catch (SqlException ex) { MessageBox.Show("Li: "+ex.Message); } Ket_noi.Close(); } finally {

3.2. Tnh tng s sinh vin Mc tiu: S dng phng thc ExecuteNonQuery v StoredProcedure Yu cu: Xy dng chng trnh m s sinh vin, trong c 2 chc nng: 1. To mt StoredProcedure, m t nh sau: CREATE PROC sp_DemSoLuongSinhVien AS SELECT Count(*) FROM Sinh_vien 2. Tnh tng s sinh vin Giao din Form nh sau:

Hng dn: Khai bo bin Ket_noi kiu SqlConnection dng chung trong form X l nt s To StoredProcedure: try { string Lenh = txtTaoProc.Text; SqlCommand Bo_lenh = new SqlCommand(Lenh, Ket_noi); Ket_noi.Open(); int Tong_so_sinh_vien = (int)Bo_lenh.ExecuteNonQuery(); } catch (SqlException ex) { MessageBox.Show("Li: " + ex.Message); } finally

Cng ngh ADO.NET vi C#

Trang 15/59

Bi tp

{ -

Ket_noi.Close();

}

X l nt s m s sinh vin: try { string Lenh = "sp_DemSoLuongSinhVien"; SqlCommand Bo_lenh = new SqlCommand(Lenh, Ket_noi); Bo_lenh.CommandType = CommandType.StoredProcedure; Ket_noi.Open(); int Tong_so_sinh_vien = (int)Bo_lenh.ExecuteScalar(); txttongsosinhvien.Text = Tong_so_sinh_vien.ToString(); } catch (SqlException ex) { finally { Ket_noi.Close(); } MessageBox.Show("Li: "+ex.Message); }

3.3. c danh sch Khoa (Bi v nh) Mc tiu: S dng phng thc ExecuteReader Yu cu: Xy dng chng trnh c d liu Sinh vin v xut ra mn hnh Giao din Form nh sau:

Hng dn: To phng thc dng chung trong Form (hoc dng cho tt c cc Form), dng xut kt qu ca i tng DataReader private string Xuat_ketqua( SqlDataReader ketqua) { StringBuilder strb = new StringBuilder(); while (ketqua.Read()) {

Cng ngh ADO.NET vi C#

Trang 16/59

Bi tp

for (int i = 0; i < ketqua.FieldCount; i++) strb.Append(ketqua[i].ToString() + (i==ketqua.FieldCount-1 ? "" : " : ")); strb.AppendLine(); } return strb.ToString(); } X l nt c: //Khai bo v khi to i tng kt ni Ket_noi (HV vn dng kin thc bi 2 vit x l) .. string Lenh = "SELECT * FROM khoa"; SqlCommand Bo_lenh = new SqlCommand(Lenh, Ket_noi); Ket_noi.Open(); SqlDataReader Bo_doc = Bo_lenh.ExecuteReader(); txtDskhoa.Text = Xuat_ketqua(Bo_doc); Bo_doc.Close(); Ket_noi.Close(); //Lu : Hc vin phi ci t thm x l li ging cc bi trn //Xut ra mn hnh

3.4. c danh sch Khoa v Sinh vin (Bi v nh) Mc tiu: S dng phng thc ExecuteReader v tr v nhiu kt qu Yu cu: Xy dng chng trnh c d liu Khoa v Sinh vin. Xut ra mn hnh 2 kt qu ny Giao din Form nh:

Hng dn: X l nt c:

//Khai bo i tng Connection

Cng ngh ADO.NET vi C#

Trang 17/59

Bi tp

string Lenh = "SELECT * FROM khoa;SELECT ma_sinh_vien,ho_sinh_vien,ten_sinh_vien FROM sinh_vien";

//Khai bo i tng Command //M Connection //Thi hnh cu lnh

//c v xut bng KHOA ra mn hnhtxtDSkhoa.Text = Thu_vien.Xuat_ketqua(Bo_doc); Bo_doc.NextResult(); //s dng phng thc c

//c v xut bng SINH_VIEN ra mn hnhtxtDSsinhvien.Text = Thu_vien.Xuat_ketqua(Bo_doc);

3.5. m s sinh vin theo Khoa Mc tiu: S dng phng thc ExecuteScalar c tham s Yu cu: ging bi 3.1 nhng dng Command c tham s Hng dn: X l nt c d liu //Khai bo Connection string Lenh = "SELECT Count(*) FROM sinh_vien where ma_khoa=@makhoa"; //Khai bo Command vi chui lnh trn SqlParameter pMakhoa = new SqlParameter(); pMakhoa.ParameterName = "@makhoa"; pMakhoa.SqlDbType = SqlDbType.Int; pMakhoa.Direction = ParameterDirection.Input; pMakhoa.Value = txtmakhoa.Text; Bo_lenh.Parameters.Add(pMakhoa); int Tong_so_sinh_vien = (int)Bo_lenh.ExecuteScalar(); txttongsosinhvien.Text = Tong_so_sinh_vien.ToString(); //Khai bo tham s

3.6. m s sinh vin theo Khoa Mc tiu: S dng cc phng thc ca Command vi loi tham s l Output. Thc thi StoredProcedure Yu cu: Xy dng chng trnh m s sinh vin theo Khoa, trong c 2 chc nng: 1. To mt StoredProcedure, m t nh sau: CREATE PROC sp_DemSoLuongSinhVienTheoKhoa @Makhoa int, @Dem int Output AS SELECT @Dem=Count(*) FROM Sinh_vien Where Ma_khoa=@Makhoa 2. Tnh tng s sinh vin theo m khoa c nhp vo v xut kt qu ra mn hnh Giao din Form nh sau:

Cng ngh ADO.NET vi C#

Trang 18/59

Bi tp

Hng dn: X l nt To StoredProcedure: Ging bi 3.2 X l nt Tnh s sinh vin: Ging bi 3.1, nhng lu tham s l loi Output

3.7. Bi tng hp (Bi v nh) Mc tiu: S dng cc phng thc ca Command thc hin cc thao tc vi d liu nh: To bng, thm d liu, c d liu v xa bng Yu cu: Xy dng chng trnh thc hin cc thao tc d liu trn bng Hng ha, gm cc chc nng sau: 1. To bng Hng ha: : to Table HANG_HOA trn CSDL 2. Thm hng ha mi: thm mt mu tin vo Table HANG_HOA 3. c bng Hng ha: xut d liu Table HANG_HOA ra mn hnh 4. Xa bng Hng ha: xa Table HANG_HOA trn CSDL Hng dn: Giao din gi :

Cng ngh ADO.NET vi C#

Trang 19/59

Bi tp

3.8. c BLOB v ghi ra tp tin dng hnh nh Mc tiu: S dng phng thc GetSqlBytes c BLOB Yu cu: Xy dng chng trnh c mt field c kiu varbinary(MAX) t CSDL SQL Server: + + + + c mt mu tin c th trong bng Production.ProductPhoto (c field LargePhoto) trong CSDL AdventureWorks To tp tin dng hnh nh, tn tp tin chnh l field LargePhotoFilename Ghi field LargePhoto vo tp tin hnh nh Xut hnh nh ra iu khin PictureBox

Giao din Form nh sau:

Dng iu khin PictureBox

Cng ngh ADO.NET vi C#

Trang 20/59

Bi tp

Hng dn:

-

X l nt c BLOB v ghi ra tp tin .gif: Lu : phi b sung 2 dng lnh sau: using System.Data.SqlTypes; using System.Drawing.Imaging; //Khai bo Connection string Lenh = SELECT LargePhotoFilename ,LargePhoto FROM Production.ProductPhoto WHERE ProductPhotoID=88 //Khai bo Command vi chui lnh trn SqlCommand Bo_lenh = new SqlCommand(Lenh, Ket_noi); Ket_noi.Open(); SqlDataReader Bo_doc = Bo_lenh.ExecuteReader();

// c ni dung field v lu vo mng byteSqlBytes sbt = new SqlBytes(); string Ten_hinh = ""; if (Bo_doc.Read()) { Ten_hinh = Bo_doc.GetString(0); sbt = Bo_doc.GetSqlBytes(1); } // Ghi ni dung vo tp tin hnh nh v xut hnh ra iu khin PictureBox Bitmap hinh = new Bitmap(sbt.Stream); string Duong_dan = "../../Bai_3/Hinh/" + Ten_hinh + ".gif"; hinh.Save(Duong_dan, ImageFormat.Gif); phinh.ImageLocation = Duong_dan; // .

3.9. c v ghi BLOB (Bi lm thm) Mc tiu: S dng k thut c v ghi BLOB trong CSDL Yu cu: Xy dng chng trnh c d liu ca field c kiu varbinary(MAX) t CSDL SQL Server: + + + c tt c mu tin trong bng Production.ProductPhoto (c field LargePhoto) trong CSDL AdventureWorks Xut d liu field LargePhoto ra iu khin PictureBox Xy dng chc nng cho php di chuyn cc mu tin xem hnh tng ng c lu tr trong field LargePhoto

Xy dng cc chc nng cho php chn tp tin hnh t mt th mc ca my, sau c th cp nht vo CSDL Giao din Form nh sau:

Cng ngh ADO.NET vi C#

Trang 21/59

Bi tp

Hng dn: Khai bo cc bin dng chung trong Form: List Danh_sach_hinh; string Chuoi_ket_noi = ..; SqlConnection Ket_noi; int Vi_tri = 0; -

//Lu v tr hin hnh ca mu tin

Xy dng class Hinh dng lu tr thng tin ca field BLOB class Hinh { public int MaHinh { get; set; } public string TenHinh { get; set; } public byte[] NoiDung { get; set; } }

-

Xy dng phng thc Hien_thi dng hin th hnh ra PictureBox if (Vi_tri < Danh_sach_hinh.Count) { Hinh h = Danh_sach_hinh[Vi_tri]; txttenhinh.Text = h.TenHinh; MemoryStream m = new MemoryStream(h.NoiDung); phinh.Image = Image.FromStream(m); }

-

X l s kin Load ca Form Danh_sach_hinh = new List(); //Khi to Ket_noi (HV t code) . string Lenh = @"SELECT Productphotoid Mahinh, Largephotofilename Tenhinh, Largephoto Hinh From Production.Productphoto";

Cng ngh ADO.NET vi C#

Trang 22/59

Bi tp

//Khai bo v khi to i tng Command Bo_lenh vi chui Lenh trn(HV t code) . SqlDataReader Bo_doc = Bo_lenh.ExecuteReader(); SqlBytes sbt = new SqlBytes(); string _Ten_hinh = ""; while (Bo_doc.Read()) { int _MaHinh = Bo_doc.GetInt32(0); _Ten_hinh = Bo_doc.GetString(1); sbt = Bo_doc.GetSqlBytes(2); byte[] b = (byte[])sbt.Value; Danh_sach_hinh.Add(new Hinh { MaHinh = _MaHinh, TenHinh = _Ten_hinh, NoiDung = b }); } Hien_thi(); X l nt Chn hnh: //S dng hp thoi m file chn tp tin hnh nh OpenFileDialog o = new OpenFileDialog(); //Khi to th mc mc nh o.InitialDirectory = Application.StartupPath + "/Th_mc_cha_hnh_nh"; if (o.ShowDialog() == DialogResult.OK) { string duongdandich = o.FileName; byte[] b = File.ReadAllBytes(duongdandich); MemoryStream m = new MemoryStream(b); phinh.Image = Image.FromStream(m); Danh_sach_hinh[Vi_tri].NoiDung = b; } X l nt Cp nht: string Lenh = "UPDATE production.productphoto set largephotofilename=@ten,largephoto=@hinh where productphotoid=@mahinh"; SqlCommand Bo_lenh = new SqlCommand(Lenh, Ket_noi); Bo_lenh.Parameters.Add("@mahinh", SqlDbType.Int); Bo_lenh.Parameters["@mahinh"].Value = Danh_sach_hinh[Vi_tri].MaHinh; Bo_lenh.Parameters.Add("@ten", SqlDbType.NVarChar,50); Bo_lenh.Parameters["@ten"].Value = Danh_sach_hinh[Vi_tri].TenHinh; Bo_lenh.Parameters.Add("@hinh", SqlDbType.VarBinary); Bo_lenh.Parameters["@hinh"].Value = Danh_sach_hinh[Vi_tri].NoiDung; Ket_noi.Open(); Bo_lenh.ExecuteNonQuery(); //Khi to stream //Xut ra mn hnh

Danh_sach_hinh[Vi_tri].TenHinh = Path.GetFileName(duongdandich);

Cng ngh ADO.NET vi C#

Trang 23/59

Bi tp

Ket_noi.Close(); X l cc nt di chuyn:

//Nt uVi_tri = 0; Hien_thi();

//Nt trcVi_tri--; if (Vi_tri < 0) Vi_tri = 0; Hien_thi(); //Nt sau Vi_tri++; if (Vi_tri > Danh_sach_hinh.Count) Vi_tri = Danh_sach_hinh.Count - 1; Hien_thi(); //Nt cui Vi_tri = Danh_sach_hinh.Count - 1; Hien_thi();

3.10. c d liu sinh vin, c km hnh nh (bi lm thm) Mc tiu: S dng BLOB p dng vo ng dng thc t Yu cu: Xy dng chng trnh c d liu ca bng Sinh_vien t CSDL SQL Server: + + + + c tt c mu tin trong bng Sinh_vien (c field Hinh) trong CSDL QLSinhvien Xut d liu ra cc TextBox Xut d liu field Hinh ra iu khin PictureBox Xy dng chc nng cho php di chuyn cc mu tin xem hnh tng ng c lu tr trong field Hinh v cc thng tin khc ca sinh vin

Xy dng cc chc nng cho php chn tp tin hnh t mt th mc ca my, sau c th cp nht vo CSDL Giao din Form nh sau: (Hnh 3.10.a)

Hng dn: Thc hin tng t bi 3.9 nhng CSDL l QLSinhvien

Phn m rng: Hc vin c th b sung cc nt chc nng nh hnh sau: (Hnh 3.10.b) + S dng cc phng thc ca Command thc hin

Cng ngh ADO.NET vi C#

Trang 24/59

Bi tp

Hnh 3.10.a

Hnh 3.10.b

3.11. c d liu phim, c km hnh nh v on clip (bi lm thm) Phn cung cp: Gio vin cung cp cho hc vin CSDL QLPHIM, gm 3 bng: Phim, Ctphieumuon, Phieumuon

Cng ngh ADO.NET vi C#

Trang 25/59

Bi tp

Mc tiu: S dng BLOB, CLOB p dng vo ng dng thc t Yu cu: Xy dng chng trnh c d liu ca bng PHIM t CSDL SQL Server: + + + + + + c tt c mu tin trong bng PHIM trong CSDL QLPHIM Xut d liu ra cc TextBox Xut d liu field Anh_bia ra iu khin PictureBox Xut d liu field Trailer ra iu khin Windows Media Palyer Xut d liu field Gioi_thieu ra iu khin TextBox Xy dng chc nng cho php di chuyn cc mu tin

Xy dng cc chc nng cho php chn tp tin hnh t mt th mc ca my, sau c th cp nht vo CSDL Xy dng cc chc nng cho php Thm, cp nht v xa phim Giao din Form nh sau:

Hng dn: Thc hin tng t bi 3.10

Cng ngh ADO.NET vi C#

Trang 26/59

Bi tp

-

Th hin iu khin Windows Media Palyer trn thanh Toolbox: + Khai bo Component:

+

Chn tab COM Components chn Windows Media Player

+

Xut hin iu khin Windows Media Player trn thanh ToolBox, bn s dng nh cc iu khin khc

Cng ngh ADO.NET vi C#

Trang 27/59

Bi tp

BI 4: Cc x l trong m hnh ngt kt ni (Disconnect Model)

4.1. + + -

-

c v lu d liu trong DataSet, DataTable Cp nht d liu t DataSet, DataTable vo CSDL To DataView cung cp cc gc nhn d liu khc nhau Thc hin cc thao tc thm, xa, sa, lc, tm ki m, trn DataTable, DataView

To bng KHOAMc tiu: To v s dng DataTable, s dng cc thuc tnh c bn ca DataTable Yu cu: Xy dng chng trnh to bng KHOA, to d liu cho bng KHOA v xut d liu ra mn hnh Cu trc bng KHOA nh sau: Ma_khoa: Type(string), size(2), gi tr duy nht, l kha chnh Ten_khoa: Type(string), size(50), gi tr duy nht

Giao din Form nh sau:

Hng dn: Khai bo i tng Datatable dng chung trong Form: DataTable Bang_khoa = new DataTable("Khoa"); X l nt To bng: DataColumn Cot_ma_khoa = new DataColumn(); Cot_ma_khoa.ColumnName = "Ma_khoa"; Cot_ma_khoa.DataType = typeof(string); Cot_ma_khoa.MaxLength = 2; Cot_ma_khoa.Unique = true;

Cng ngh ADO.NET vi C#

Trang 28/59

Bi tp

Bang_khoa.Columns.Add(Cot_ma_khoa); DataColumn Cot_ten_khoa = new DataColumn("Ten_khoa", typeof(string)); Cot_ten_khoa.MaxLength = 50; Cot_ten_khoa.Unique = true; Bang_khoa.Columns.Add(Cot_ten_khoa); Bang_khoa.PrimaryKey = new DataColumn[] { Cot_ma_khoa }; X l nt Thm d liu: DataRow Dong_khoa = Bang_khoa.NewRow(); Dong_khoa["ma_khoa"] = "CN"; Dong_khoa["Ten_khoa"] = "Khoa Cng ngh thng tin"; Bang_khoa.Rows.Add(Dong_khoa); Dong_khoa = Bang_khoa.NewRow(); Dong_khoa[0] = "TO"; Dong_khoa[1] = "Khoa Ton"; Bang_khoa.Rows.Add(Dong_khoa); Dong_khoa = Bang_khoa.NewRow(); Dong_khoa[0] = "VL"; Dong_khoa["Ten_khoa"] = "Khoa L"; Bang_khoa.Rows.Add(Dong_khoa); Dong_khoa = Bang_khoa.Rows.Add(new object[] { "HO", "Khoa Ha" }); X l nt Xut d liu: .DataSource = Bang_khoa;

4.2.

To bng HANG_HOA (Bi v nh)Mc tiu: To v s dng DataTable, s dng cc thuc tnh nng cao ca DataTable Yu cu: Xy dng chng trnh to bng HANG_HOA, to d liu cho bng HANG_HOA v xut d liu ra mn hnh Cu trc bng HANG_HOA nh sau: + + + + STT: kiu s nguyn, t ng tng, l kha chnh Ten_hang_hoa: kiu chui, 50 k t, gi tr duy nht Don_gia, So_luong: kiu s thc (double) Thanh_tien: kiu s thc, c tnh ton t biu thc So_luong*Don_gia

Giao din Form nh sau:

Cng ngh ADO.NET vi C#

Trang 29/59

Bi tp

Hng dn: B cc chung: ging bi 4.1 X l nt To bng: xem v d trong sch

4.3.

To v cp nht bng KHOAMc tiu: S dng cc phng thc cp nht d liu ca DataTable Yu cu: Xy dng chng trnh to bng KHOA, to d liu cho bng KHOA v xut d liu ra mn hnh Cu trc bng KHOA nh sau: + + Field Ma_khoa: Type(string), size(2), gi tr duy nht, l kha chnh Field Ten_khoa: Type(string), size(50), gi tr duy nht

Xy dng cc chc nng thm, cp nht v xa d liu trn bng KHOA Giao din Form nh sau:

Cng ngh ADO.NET vi C#

Trang 30/59

Bi tp

Ghi ch: Bn th sa d liu trn DataGridView, thm mi, xa. Sau nhn nt Khng ghi nhn xt

Hng dn: Khai bo i tng Datatable Bang_khoa dng chung trong Form X l nt Thm: DataRow Dong_khoa = Bang_khoa.NewRow(); Dong_khoa["ma_khoa"] = txtma_khoa.Text; Dong_khoa["Ten_khoa"] = txtten_khoa.Text; Bang_khoa.Rows.Add(Dong_khoa) X l nt Xa Delete: int Dong = int.Parse(txtdong.Text); DataRow Khoa = Bang_khoa.Rows[Dong]; Khoa.Delete(); X l nt Xa Remove: int Dong = int.Parse(txtdong.Text); DataRow Khoa = Bang_khoa.Rows[Dong]; Bang_khoa.Rows.Remove(Khoa);

4.4.

To bng PHIEU_NHAP v CT_PHIEU_NHAP (Bi v nh)Mc tiu: To v s dng DataSet, DataTable, Constraint v DataRelation Yu cu: Xy dng chng trnh to bng PHIEU_NHAP, CT_PHIEU_NHAP. To d liu cho 2 bng ny v xut d liu ra mn hnh Cu trc bng PHIEU_NHAP nh sau: + + + Sopn: kiu chui, 4 k t, l kha chnh Ngay_nhap: kiu ngy Tong_tri_gia: kiu s thc STT: kiu s nguyn, t ng tng, l kha chnh Sopn: kiu chui, 4 k t, l kha ngoi, tham gia kha chnh vi field STT Ten_hang_hoa: kiu chui, 50 k t, gi tr duy nht Don_gia, So_luong: kiu s thc (double) Thanh_tien: kiu s thc, c tnh ton t biu thc So_luong*Don_gia

Cu trc bng CT_PHIEU_NHAP nh sau: + + + + +

-

Giao din Form nh sau:

Cng ngh ADO.NET vi C#

Trang 31/59

Bi tp

Ghi ch: Bn th di chuyn cc dng trn DataGridView th 1 nhn xt cc dng d liu trn DataGridView th 2 Trong iu khin DataGridView th 2, bn th sa sopn thnh N003 nhn xt

Hng dn: B cc chung: ging bi 4.2 To i tng Dataset dng chung trong Form: DataSet ds = new DataSet("NHAPHANG"); Sau khi to 2 bng xong: Ln lt thm vo DataSet (Hc vin xem v d trong sch), khai bo rng buc kha ngoi nh sau: ForeignKeyConstraint fk_pn_ctpn = new ForeignKeyConstraint("fk_pn_ctpn", Bang_Phieu_nhap.Columns["sopn"], Bang_CT_Phieu_nhap.Columns["sopn"]); Bang_CT_Phieu_nhap.Constraints.Add(fk_pn_ctpn); X l nt Xut d liu: Luoi_phieu_nhap.DataSource = ds.Tables["Phieu_nhap"]; Luoi_ct_phieu_nhap.DataSource = ds.Tables["CT_Phieu_nhap"];

Phn yu cu m rng: Di chuyn cc phiu nhp trn DataGridView th 1 th xut chi tit phiu nhp tng ng ra DataGridView th 2 B sung thm 2 chc nng Ghi v Khng ghi: dng cp nht v khi phc d liu trong Dataset Giao din b sung nh sau:

Cng ngh ADO.NET vi C#

Trang 32/59

Bi tp

Ghi ch: Bn th di chuyn cc dng trn DataGridView th 1 nhn xt cc dng d liu trn DataGridView th 2 Th sa d liu trn 2 DataGridView, nhn nt Ghi / Khng ghi nhn xt

Hng dn phn m rng: Sau khi to 2 bng xong: Ln lt thm vo DataSet, khai bo rng buc kha ngoi v thit lp quan h nh sau: ForeignKeyConstraint fk_pn_ctpn = new ForeignKeyConstraint("fk_pn_ctpn", Bang_Phieu_nhap.Columns["sopn"], Bang_CT_Phieu_nhap.Columns["sopn"]); Bang_CT_Phieu_nhap.Constraints.Add(fk_pn_ctpn); DataRelation r_pn_ctpn = new DataRelation("r_pn_ctpn", Bang_Phieu_nhap.Columns["sopn"], Bang_CT_Phieu_nhap.Columns["sopn"]); ds.Relations.Add(r_pn_ctpn); X l nt Xut d liu: Luoi_phieu_nhap.DataSource = ds.Tables["Phieu_nhap"]; Luoi_ct_phieu_nhap.DataSource = ds.Tables["Phieu_nhap"]; Luoi_ct_phieu_nhap.DataMember = "r_pn_ctpn"; //Khai bo tn ca DataRelation

4.5.

Tra cu v tnh ton trong bng HangHoaNhap (Bi v nh)Mc tiu: S dng cc phng thc tra cu v tnh ton d liu ca DataTable Yu cu: Xy dng chng trnh to bng HangHoaNhap, to d liu cho bng ny v xut d liu ra mn hnh Cu trc bng HangHoaNhap: ging bi 4.2

Cng ngh ADO.NET vi C#

Trang 33/59

Bi tp

-

Xy dng cc chc nng tra cu, v tnh ton Giao din Form nh sau:

-

Trong , chc nng: + + + + + To bng: To cu bng HangHoaNhap, to d liu v xut ra DataGridView Tm theo s th t: Tm chi tit hng ha c s th t c nhp vo, c xut thng bo Tng tr gi: Tnh v xut Tng thnh tin ca bng HangHoaNhap Chn dng: Lc cc dng c s lng >= gi tr nhp vo, sau xut ra li Kt qu Tng tr gi theo iu kin: Tnh v xut Tng thnh tin ca bng HangHoaNhap, vi iu kin S lng >= gi tr nhp vo

Hng dn: Khai bo i tng Datatable Bang_CT_HH_Nhap dng chung trong Form X l nt Tm theo s th t: DataRow Dong = Bang_CT_HH_Nhap.Rows.Find(txtstt.Text); if (Dong!=null) else MessageBox.Show("Tm thy"); MessageBox.Show("Khng tm thy");

X l nt Tng tr gi: object tongtrigia=Bang_CT_HH_Nhap.Compute("Sum(thanh_tien)",""); MessageBox.Show(string.Format("Tng tr gi: {0}", tongtrigia));

-

X l nt Chn dng:

Cng ngh ADO.NET vi C#

Trang 34/59

Bi tp

DataRow[] Dong_chon = Bang_CT_HH_Nhap.Select(string.Format("so_luong>={0}", txtsoluong.Text)); if (Dong_chon.Length != 0) { //Copy cu trc v Constraint ca Bang_CT_HH_Nhap vo bng mi DataTable Bang_chon = Bang_CT_HH_Nhap.Clone(); foreach (DataRow Dong in Dong_chon) Bang_chon.ImportRow(Dong); //import d liu vo bng mi Luoi_ket_qua.DataSource = Bang_chon; }

4.6.

c bng KHOA t CSDL v cp nht d liuMc tiu: S dng DataAdapter c, ghi d liu. S dng s kin RowUpdated ca DataAdapter Yu cu: Xy dng chng trnh c bng KHOA t CSDL QLSinhvien v xut d liu ra mn hnh Xy dng cc chc nng thm, cp nht v xa d liu trn bng KHOA Giao din Form nh sau:

-

Trong , chc nng: + + + + + c bng: c d liu ca bng KHOA trong CSDL QLSinhvien v xut ra DataGridView Thm: Thm mt khoa mi vo bng KHOA (m khoa t ng tng) Xa: Xa mt khoa c m c nhp vo Ghi bng: Lu cc thay i ca bng KHOA xung CSDL Khng ghi: Khi phc li d liu ban u

Hng dn: Khai bo i tng Datatable Bang_khoa v DataAdpter dng chung trong Form . SqlDataAdapter Bo_thich_ung = new SqlDataAdapter("SELECT * FROM khoa", chuoi_ket_noi); X l nt c bng:

Cng ngh ADO.NET vi C#

Trang 35/59

Bi tp

SqlCommandBuilder Bo_tao_lenh = new SqlCommandBuilder(Bo_thich_ung); Bo_thich_ung.RowUpdated += new SqlRowUpdatedEventHandler(da_RowUpdated); Bo_thich_ung.FillSchema(Bang_khoa, SchemaType.Source); Bo_thich_ung.Fill(Bang_khoa); Bang_khoa.Columns["ma_khoa"].ReadOnly = false; Luoi_khoa.DataSource = Bang_khoa; X l s kin da_RowUpdated: //Ly kt ni hin dng SqlConnection Ket_noi = e.Command.Connection; // Kim tra l lnh thm dng mi if ((e.StatementType == StatementType.Insert)) { // Khi to lnh c m s t ng ca dng va chn vo SqlCommand Lenh = new SqlCommand("Select @@IDENTITY", Ket_noi); // Thc hin lnh nhn m s pht sinh t ng int Ma_so = int.Parse(Lenh.ExecuteScalar().ToString()); e.Row[0] = Ma_so; } X l nt Ghi bng: Bo_thich_ung.Update(Bang_khoa); Bang_khoa.AcceptChanges();

4.7.

Xem v cp nht im ca sinh vin (Bi v nh)Mc tiu: S dng DataAdapter c nhiu bng, cp nht d liu 1 bng Yu cu: Xy dng chng trnh th hin danh sch sinh vin v kt qu hc tp Cho php sa im trong bng Ket_qua, sau cp vo CSDL Giao din Form nh sau: (hnh 4.7) + Bn c th sa im ca sinh vin trn li kt qu nhn xt ct im trung bnh ca li Sinh vin

-

Cc chc nng trn Form: + + + c d liu bng Sinh_vien, Khoa v xut ra mn hnh khi m form Chc nng Ghi bng: cp nht bng Ket_qua xung CSDL Chc nng Khng ghi: khi phc li d liu ban u

Hng dn: Khai bo i tng DataSet ds dng chung trong Form X l s kin Load ca form: SqlDataAdapter Bo_thich_ung = new SqlDataAdapter(@"SELECT ma_sinh_vien, ho_sinh_vien + ' ' + ten_sinh_vien ho_ten, 0.0 dtb, ten_khoa FROM Sinh_Vien s join Khoa

Cng ngh ADO.NET vi C#

Trang 36/59

Bi tp

k on s.ma_khoa = k.ma_khoa ORDER BY s.ma_khoa; SELECT ma_sinh_vien, k.ma_mon, ten_mon,diem FROM Ket_qua K JOIN Mon_Hoc M ON K.Ma_Mon=M.Ma_Mon", chuoi_ket_noi); Bo_thich_ung.TableMappings.Add("Table", "sinh_vien"); Bo_thich_ung.TableMappings.Add("Table1", "ket_qua"); Bo_thich_ung.FillSchema(ds, SchemaType.Mapped); Bo_thich_ung.Fill(ds); ds.Tables["sinh_vien"].Columns["ma_sinh_vien"].ReadOnly = false; ds.Relations.Add("R_SV_KQ", ds.Tables["sinh_vien"].Columns["ma_sinh_vien"], ds.Tables["ket_qua"].Columns["ma_sinh_vien"]); ds.Tables["sinh_vien"].Columns["dtb"].Expression = "Avg(child.diem)"; Luoi_sinh_vien.DataSource = ds.Tables["sinh_vien"]; Luoi_ket_qua.DataSource = ds.Tables["sinh_vien"]; Luoi_ket_qua.DataMember = "R_SV_kq";

Hnh 4.7

4.8.

c v cp nht d liu sinh vin (Bi lm thm)Mc tiu: S dng cc i tng trong m hnh ngt kt ni, kt hp vi k thut c/ghi BLOB Yu cu: Ging bi 3.10 S dng cc i tng trong m hnh ngt kt ni x l

Cng ngh ADO.NET vi C#

Trang 37/59

Bi tp

4.9.

Xem danh sch sinh vin, c xp loi khc nhauMc tiu: To DataView v s cc thuc tnh ca DataView to cc view cha d liu khc nhau Yu cu: Xy dng chng trnh th hin 4 danh sch sinh vin loi Gii, Kh, Trung bnh v Yu Xp loi c tnh nh sau: + + + + im trung bnh < 5 : yu 5 < im trung bnh = 8 : Gii

Giao din Form nh sau: (hnh 4.9)

Hng dn:

-

X l s kin Load ca Form: SqlDataAdapter Bo_thich_ung = new SqlDataAdapter(@"SELECT k.ma_sinh_vien, ho_sinh_vien + ' ' + ten_sinh_vien as Ho_ten, str(Avg(diem),4,2) diem_trung_binh FROM ket_qua k join sinh_vien s on k.ma_sinh_vien =s.ma_sinh_vien GROUP BY k.ma_sinh_vien, ho_sinh_vien,ten_sinh_vien", Chuoi_ket_noi); DataTable Bang_ket_qua = new DataTable(); Bo_thich_ung.TableMappings.Add("Table", "ket_qua"); Bo_thich_ung.FillSchema(Bang_ket_qua, SchemaType.Mapped); Bo_thich_ung.Fill(Bang_ket_qua); Bang_ket_qua.Columns.Add("xep_loai", typeof(string)); foreach (DataRow Ket_qua in Bang_ket_qua.Rows) { //Thm ct xep_loai

Cng ngh ADO.NET vi C#

Trang 38/59

Bi tp

double dtb = double.Parse(Ket_qua["diem_trung_binh"].ToString()); string xeploai = ""; if (dtb < 5) xep_loai = "Yu"; else if (dtb < 6.5) xeploai = "Trung bnh"; else if (dtb < 8) xeploai = "Kh"; else xeploai = "Gii"; Ket_qua["xep_loai"] = xeploai; //Gn gi tr mi cho ct xep_loai } //To cc DataView xp lai DataView dvgioi = new DataView(Bang_ket_qua); dvgioi.RowFilter = "xep_loai='Gii'"; DataView dvkha = new DataView(Bang_ket_qua); dvkha.RowFilter = "xep_loai='Kh'"; DataView dvtrungbinh = new DataView(Bang_ket_qua); dvtrungbinh.RowFilter = "xep_loai='Trung bnh'"; DataView dvyeu = new DataView(Bang_ket_qua); dvyeu.RowFilter = "xep_loai='Yu'"; //Xut cc DataView ra mn hnh Luoi_sinh_vien_gioi.DataSource = dvgioi; ..

Hnh 4.9

Cng ngh ADO.NET vi C#

Trang 39/59

Bi tp

4.10. Tra cu sinh vin (Bi v nh) Mc tiu: S dng DataView p dng vo bi ton thc t Yu cu: Xy dng chng trnh cho php tra cu thng tin sinh vin theo nhiu tiu ch khc nhau Giao din form nh sau:

-

c d liu ca bng Sinh_vien v xut ra DataGridView khi m Form Chc nng Tra cu: lc d liu theo cc gi tr c nhp vo, s dng DataView + + Nu no c gi tr th kt hp iu kin lc, ngc li th b qua Xut d liu c lc ra DataGridView

Cng ngh ADO.NET vi C#

Trang 40/59

Bi tp

BI 5: Typed DataSet

5.1. -

To Typed DataSet c, hin th v ghi d liu vi Typed DataSet S dng Table Adapter

c bng KHOAMc tiu: Dng cng c DataSet Designer to mt Typed Dataset Yu cu: To mt Typed DataSet c tn l QLSVDataSet.xsd. Sau to mt DataTable (khng c TableAdapter) c tn l KHOA, c cu trc ging Table KHOA trong CSDL QLSINHVIEN Xy dng chng trnh c d liu KHOA trong CSDL QLSinhvien v xut d liu ra DataGridView, s dng Typed DataSet trn Giao din form nh sau:

Hng dn:

-

X l nt c v xut d liu ra li: QLSVDataSet ds = new QLSVDataSet(); using (SqlConnection con = new SqlConnection(chuoi_ket_noi)) { SqlDataAdapter da = new SqlDataAdapter("Select * From KHOA", con); da.Fill(ds, "Khoa"); dataGridView1.DataSource = ds.Khoa; }

5.2.

c, ghi bng KHOAMc tiu: To v s dng Typed Dataset c v ghi d liu lu trn SQL Server

Cng ngh ADO.NET vi C#

Trang 41/59

Bi tp

Yu cu: To mt Typed DataSet c tn l QLSINHVIEN_DS.xsd. Sau ln lt to cc DataTable v TableAdapter tng ng vi cc bng c trong CSDL QLSINHVIEN Xy dng chng trnh c d liu KHOA trong CSDL QLSinhvien v xut d liu ra DataGridView. Cho php sa v hy d liu trn li v sau lu xung CSDL Giao din form nh sau:

Hng dn: Code x l: ging m hnh ngt kt ni, ch khc l hc vin phi s dng Typed DataSet va to ra

5.3.

Cp nht Ha n bn sch (Bi v nh)Phn cung cp: Gio vin cung cp cho hc vin CSDL QLSach, gm 3 bng: Sach, ChitietHoadon, Hoadon

Mc tiu: To v s dng Typed DataSet, s dng cc phng thc cp nht ca Typed DataSet Yu cu: To mt Typed DataSet c tn l qlsachDataSet.xsd. Sau ln lt to cc DataTable v TableAdapter tng ng vi cc bng trong CSDL QLSach Xy dng chng trnh c d liu 3 bng trong CSDL QLSach v xut d liu ra DataGridView. Cho php thm, sa v hy d liu ca bng hoadon v chitiethoadon, sau lu xung CSDL. Giao din Form c dng nh sau:

Cng ngh ADO.NET vi C#

Trang 42/59

Bi tp

-

Xut d liu ca 3 bng ra mn hnh khi m Form Cho php: + + Thm v sa d liu trc tip trn Danh sch ha n v Chi tit ha n. Xa Ha n v Chi tit ha n da vo gi tr nhp trong TextBox

Sau c th lu li (nhn nt Ghi H/CTH) hoc b qua (nhn nt Khng ghi H/CTH) Hng dn: Khai bo cc i tng dng chung trong Form: qlsachDataSet ds = new qlsachDataSet(); //Khai bo TableAdapter v DataTable ca 2 bng Hoadon v Chitiethoadon, dng cp nht d liu qlsachDataSetTableAdapters.hoadonTableAdapter da_hd = new qlsachDataSetTableAdapters.hoadonTableAdapter(); qlsachDataSetTableAdapters.chitiethoadonTableAdapter da_cthd = new qlsachDataSetTableAdapters.chitiethoadonTableAdapter(); qlsachDataSet.hoadonDataTable hoadon;

Cng ngh ADO.NET vi C#

Trang 43/59

Bi tp

qlsachDataSet.chitiethoadonDataTable cthd; X l s kin Load ca Form: qlsachDataSetTableAdapters.sachTableAdapter da_sach = new qlsachDataSetTableAdapters.sachTableAdapter(); hoadon = ds.hoadon; cthd = ds.chitiethoadon; cthd.socthdColumn.ReadOnly = true; da_sach.Fill(ds.sach); da_hd.Fill(hoadon); da_cthd.Fill(cthd); Luoi_sach.DataSource = ds.sach; Luoi_hoa_don.DataSource = hoadon; Luoi_ct_hoa_don.DataSource = hoadon; Luoi_ct_hoa_don.DataMember = "FK_chitiethoadon_hoadon"; X l nt Xa H: DS.qlsachDataSet.hoadonRow dongHD = hoadon.FindBysohd(txtsodh.Text.Trim()); if (dongHD != null) { dongHD.Delete(); MessageBox.Show("Xa ha n xong"); } else MessageBox.Show("Khng tm thy ha n cn xa"); X l nt Ghi H: da_hd.Update(ds.hoadon); hoadon.AcceptChanges() X l nt Khng ghi H: hoadon.RejectChanges();

5.4.

c v cp nht d liu sinh vin (Bi lm thm)Mc tiu: S dng Typed DataSet, kt hp vi k thut c/ghi BLOB Yu cu: Ging bi 4.8 S dng Typed DataSet v cc phng thc ca Typed Dataset x l

5.5.

Tra cu sinh vin theo khoaMc tiu: To v s dng cc Query ty bin, c tham s Yu cu: B sung 2 Query trong Table SINH_VIEN ca Typed DataSet c to t bi 5.2 (QLSINHVIEN_DS.xsd): + Truy vn c d liu theo iu kin Ma_khoa =

Cng ngh ADO.NET vi C#

Trang 44/59

Bi tp

+ -

Truy vn tnh tng s sinh vin c iu kin Ma_khoa =

Giao din Form nh sau:

+ +

Khi m Form, c tt c sinh vin v xut ra DataGridView Chc nng Lc d liu theo khoa: lc danh sch sinh vin thuc khoa c nhp vo. Sau xut ra DataGridView v tng s sinh vin km theo

Cng ngh ADO.NET vi C#

Trang 45/59

Bi tp

BI 6: Cc x l XML theo c ch d liu ngt kt ni

6.1.

Lu d liu ca DataSet/DataTable vo tp tin XML c d liu t tp tin XML vo DataSet/DataTable c v ghi thng tin lc DataSet (DataSet Schema)

Xut thi trc nghim ra XMLPhn cung cp:

-

Gio vin cung cp cho hc vin CSDL ThiTracNghiem, gm 4 bng: baithi, ctbaithi, cauhoi, thisinh

Mc tiu: c d liu t DataSet/DataTable v ghi vo tp tin Xml Yu cu: Xy dng chng trnh to thi trc nghim: + + D liu thi c c t bng CAUHOI trong CSDL ThiTracNghiem Cho php xut d liu ra tp tin Xml theo 3 dng: c v khng c Schema, c nh dng Diffgram

Giao din Form nh sau:

Cng ngh ADO.NET vi C#

Trang 46/59

Bi tp

+ + +

Xut d liu ca bng CAUHOI ra DataGridView khi m form Ngi dng s chn cc cu hi bng cch click chut vo ct chon Sau xut cc cu hi c chn ra tp tin Xml (click chut vo 1 trong 3 nt trn form) - Tp tin no dng lm d liu cho bi 6.2 ?

Ghi ch: - Hc vin quan st ni dung cc tp tin Xml c to ra t 3 dng nhn xt.

Hng dn: Khai bo DataTable Dethi dng chung trong Form: DataTable Dethi = new DataTable("Cauhoi"); X l s kin Load ca Form: SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM cauhoi", Chuoi_ket_noi); da.Fill(Dethi); //B sung ct chn, dng xut cc cu hi c chn lm thi Dethi.Columns.Add("chon", typeof(bool)); Luoi_cau_hoi.DataSource = Dethi; X l nt Xut IgnoreSchema: dv = new DataView(Dethi); dv.RowFilter = "chon=true"; DataTable dt = dv.ToTable("cauhoi"); dt.Columns.Remove("chon"); dt.WriteXml("Th_mc_lu_tr__thi/tp_tin__thi.xml", XmlWriteMode.IgnoreSchema); Tng t, x l cho 2 nt cn li //To DataTable t DataView

Ghi ch: Hc vin c th s dng DataSet thay v dng DataTable nh Hng dn

6.2.

T chc thi trc nghimMc tiu: c Xml vo DataSet , c v ghi tp tin Xml

Cng ngh ADO.NET vi C#

Trang 47/59

Bi tp

Yu cu: Xy dng chng trnh thi trc nghim: + + D liu thi c c t tp tin Xml (c to ra t bi 6.1) Sau khi thi xong, kt qu thi c ghi ra tp tin Xml (dng cho GV chm thi - bi 6.3)

Giao din Form nh sau:

Hnh 6.2.a: Th sinh nhp thng tin + Sau khi nhp thng tin xong, th sinh nhn nt ng k thi v bt u lm bi

Hnh 6.2.b: ng k thi v lm bi

Cng ngh ADO.NET vi C#

Trang 48/59

Bi tp

+

Nhn nt bi kt thc

chuyn sang cu hi khc, sau khi lm xong nhn nt Np

Ghi ch: Hc vin quan st ni dung cc tp tin Xml c to ra nhn xt Hng dn: Khai bo i tng dng chung trong Form: int thutu = 0;

//lu tr s th t cu hi

DataSet ds = new DataSet("Thi_trac_nghiem"); DataTable Bang_cau_hoi = new DataTable(); DataTable Bang_bai_thi = new DataTable("Bai_thi"); X l s kin Load ca Form: //To cu trc DataTable Bang_bai_thi Bang_bai_thi.Columns.Add("stt", typeof(int)); Bang_bai_thi.Columns.Add("hoten", typeof(string)); Bang_bai_thi.Columns.Add("ngaysinh", typeof(DateTime)); Bang_bai_thi.Columns.Add("noisinh", typeof(string)); X l nt ng k thi: //Thm thng tin th sinh vo Bang_bai_thi DataRow Bai_thi = Bang_bai_thi.NewRow(); Bai_thi["STT"] = txtstt.Text; Bai_thi["hoten"] = txthoten.Text; Bai_thi["ngaysinh"] = txtngaysinh.Text; Bai_thi["noisinh"] = txtnoisinh.Text; Bang_bai_thi.Rows.Add(Bai_thi);

//c cc cu hi t tp tin thi (c to trong bi 6.1)Bang_cau_hoi.ReadXmlSchema(Application.StartupPath + "/Th_mc_lu_tr__thi/tp_tin__thi.xsd"); Bang_cau_hoi.ReadXml(Application.StartupPath + "/Th_mc_lu_tr__thi /tp_tin__thi_diffgram.xml"); //B sung 2 ct stt v chon Bang_cau_hoi.Columns.Add("stt", typeof(int)); //thm 2 bng vo DataSet ds.Tables.Add(Bang_bai_thi); ds.Tables.Add(Bang_cau_hoi); //gn gi tr mc nh vo 2 ct stt v chon foreach (DataRow Cau_hoi in Bang_cau_hoi.Rows) { Cau_hoi["stt"] = txtstt.Text; Cau_hoi["chon"] = -1; } //S th t ca th sinh Bang_cau_hoi.Columns.Add("chon", typeof(int)); //cu tr li ca th sinh

Cng ngh ADO.NET vi C#

Trang 49/59

Bi tp

ds.Relations.Add("r_bt_ch", Bang_bai_thi.Columns["stt"], Bang_cau_hoi.Columns["stt"]); ds.Relations["r_bt_ch"].Nested = true; HienThiCauHoi(); X l HienThiCauHoi: DataRow Cau_hoi=Bang_cau_hoi.Rows[thutu]; lblcauhoi.Text = "Cu hi " + (thutu+1); string noidung = Cau_hoi["noidung"].ToString(); noidung = noidung.Replace(@"\r\n", Environment.NewLine); txtcauhoi.Text = noidung; rdbdapan1.Text = Cau_hoi["chonlua1"].ToString(); rdbdapan2.Text = Cau_hoi["chonlua2"].ToString(); rdbdapan3.Text = Cau_hoi["chonlua3"].ToString(); rdbdapan4.Text = Cau_hoi["chonlua4"].ToString(); if (Cau_hoi["chon"].ToString()!="0") { int chon = int.Parse(Cau_hoi["chon"].ToString()); rdbdapan1.Checked = chon == 1; rdbdapan2.Checked = chon == 2; rdbdapan3.Checked = chon == 3; rdbdapan4.Checked = chon == 4; } else rdbdapan1.Checked=rdbdapan2.Checked=rdbdapan3.Checked=rdbdapan4.Checked= false; Trong s kin CheckedChanged ca cc iu khin RadioButton, ta gn gi tr s th t p n Bang_cau_hoi.Rows[thutu]["chon"] = 1; X l nt Np bi: string duongdan=Application.StartupPath + "/Th_mc_lu_tr_bi_thi/baithi_schema.xsd"; if (!File.Exists(duongdan)) ds.WriteXmlSchema(duongdan); ds.WriteXml(Application.StartupPath +" /Th_mc_lu_tr_bi_thi/"+ txtstt.Text + ".xml",XmlWriteMode.WriteSchema); //p n th nht

6.3.

Chm bi trc nghim (Bi v nh)Mc tiu: c Xml vo DataSet, c v ghi tp tin Xml Yu cu: Xy dng chng trnh Chm thi trc nghim: + + + D liu bi thi c c t tp tin Xml (c to ra t bi 6.2) im thi c tnh theo thang im ty chn (nhp thang im t TextBox) Kt qu thi c xut ra tp tin Xml khc

Giao din Form nh sau:

Cng ngh ADO.NET vi C#

Trang 50/59

Bi tp

+ + +

Nt c bi thi: c tp tin Xml (c to t bi 6.2) v b sung cc ct socaudung, diem, ketqua vo DataTable. Sau xut ra DataGridView Nt Cp nht thang im: tnh li ct diem v ketqua theo thang im mi Nt Xut kt qu: Ghi kt qu trn DataGridView ra tp tin XML mi

Ghi ch: Hc vin quan st ni dung tp tin Xml c to ra nhn xt Hng dn: Khai bo DataSet ds dng chung trong Form To phng thc Doc dng c tp tin xml v to ra kt qu theo yu cu: ds = new DataSet(); DirectoryInfo thu_muc = new DirectoryInfo("Th_mc_lu_tr_bi_thi");

//c cc tp tin bi thi ca th sinh vo DataSetforeach (FileInfo tap_tin in thu_muc.GetFiles()) { DataSet ds_tam = new DataSet(); ds_tam.ReadXml(tap_tin.FullName, XmlReadMode.ReadSchema); ds.Merge(ds_tam); } //Thm ct dungsai vo bng CAUHOI (bng con), dng lu im p n ng ds.Tables[1].Columns.Add("dungsai", typeof(int)); ds.Tables[1].Columns["dungsai"].Expression = "iif(chon=dapan,1,0)"; //Thm 3 ct sau vo bng BAI_THI (bng cha) dng tnh ton kt qu ds.Tables[0].Columns.Add("socaudung", typeof(int)); ds.Tables[0].Columns.Add("diem", typeof(double)); ds.Tables[0].Columns.Add("ketqua", typeof(string)); ds.Tables[0].Columns["socaudung"].Expression = "Sum(child.dungsai)"; ds.Tables[0].Columns["diem"].Expression = string.Format("1.0*socaudung/(Count(child.mach))*{0}", txtthangdiem.Text); //Trn cc DataSet bi thi vo DataSet ds

Cng ngh ADO.NET vi C#

Trang 51/59

Bi tp

ds.Tables[0].Columns["ketqua"].Expression = string.Format("iif(diem>={0},'u','Rt')", double.Parse(txtthangdiem.Text) / 2); Luoi_bai_thi.DataSource = ds.Tables[0]; X l nt c bi thi v Cp nht thang im: gi phng thc Doc(); X l nt Xut kt qu: ds.WriteXmlSchema("Th_mc_lu_tr_kt_qu/ketqua_schema.xsd"); ds.WriteXml("Th_mc_lu_tr_kt_qu/ketqua.xml", XmlWriteMode.WriteSchema);

6.4.

Xut thng tin bn hng (Bi lm thm)Mc tiu: c d liu t DataSet gm nhiu Table v quan h, v ghi ra tp tin Xml Yu cu: Xy dng chng trnh xut thng tin bn sch ra tp tin xml: + + D liu c c t 3 bng trong CSDL QLSACH, c thit lp lp quan h y Cho php xut d liu ra tp tin Xml theo 3 dng: c v khng c Schema, c nh dng Diffgram

Giao din Form nh sau:

+ + +

Xut d liu ca 3 bng ra DataGridView khi m form Cho php thm, sa v hy trc tip trn li Ha n v Chi tit ha n Sau xut d liu ca 3 bng trn ra tp tin Xml (click chut vo 1 trong 3 nt trn form)

Ghi ch: Hc vin quan st ni dung cc tp tin Xml c to ra nhn xt

Cng ngh ADO.NET vi C#

Trang 52/59

Bi tp

BI 7: Transaction

7.1.

To giao tc cc b (Local transaction) To giao tc phn tn (Distributed transaction) Gii quyt vn tranh chp bng cch s dng cc k thut: Pessimistic,Optimistic (Last in wins, First in wins)

Chuyn khon ti ngn hng ABCPhn cung cp:

-

Gio vin cung cp cho hc vin CSDL NGANHANG_ABC, gm 2 bng: Tktietkiem v Tkthanhtoan

Gio vin cung cp cho hc vin CSDL NGANHANG_XYZ, gm 1 bng: TKthanhtoan

Mc tiu: to giao tc cc b (Local Transaction) Yu cu: Xy dng chng trnh thc hin giao dch chuyn khon ti mt ngn hng ABC, ti khon ca ch s hu thanh ton v ti khon c thanh ton trong cng mt ngn hng: + + Cho php xem s d ca ti khon ch s hu trc khi chuyn khon Thc hin giao dch chuyn khon.

Giao din Form nh sau:

+

Chc nng Xem s d: Nhp s ti khon v s pin, ngi dng s xem c s d hin ti

Cng ngh ADO.NET vi C#

Trang 53/59

Bi tp

+

Chc nng Chuyn khon: Nhp s ti khon, s pin, s tin ca ch s hu thanh ton v s ti khon ca ch s hu c thanh ton, chng trnh s thc hin giao dch chuyn khon v xut s d ca Ti khon c thanh ton ra mn hnh

Hng dn: Lu chung: ti liu ch hng dn phn ct li, hc vin phi b sung cc x l kim tra gi tr nhp vo, to ra mt chng trnh hon chnh. X l nt Chuyn khon: SqlConnection Ket_noi = new SqlConnection(Chuoi_ket_noi); string capnhat_tktt = string.Format("UPDATE Tktietkiem SET sodu=sodu-{0} WHERE sotk='{1}' and sopin='{2}'", txtsotien.Text, txtTKthanhtoan.Text,txtsopin.Text); string capnhat_tkduoctt = string.Format("UPDATE Tkthanhtoan SET sodu=sodu+{0} WHERE sotk='{1}'; SELECT sodu FROM Tkthanhtoan WHERE sotk='{1}'", txtsotien.Text, txtTKduocthanhtoan.Text ); Ket_noi.Open(); SqlTransaction Giao_tac = Ket_noi.BeginTransaction(); try { SqlCommand Bo_lenh_1 = new SqlCommand(capnhat_tktt, Ket_noi); Bo_lenh_1.Transaction = Giao_tac; Bo_lenh_1.ExecuteNonQuery(); SqlCommand Bo_lenh_2 = new SqlCommand(capnhat_tkduoctt, Ket_noi); Bo_lenh_2.Transaction = Giao_tac; object Ket_qua=Bo_lenh_2.ExecuteScalar(); double sodu = double.Parse(Ket_qua.ToString()); Giao_tac.Commit(); txtSodu.Text = sodu.ToString("#,###.00"); MessageBox.Show("Giao dch thc hin thnh cng !!!","Thng bo"); } catch (Exception ex) { Giao_tac.Rollback(); MessageBox.Show("Li: " + ex.Message); } finally {

Cng ngh ADO.NET vi C#

Trang 54/59

Bi tp

Ket_noi.Close(); } M rng: kim tra S tin chuyn khon c ln hn hn S d hin ti khng?, nu c th ngng giao dch v thng bo

7.2.

Chuyn khon t ngn hng ABC n ngn hng XYZMc tiu: to giao tc phn b (Distributed Transaction) Yu cu: Xy dng chng trnh thc hin giao dch chuyn khon t ngn hng (NH) ABC n NH XYZ, ti khon ch s hu thanh ton NH ABC v ti khon c thanh ton NH XYZ: + + Cho php xem s d ca ti khon ch s hu trc khi chuyn khon Thc hin gao dch chuyn khon

Giao din Form nh sau:

-

Cc yu cu chc nng trn Form: ging bi 7.1

7.3.

c v cp nht bng KHOAMc tiu: s dng k thut First in Wins Yu cu: Xy dng chng trnh c v cp bng KHOA: + + Hai ngi dng cng m mn hnh Danh sch Khoa Ngi no cp nht trc th s thnh cng.

Giao din Form nh sau:

Cng ngh ADO.NET vi C#

Trang 55/59

Bi tp

User1 cp nht trc Hng dn: -

User2 cp nht sau

S dng m hnh nt kt ni x l 2 nt chc nng c v Ghi

7.4.

c v cp nht bng KHOAMc tiu: s dng k thut Last in Wins Yu cu: Xy dng chng trnh c v cp bng KHOA: + + Hai ngi dng cng m mn hnh Danh sch Khoa Ngi no cp nht sau th CSDL s lu gi tr

Giao din Form nh sau:

Hnh 7.4a: Khi mi m form

Cng ngh ADO.NET vi C#

Trang 56/59

Bi tp

User1 cp nht trc Hng dn: Khai bo cc i tng dng chung trong Form: SqlConnection Ket_noi = new SqlConnection(Chuoi_ket_noi); SqlDataAdapter Bo_thich_ung = null; DataSet ds = new DataSet(); X l s kin Load ca Form:

User2 cp nht sau

Bo_thich_ung = new SqlDataAdapter("SELECT * FROM khoa", Ket_noi); SqlCommand Bo_lenh_cap_nhat = new SqlCommand("update khoa set ten_khoa= @ten_khoa where ma_khoa=@ma_khoa",Ket_noi); Bo_lenh_cap_nhat.Parameters.Add("@ma_khoa", SqlDbType.Int, 4, "ma_khoa"); Bo_lenh_cap_nhat.Parameters.Add("@ten_khoa", SqlDbType.NVarChar, 50, "ten_khoa"); Bo_thich_ung.UpdateCommand = Bo_lenh_cap_nhat;

Cng ngh ADO.NET vi C#

Trang 57/59

Bi tp

BI 8: Cc tnh nng nng cao ca ADO.NET

8.1. + + + -

Thc hin batch update

Tng hc bng cho sinh vinMc tiu: s dng k thut Batch DataSet Update Yu cu: Xy dng chng trnh cp nht hc bng ca Sinh vin trong CSDL QLSinhvien: Tng 5% hc bng cho sinh vin khoa Cng ngh thng tin c im ca mn C s d liu l 10 Cho php thay i gi tr BatchSize khi cp nht hc bng Xut ra kt qu s dng c cp nht v s ln truy xut CSDL (round trip)

Giao din Form nh sau:

+ +

c d liu khi m form v xut ra DataGridView Chc nng Cp nht: tng 5% hc bng cho sinh vin khoa Cng ngh thng tin c im ca mn C s d liu l 10 v xut kt qu s dng c cp nht v s ln truy xut CSDL

Hng dn: Khai bo cc i tng dng chung:

Cng ngh ADO.NET vi C#

Trang 58/59

Bi tp

DataSet ds = new DataSet(); SqlConnection Ket_noi; int so_dong_cap_nhat = 0; int so_lan_ket_noi_csdl = 0; X l s kin Load ca Form: ds = new DataSet(); string Lenh = @"SELECT sv.ma_sinh_vien, Ho_sinh_vien, ten_sinh_vien, hoc_bong, ma_khoa, ma_mon, diem FROM sinh_vien sv INNER JOIN Ket_qua kq ON sv.ma_sinh_vien= kq.ma_sinh_vien WHERE ma_mon=2 And diem =10"; Ket_noi = new SqlConnection(Chuoi_ket_noi); SqlDataAdapter Bo_thich_ung = new SqlDataAdapter(Lenh, Ket_noi); Bo_thich_ung.Fill(ds); Luoi_sinh_vien.DataSource = ds.Tables[0]; X l nt Cp nht: so_lan_ket_noi_csdl = so_dong_cap_nhat = 0; Ket_noi = new SqlConnection(Chuoi_ket_noi); string Lenh = "SELECT ma_sinh_vien, ho_sinh_vien, ten_sinh_vien, hoc_bong FROM sinh_vien"; SqlDataAdapter Bo_thich_ung = new SqlDataAdapter(Lenh, Ket_noi); SqlCommandBuilder Bo_tao_lenh = new SqlCommandBuilder(Bo_thich_ung); foreach (DataRow Dong in ds.Tables[0].Rows) Dong["hoc_bong"] = Double.Parse(Dong["hoc_bong"].ToString()) * 1.05; Bo_thich_ung.UpdateBatchSize = int.Parse(txtbatchsize.Text); Bo_thich_ung.RowUpdating += new SqlRowUpdatingEventHandler(Bo_thich_ung_RowUpdating); Bo_thich_ung.RowUpdated += new SqlRowUpdatedEventHandler(Bo_thich_ung_RowUpdated); Bo_thich_ung.Update(ds.Tables[0]); ds.Tables[0].AcceptChanges(); MessageBox.Show(string.Format("Cp nht thnh cng. S dng c cp nht: {0}. S ln truy xut CSDL: {1}", so_dong_cap_nhat, so_lan_ket_noi_csdl) ); X l s kin RowUpdating: so_dong_cap_nhat++; X l s kin RowUpdated: so_lan_ket_noi_csdl++;

//lu tr s dng c cp nht //lu tr s round trip

Cng ngh ADO.NET vi C#

Trang 59/59