Professional Documents
Culture Documents
BI TP
CHNG TRNH K THUT VIN NGNH LP TRNH Hc phn 2 --CNG NGH ADO.NET VI C#
Bi tp
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
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
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
im
10 9 7 8.5 7 6 7 9 7.5
Trang 3/59
Bi tp
CT TT RR CS CT TT RR CS CT
4 5 3 9 1 8.5 9 2 1
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 (*)
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 <= im trung bnh < 6.5 6.5 <= im trung bnh < 8 im trung bnh >= 8 f. Xp loi Yu Trung bnh Kh Gii
Hin th danh sch cc mn hc cng vi im thi cao nht m sinh vin t c trong mn hc , kt qu tr v gm m mn, tn mn, im thi cao nht ca sinh vin (*)
g. Hin th danh sch cc mn hc cng vi s lng sinh vin ng k hc cc mn hc , kt qu tr v gm m mn, tn mn, s lng sinh vin ng k (*) h. Hin th danh sch cc mn hc c s lng sinh vin ng k hc ng nht, kt qu tr v gm m mn, tn mn v s lng sinh vin ng k (*) i. Thng k s lng sinh vin u v rt ca tng mn, bit rng sinh vin rt khi im thi nh hn 5, kt qu tr v gm m mn, tn mn, s sinh vin u, s sinh vin rt (*)
Trang 5/59
Bi tp
M sinh vin: H01 H v tn: L Thanh Tng Ngy sinh: 23/1/1992 Gii tnh: Nam a ch: 122 L Chnh Thng Hc bng: 100,000 M khoa: HO c. Thm cc im thi ca sinh vin c m H01 vo bng KET_QUA vi cc thng tin sau: Mi im thi s tng ng vi mt m mn hc trong bng MON_HOC Mc nh im thi l 6 Sa mu tin a. Cp nht ngy sinh ca sinh vin H Tun thnh 05/07/1980 b. Tng hc bng ln 5% cho cc sinh vin hc khoa Cng ngh thng tin v c hc bng >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 H01
c.
Xa tt c nam sinh vin ca khoa Tin hc trong bng SINH_VIEN (nhn xt: c xa c khng?)
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
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
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
+ +
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: <k panel>.Enabled = <k Radio SQL Server Authentication>.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
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"); }
Hng dn X l nt ODBC:
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
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
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
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();
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
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)
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(); }
Trang 14/59
Bi tp
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
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); }
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()) {
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
Hng dn: X l nt c:
Trang 17/59
Bi tp
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
Trang 19/59
Bi tp
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();
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:
Trang 21/59
Bi tp
Hng dn: Khai bo cc bin dng chung trong Form: List<Hinh> Danh_sach_hinh; string Chuoi_ket_noi = ..; SqlConnection Ket_noi; int Vi_tri = 0; -
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<Hinh>(); //Khi to Ket_noi (HV t code) . string Lenh = @"SELECT Productphotoid Mahinh, Largephotofilename Tenhinh, Largephoto Hinh From Production.Productphoto";
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);
Trang 23/59
Bi tp
Ket_noi.Close(); X l cc nt di chuyn:
//Nt u
Vi_tri = 0; Hien_thi();
//Nt trc
Vi_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();
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)
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
Trang 24/59
Bi tp
Hnh 3.10.a
Hnh 3.10.b
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:
Trang 26/59
Bi tp
Th hin iu khin Windows Media Palyer trn thanh Toolbox: + Khai bo Component:
Xut hin iu khin Windows Media Player trn thanh ToolBox, bn s dng nh cc iu khin khc
Trang 27/59
Bi tp
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 KHOA
Mc 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
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;
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: <K DataGridView>.DataSource = Bang_khoa;
4.2.
Trang 29/59
Bi tp
4.3.
Xy dng cc chc nng thm, cp nht v xa d liu trn bng KHOA Giao din Form nh sau:
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.
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:
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.
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 Chn dng:
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.
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:
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.
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
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.
Trang 37/59
Bi tp
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
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
Trang 39/59
Bi tp
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
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 KHOA
Mc 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.
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.
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:
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;
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.
5.5.
Trang 44/59
Bi tp
+ -
+ +
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
Trang 45/59
Bi tp
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)
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
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
6.2.
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)
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
Trang 48/59
Bi tp
Nhn nt bi kt thc
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);
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.
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");
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 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)
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)
Gio vin cung cp cho hc vin CSDL NGANHANG_ABC, gm 2 bng: Tktietkiem v 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.
Chc nng Xem s d: Nhp s ti khon v s pin, ngi dng s xem c s d hin ti
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 {
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.
7.3.
Trang 55/59
Bi tp
7.4.
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:
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;
Trang 57/59
Bi tp
8.1.
+ + + -
+ +
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
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++;
Trang 59/59