Cs06
Upcoming SlideShare
Loading in...5
×
 

Cs06

on

  • 208 views

 

Statistics

Views

Total Views
208
Views on SlideShare
208
Embed Views
0

Actions

Likes
0
Downloads
5
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

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

    Cs06 Cs06 Presentation Transcript

    • Bài gi ng môn h c L p trình Windows Form v i C# Bài 7: ADO.NET Lương Tr n Hy Hi n FIT, HCMUP
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM N i dung ADO.NET Sơ lư c l ch s phát tri n Ki n trúc ADO.NET .NET Data Provider DataSet H i & Đáp 2
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Gi i thi u ADO.NET ActiveX Data Object .NET (ADO.NET) – Công ngh c a MS – Phát tri n t n n t ng ADO – Cung c p các l p đ i tư ng và hàm thư vi n ph c v cho vi c k t n i và x lý d li u .NET Application ADO.NET 3
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Gi i thi u ADO.NET Mô hình .NET Framework Microsoft .NET Framework Common Language Runtime Base Classes Web Services User Interface Data and XML ADO.NET XML ... ... 4
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM N i dung • ADO.NET Sơ lư c l ch s phát tri n Ki n trúc ADO.NET .NET Data Provider DataSet H i & Đáp 5
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Sơ lư c l ch s phát tri n Native API ODBC Driver Driver Driver Application Application Database Database DB API DB API DB API ODBC API DB API DB API DB API Open DataBase Connectivity 6
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Sơ lư c l ch s phát tri n (cont) OLEDB và ADO ADO OLE DB Application Non-Relational Data Relational Data ODBC Driver Driver Driver Provider Provider Provider Provider OLE: Object Linking and Embedding 7
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Sơ lư c l ch s phát tri n (cont) ADO.NET 8
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Introduction Stored into Database (Oracle, SQL Server) Client ADO.NET Data access technology 9
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM ADO.NET architecture Database XML XML 10
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM ADO.NET (tt) H tr b i .Net Platform S d ng công ngh XML đ chuy n đ i d li u. Tương tác v i t t c các lo i cơ s d li u. Kh năng th c thi nhanh. S d ng cho các lo i ng d ng client- server. 11
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM N i dung ADO.NET Sơ lư c l ch s phát tri n Ki n trúc ADO.NET .NET Data Provider DataSet H i & Đáp 12
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Ki n trúc Connected Model Disconnected Model Chương trình Chương trình 13
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM ADO.NET ADO.NET là m t ph n c a .NET Framework – Thư vi n l p có ch c năng thao tác d li u trong ngôn ng MS.NET ADO.NET là d ng “Disconnected” – Cho phép l y c m t c u trúc ph c t p c a DL t CSDL, sau đó ng t k t n i r i m i th c hi n thao tác x lý! – Trư c đây ADO luôn ph i duy trì k t n i trong quá trình làm vi c. 14
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Môi trư ng “connected” M i user có m t k t n i c đ nh t i data source Ưu đi m – Môi trư ng đư c b o v t t – Ki m soát đư c s đ ng b – D li u luôn đư c m i Như c – Ph i có m t k t n i m ng c đ nh – Scalability 15
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Môi trư ng “disconnected” M t t p con c a d li u trung tâm đư c sao chép và b sung đ c l p, sau đó s đư c merge l i vào d li u trung tâm. Ưu đi m – Có th làm vi c b t c lúc nào, cũng như có th k t n i b t kỳ vào Data Source – Cho phép user khác có th k t n i – Nâng cao hi u su t th c hi n c a ng d ng Khuy t – D li u không đư c c p nh t m t cách nhanh nh t – S tranh ch p có th xu t hi n và ph i gi i quy t 16
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM ADO.NET ADO.NET m nh m – K th a các ưu đi m c a ADO – K t h p v i ý tư ng thi t k hoàn toàn m i Đ c đi m n i b t – Thi t k hoàn toàn d a vào XML • Chu n giao ti p d li u t t nh t trên môi trư ng Internet hi n nay – Thi t k hoàn toàn hư ng đ i tư ng • Đ c trưng c a thư vi n .NET Framework 17
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM ADO.NET vs. ADO Đặc Điểm ADO ADO.NET DL xử lý được đưa vào bộ nhớ dưới dạng Recordset : tương đương 1 bảng dữ liệu trong database Dataset : tương đương 1 database Duyệt dữ liệu Recordset chỉ cho phép duyệt tuần tự, từng dòng một. Dataset : duyệt “tự do, ngẫu nhiên”, truy cập thẳng tới bảng, dòng ,cột mong muốn. Dữ liệu ngắt kết nối Recordset thiên về hướng kết nối, nên việc hỗ trợ ngắt kết nối không mạnh Dataset hỗ trợ hoàn toàn ngắt kết nối Trao đổi dữ liệu qua Internet Khả năng trao đổi dữ liệu ADO qua Internet thường có nhiều hạn chế. Do dùng chuẩn COM ADO.NET trao đổi dữ liệu qua Internet rất dễ dàng vì ADO.NET được thiết kế theo chuẩn XML, là chuẩn dữ liệu chính được sử dụng để trao đổi trên Internet.
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM ADO.NET Ki n trúc c a ADO.NET g m 2 ph n chính Ph n k t n i: s d ng khi k t n i CSDL và thao tác d li u, ph i th c hi n k t n i khi thao tác • Connection: qu n lý vi c đóng m DB – ???Connection: SqlConnection, OleDbConnection • Command: l nh truy v n, tương tác d li u khi đang l p k t n i – ???Command: SqlCommand, OleDbCommand • DataReader: đ c d li u, ch x lý 1 dòng d li u t i m t th i đi m – ???DataReader: SqlDataReader, OleDbDataReader • DataAdapter: c u n i gi a DataBase và DataSet 19
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM ADO.NET Ph n ng t k t n i: là DataSet – DataSet không quan tâm đ n Database thu c ki u gì, mà l y d li u t DataAdapter đ x lý – DataSet xem như m t Database trong b nh : b ng, quan h … – DataSet có các thành ph n con như • DataTable • DataRow • DataColumn • DataRelation • Các đ i tư ng nhóm: DataTableCollection, DataRowCollection, DataColumnCollection 20
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Mô hình đ i tư ng ADO.NET 21
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Namespace System.Data — All generic data access classes System.Data.Common — Classes shared (or overridden) by individual data providers System.Data.Odbc — ODBC provider classes System.Data.OleDb — OLE DB provider classes System.Data.ProviderBase — New base classes and connection factory classes System.Data.Oracle — Oracle provider classes System.Data.Sql — New generic interfaces and classes for SQL Server data access System.Data.SqlClient — SQL Server provider classes System.Data.SqlTypes — SQL Server data types 22
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Các l p thư vi n ADO.NET System.Data.OleDb: Access, SQL Server, Oracle System.Data.SqlClient: SQL Server System.Data.OracleClient: Oracle Đ c đi m: – C ba thư vi n trên v giao ti p l p trình là gi ng nhau – Dùng thư vi n SqlClient truy xu t SQL Server nhanh hơn OleDb – Tương t cho OracleClient 23
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM .NET Data Provider Các thành ph n .NET Data Provider 24
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Connected Model K t n i vào CSDL Th c hi n l nh – Thêm/Xóa/S a d li u – Đ c d li u t CSDL 25
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Connected Model K t n i vào CSDL – Các l p ph trách k t n i • ODBCConnection • OleDBConnection • SqlConnection • OracleConnection – Thu c tính quan tr ng • ConnectionString: xác đ nh ngu n d li u c n k t n i – Phương th c quan tr ng • Open: m k t n i • Close: đóng k t n i 26
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM .NET Data Provider - Connection Các đ i tư ng Connection tuân th IDbConnection interface. ConnectionString: lo i Data Source c n k t n i. Open(): thi t l p k t n i đ n Data Source. Close(): ng t k t n i đ n Data Source. Data SourceApplication Connection 27
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM .NET Data Provider – Connection (cont) K t n i vào CSDL Access OleDbConnection cnn = new OleDbConnection(); cnn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0; Data Source=QLHS.mdb"; cnn.Open(); //Các lệnh cần thực hiện cnn.Close(); 28
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM .NET Data Provider – Connection (cont) K t n i vào CSDL SQL Server: SqlConnection cnn = new SqlConnection(“server= HIENLTH-PCSQLEXPRESS; database = QLHS; user id=sa; password=sa”); cnn.Open(); // Th c hi n truy v n d li u cnn.Close(); 29
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM SQL2005 ConnectionString Theo đ c quy n c a SQL Server (có user, pass): server= HIENLTH-PCSQLEXPRESS; database = QLHS; user id=sa; password=sa Theo đ c quy n c a h đi u hành: server= HIENLTH-PCSQLEXPRESS; database = QLHS; Trusted Connection = True; server= HIENLTH-PCSQLEXPRESS; database = QLHS; Integrated Security = True; 30
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM T p tin lưu tr k t n i Cho phép ngư i dùng có th c u hình các giá tr thu c tính cho chu i k t n i CSDL. Thư ng có d ng *.ini, *.txt. T .NET 1.0 tr lên có th s d ng t p tin App.config (đ nh d ng XML) ch a khai báo các tham s cùng giá tr và các ch th khác. Ví d : T p tin DBConfig.ini 31
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Đ c thông tin t p tin lưu tr k t n i Lo i *.ini, *.txt s d ng StreamReader (using System.IO) StreamReader docfile = new StreamReader(@"DBConfig.ini"); servername = Tach(docfile.ReadLine()); databasename = Tach(docfile.ReadLine()); username = Tach(docfile.ReadLine()); password = Tach(docfile.ReadLine()); 32
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Đ c thông tin t p tin lưu tr k t n i Lo i App.config <?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="SqlServer" connectionString="server=HIENLTH- PCsqlexpress;database=SEQLHS;integrated security=true" providerName="System.Data.SqlClient"/> </connectionStrings> </configuration> 33
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Đ c thông tin t p tin lưu tr k t n i Lo i App.config: connectionstring = ConfigurationManager.ConnectionStrings[tên]. ConnectionString; Ví d : con.ConnectionString = ConfigurationManager.ConnectionStrings[“SqlServer "]. ConnectionString; 34
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM .NET Data Provider - Command Data SourceApplication Connection 011010011011010011 Command 35
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM .NET Data Provider - Command Các đ i tư ng Command tuân th IDbCommand interface. Connection: k t n i dùng đ th c hi n câu l nh. CommandText: câu l nh SQL c n th c hi n trên Data Source. CommandType: lo i câu l nh trong CommandText (Text, TableDirect, StoredProc). ExecuteScalar(): th c hi n câu l nh trong CommandText, k t qu tr v là m t giá tr đơn. ExecuteNonQuery(): th c hi n câu l nh trong CommandText và không có k t qu tr v . ExecuteReader(): th c hi n câu l nh trong CommandText, k t qu tr v là m t DataReader. 36
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Command (cont) – SQL Server SqlConnection cnn = new SqlConnection(“server=HIENLTH- PCSQLEXPRESS; database=QLHS; user id=sa; password=sa”); SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn; cmd.CommandText = “SELECT COUNT(*) FROM HocSinh”; cmd.CommandType = CommandType.Text; cnn.Open(); int count = (int)cmd.ExecuteScalar(); cnn.Close(); 37
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Command (cont) – SQL Server SqlConnection cnn = new SqlConnection(“server=HIENLTH- PCSQLEXPRESS; database=QLHS; user id=sa; password=sa”); SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn; cmd.CommandText = “INSERT INTO HocSinh(Ho, Ten, DienThoai) VALUES(N‘Nguy n Văn’, N‘Trư ng’, ‘0989366990’)”; cmd.CommandType = CommandType.Text; cnn.Open(); cmd.ExecuteNonQuery(); cnn.Close(); 38
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Command (cont) – MS Access Th c hi n l nh – Thêm/Xóa/S a d li u Ví dụ: OleDbCommand cmd = new OleDbCommand(); cmd.Connection = cnn; cmd.CommandText = “INSERT INTO Hocsinh VALUES(5, 'Lê Văn Xiêm','11/12/2006', 'Khánh Hòa', '221 Nguy n Văn C ')"; cmd.ExecuteNonQuery(); 39
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM .NET Data Provider - Parameter M c đích s d ng: M t vài giá tr trong câu l nh ch bi t khi th c hi n câu l nh. C n th c hi n câu l nh nhi u l n v i các giá tr khác nhau. Các bư c th c hi n: Tham s hóa câu l nh: ? ho c @[tên tham s ]. T o các parameters tương ng cho command. Đ t giá tr cho các parameter m i khi dùng command th c hi n câu l nh. 40
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM .NET Data Provider – Parameter(cont) Tham s hóa SQL Data Provider: cmd.CommandText = “SELECT * FROM HocSinh WHERE tenhocsinh = @ten”; cmd.CommandText = “INSERT INTO HocSinh(id_hocsinh, tenhocsinh, dtb)” + “ VALUES(@id, @ten, @dtb)”; Các provider khác: cmd.CommandText = “SELECT * FROM HocSinh WHERE tenhocsinh = ?”; cmd.CommandText = “INSERT INTO HocSinh(id_hocsinh, tenhocsinh, dtb)” + “VALUES(?, ?, ?)”; 41
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM .NET Data Provider – Parameter(cont) T o các parameter cmd.Parameters.Add(“@id”, 5); cmd.Parameters.Add(“@ten”, “Nguy n Văn A”); cmd.Parameters.Add(“@dtb”, 8.5); Đ t giá tr cho các parameter foreach (Student s in studentList) { cmd.Parameters[“@id”] = i; cmd.Parameters[“@ten”] = s.studentName; cmd.Parameters[“@dtb”] = s.studentMarks; cmd.ExecuteNonQuery(); } 42
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Parameter(cont) – MS Access Ví d OleDbCommand cmd = new OleDbCommand(); cmd.Connection = cnn; cmd.CommandText = "INSERT INTO Hocsinh VALUES (@Ma,@Ten,@Diachi,@NgaySinh,@Toan,@Van)“; OleDbParameter para=cmd.Parameters.Add("@Ma",OleDbType.Integer); para.Value=1; para=cmd.Parameters.Add("@Ten",OleDbType.VarWChar); para.Value= N"Lê Văn A"; para=cmd.Parameters.Add("@Diachi",OleDbType.VarWChar); para.Value= N"Nguy n Văn C "; para = cmd.Parameters.Add("@Ngaysinh", OleDbType.Date); para.Value = new DateTime(1982,10,1); para=cmd.Parameters.Add("@Toan",OleDbType.Integer); para.Value=5; para=cmd.Parameters.Add("@Van",OleDbType.Integer); para.Value=7; cmd.ExecuteNonQuery(); 43
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM .NET Data Provider – DataReader MaHS HoTen DiaChi i HocSinh I DiaChi i Data SourceApplication Connection Command DataReader ExecuteReader() Read() 011010011011010011
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM .NET Data Provider – DataReader DataReader là gì? – Ch di chuy n t i phía trư c, ch đ c – truy c p d li u nhanh, – k t n i đ n ngu n d li u (data source) – Qu n lý d li u, ho c ràng bu c vào đi u khi n list- bound – S d ng tài nguyên 45
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM .NET Data Provider - DataReader Các đ i tư ng DataReader tuân th interface IDataReader. HasRow: cho bi t còn d li u đ đ c n a không. Read(): đ c m t m u tin vào DataReader. Toán t [ i ]: truy xu t đ n c t i trong m u tin đ c đư c. Close(): đóng DataReader. Lưu ý: Truy xu t tu n t và không quay lui. Không c p nh t d li u. Cơ ch k t n i. 46
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM .NET Data Provider – DataReader (cont) SqlConnection cnn = new SqlConnection(“server=localhost; database=Northwind; user id=sa; password=sa”); SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn; cmd.CommandText = “select * from Orders”; cmd.CommandType = CommandType.Text; cnn.Open(); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { MessageBox.Show(dr[“CustomerID”].ToString()); } dr.Close(); cnn.Close(); 47
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM DataReader (cont) – MS Access Th c hi n l nh – Đ c d li u t CSDL – Ví d OleDbDataReader rd = cmd.ExecuteReader(); while (rd.Read()) { if (!rd.IsDBNull(3)) MessageBox.Show(dr[“CustomerID”].ToString()); } 48
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM .NET Data Provider - SqlDataAdapter B đ c d li u t CSDL ngu n (SQLServer) và đ vào đ i tư ng DataSet hay DataTable. Phân trang d li u Phương th c: – Fill(datasource) – Fill(datasource, start, number, “tablename”) 49
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM .NET Data Provider - DataAdapter Các đ i tư ng DataAdapter tuân th interface IDbDataAdapter. Fill(DataSet): dùng SelectCommand l y d li u t Data Source đ vào DataSet. Update(DataSet): dùng InsertCommand, UpdateCommand và DeleteCommand c p nh t d li u trong DataSet vào Data Source. SelectCommand UpdateCommand InsertCommand DeleteCommand DataAdapter Data Source DataSet 50
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM .NET Data Provider – DataAdapter (cont) SqlConnection cnn = new SqlConnection(“server=localhost; database=Northwind; user id=sa; password=sa”); SqlDataAdapter da = new SqlDataAdapter(“select * from Orders”, cnn) DataSet ds = new DataSet(); da.Fill(ds); // Does something on the DataSet. da.Update(ds); 51
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM N i dung Sơ lư c l ch s phát tri n Ki n trúc ADO.NET .NET Data Provider DataSet H i & Đáp 52
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM System.Data namespace DataSet — This object is designed for disconnected use and can contain a set of DataTables and include relationships between these tables. DataTable — A container of data that consists of one or more DataColumns and, when populated, will have one or more DataRows containing data. DataRow — A number of values, akin to a row from a database table, or a row from a spreadsheet. DataColumn — This object contains the definition of a column, such as the name and data type. DataRelation — A link between two DataTable classes within a DataSet class. Used for foreign key and master/detail relationships. Constraint — This class defines a rule for a DataColumn class (or set of data columns), such as unique values. 53
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM DataSet DataSet là cơ s d li u đư c lưu tr trong b nh chính (in- memory database). Cơ ch không k t n i. G m các đ i tư ng – DataTable – DataRelation Data Source DataSet DataSet là gì? Ánh x 54
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM DataSet (cont) DataSet DataTable Columns Rows DataColumn DataRow Tables Relations DataRelation 55
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Các phương th c c a DataSet Thêm 1 đ i tư ng DataTable: ds.Tables.Add(datatable_name); Xóa 1 đ i tư ng: – ds.Tables.Remove(datatable_name); – ds.Table.RemoveAt(datatable_index); Lo i b t t c DataTable: ds.Tables.Clear(); Ki m tra t n t i: ds.Tables.Contains(datatable_name); Ki m tra t n t i và có th xóa đư c: ds.Tables.CanRemove(datatable_name); Đ m s lư ng DataTable: ds.Tables.Count (thu c tính) 56
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Các phương th c c a DataSet Ghi ra file XML: ds.WriteXml(ten_file_xml); Đ c t file XML: ds.ReadXml(ten_file_xml); 57
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM DataSet - DataTable DataTable th hi n m t b ng trong cơ s d li u. G m các đ i tư ng: – DataColumn – DataRow Các thu c tính và phương th c: TableName: tên b ng. Columns: danh sách các c t (DataColumn). Rows: danh sách các m u tin (DataRow). PrimaryKey: danh sách các c t làm khóa chính (DataColumn). NewRow(): t o m t m u tin m i. 58
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM DataSet - DataColumn DataColumn th hi n m t c t trong b ng. Các thu c tính và phương th c: ColumnName: tên c t. DataType: ki u d li u c t. 59
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM DataSet - DataRow DataRow th hi n m t m u tin trong b ng. Các thu c tính và phương th c: RowState: tr ng thái c a m u tin (Added, Modified, Deleted, Unchanged, Detach). Toán t [i]: truy xu t đ n c t i c a m u tin. Delete(): đánh d u xóa m u tin. 60
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM DataSet (cont) DataTable table = new DataTable(“SinhVien”); table.Columns.Add(new DataColumn(“MSSV”, Type.GetType(“Int32”)); table.Columns.Add(new DataColumn(“HoTen”, Type.GetType(“string”)); table.PrimaryKey = new DataColumn[] { table.Columns[“MSSV”] }; DataRow row = table.NewRow(); row[“MSSV”] = 123; row[“HoTen”] = “Nguy n Văn A”; table.Rows.Add(row); 61
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM DataSet (cont) SqlConnection cnn = new SqlConnection(“server=HIENLTH-PCSQLEXPRESS; database=Northwind; user id=sa; password=sa”); SqlDataAdapter da = new SqlDataAdapter(“select * from Orders”, cnn) DataSet ds = new DataSet(); da.Fill(ds); foreach (DataRow row in ds.Tables[0].Rows) row[“OrderDate”] = DateTime.Now; da.Update(ds); 62
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM DataSet (cont) SqlConnection cnn = new SqlConnection(“server=HIENLTH- PCSQLEXPRESS; database=Northwind; user id=sa; password=sa”); SqlDataAdapter da = new SqlDataAdapter(“select * from Orders”, cnn) DataSet ds = new DataSet(); da.Fill(ds); foreach (DataRow row in ds.Tables[0].Rows) if (row[“CustomerID”].ToString() == “Nguy n Văn A”) row.Delete(); da.Update(ds); 63
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM DataSet (cont) So sánh DataSet và DataReader: T c đ truy xu t. Bô nh lưu tr . Thu n ti n trong thao tác. Cơ ch k t n i và không k t n i. 64
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM DataSet (cont) – MS Access Đ c d li u t CSDL OleDbDataAdapter da = new OleDbDataAdapter( "select * from HocSinh", cnn); DataSet dsHocSinh=new DataSet(); da.Fill(dsHocSinh, "HocSinh"); for (int i = 0; i < dsHocSinh.Tables["HocSinh"].Rows.Count; i++) { listBox1.Items.Add( dsHocSinh.Tables["HocSinh"].Rows[i]["HoTen"].ToString()); } 65
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM DataSet (cont) – MS Access X lý d li u – Thêm d li u DataRow newRow; newRow=dsHocSinh.Tables["HocSinh"].NewRow(); newRow[0] = 10; newRow[1] = "Lê Th B"; dsHocSinh.Tables["HocSinh"].Rows.Add(newRow); – Xoá d li u dsHocSinh.Tables["HocSinh"].Rows[0].Delete(); – Thay đ i d li u DataRow row = dsHocSinh.Tables["HocSinh"].Rows[1]; row.BeginEdit(); row[0] = 11; row[1] = "Lê Th C"; row.EndEdit(); 66
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM DataSet (cont) – MS Access C p nh t d li u xu ng CSDL OleDbCommandBuilder buider = new OleDbCommandBuilder(da); da.Update(dsHocSinh, "HocSinh"); 67
    • Bài gi ng môn h c L p trình Windows Form v i C# Trình bày d li u
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Nh c l i SqlDataAdapter SqlDataAdapter đư c dùng đ đi n d li u vào đ i tư ng DataSet, DataTable và c p nh t d li u t hai đ i tư ng này tr l i d li u ngu n. Các trư ng h p t o đ i tư ng SqlDataAdapter: – SqlDataAdapter(string SQL, SqlConnection cnn); – SqlDataAdapter(SqlCommand cmd); Đi n d li u: – sqlDataAdapter.Fill(datasetname); – sqlDataAdapter.Fill(datatable); – sqlDataAdapter(DataSet dataset, int start, int end); – sqlDataAdapter(int start, int end, DataTable datatable); Phân trang 69
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM C p nh t d li u t DataAdapter Trong Form khai báo các thu c tính là đ i tư ng DataSet (hay DataTable) L y d li u: Đ d li u vào DataSet dataAdapter.Fill(dataset); C p nh t d li u: C p nh t d li u t DataSet vào CSDL dataAdapter.Update(dataset); 70
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM DataView Th hi n c a 1 DataTable. Đóng vai trò quan tr ng trong DataBinding 1 DataTable có th có nhi u View khác nhau Dùng đ trình bày d li u dư i hình th c l c, s p x p, tìm ki m, hi u ch nh và đi u hư ng d li u trong DataTable DataTable DataViewDataViewDataView 71
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Khai báo DataView Có th s d ng các cú pháp sau: – dataView = new DataView(); dataView.Table = dataTable; – dataView = new DataView(dataTable); – dataView = new DataView(dataTable, sortFilter, sortString, DataViewRowState); 72
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM DataView Tên Ý nghĩa AllowDelete Cho phép xóa trên thể hiện AllowEdit Cho phép chỉnh sửa AllowNew Cho phép thêm mới Item (index) Lấy giá trị value tại column có chỉ số index RowFilter Thiết lập Expression dùng để lọc row Sort Sắp xếp tăng hoặc giảm theo column Table Cho biết view này được tạo bởi table nào Count Lấy số lượng mẫu tin có trong DataView Danh sách các thu c tính 73
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM DataView Tên Ý nghĩa AddNew Thêm mới 1 mẫu tin Delete(index) Xóa mẫu tin thứ index Danh sách các phương th c 74
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM75
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM DataBinding Hi n th d li u trong DataTable, … vào các control (TextBox, ComboBox, DataGrid, …) G m 2 lo i: – Simple Binding – Complex Binding Ví d : Đi n n i dung b ng TonGiao vào ComboBox Tôn Giáo DataTable bang = ketnoi.GetDataTable(“SELECT * FROM TonGiao”); cboTonGiao.DataSource = bang; cboTonGiao.DisplayMember = bang.Columns[1].ToString();//TenTG cboTonGiao.SelectedValue = bang.Columns[0].ToString();//MaTG 76
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Đưa d li u vào lư i DataGridView 77
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Đi n d li u vào DataGridView datagridview.DataSource = datatable; datagridview.DataSource = dataset.Tables[index]; 78
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM DataGridView (tt) Các thu c tính c a DataGridView: – DataSource: đi n d li u vào DataGridView – CurrentRow: l y m u tin đang ch n – CurrentCell: l y ô đang ch n Các bi n c (Event) c a DataGridView: – SelectionChanged: x y ra khi ngư i dùng di chuy n vào vùng d li u – DoubleClick 79
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM N i dung Sơ lư c l ch s phát tri n Ki n trúc ADO.NET .NET Data Provider DataSet H i & Đáp 80
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM Tham kh o Bài gi ng ADO.NET c a th y Nguy n Minh Huy, ĐH KHTN TpHCM MSDN 81
    • L p trình Windows Form v i C# Lương Tr n Hy Hi n © 2010 Khoa CNTT – ĐH Sư Ph m TpHCM82