SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
Bài số 2 
Giới thiệu về cách thức truy cập dữ liệu 
Table of Contents 
1 Tổng quan ............................................................................................................................... 2 
2 Truy cập dữ liệu ADO.NET .......................................................................................................... 3 
3 Truy cập dữ liệu XML ................................................................................................................. 4 
4 Truy cập dữ liệu với SqlDataSource. ........................................................................................... 5 
5 Truy cập dữ liệu LINQ ................................................................................................................. 7 
5.1 LINQ cơ bản ................................................................................................................................ 7 
5.1.1 Cách làm việc của LINQ ................................................................................................. 7 
5.1.2 Cú pháp LINQ ................................................................................................................. 8 
5.1.3 Dùng filter và sorting với LINQ ...................................................................................... 8 
5.2 LinqDataSource ........................................................................................................................... 8 
6 Truy cập dữ liệu với web services ............................................................................................ 11 
7 Truy cập dữ liệu với Ajax ......................................................................................................... 12 
8 Câu hỏi ôn tập ....................................................................................................................... 14 
9 Tài liệu tham khảo ................................................................................................................ 14
Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 2 
1 Tổng quan 
Phần lớn các ứng dụng hiện nay đều sử dụng cơ sở dữ liệu. Có nhiều cách thức truy cập dữ liệu khác nhau trong các công nghệ của Microsoft như ADO, RDO, DAO, ODBC. Tuy nhiên từ khi .NET Framework ra đời thì công nghệ ADO.NET đã được tích hợp, ADO.NET chứa các lớp cho phép các ứng dụng connect data sources (kết nối với các nguồn dữ liệu), execute commands (thực hiện các lệnh), manage disconnected data (quản lý dữ liệu đã ngắt kết nối). Với ADO.NET người lập trình có thể viết ít mã lệnh thao tác cơ sở dữ liệu hơn so với các công nghệ trước trong các ứng dụng client-server hoặc các ứng dụng trên desktop. 
Mặt khác, trong ASP.NET từ phiên bản .NET Framework 2.0 trở lên có thêm các thao tác với cơ sở dữ liệu mà không sử dụng ADO.NET như SqlDataSource, LINQ hoặc Profiles. 
Ngoài ra các ứng dụng truy cập dữ liệu của .NET Framework còn có thể truy nhập vào các nguồn dữ liệu ngoài như File, Stream, XML, Ajax, web services, WCF, data services. 
Trong hướng dẫn này, ta sẽ tạo ra một Web site project thao tác với cơ sở dữ liệu. Sử dụng Visual Studio 2008 tạo một project Website. Trong đó tạo một database tên là DB_TEST.MDF trong folder App_Data (Figure 1) 
Figure 1. Tạo database DB_TEST trong ứng dụng Website 
Sử dụng database DB_TEST tạo 2 table HangHoa và KhoHang (Figure 2, Figure 3)
Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 3 
Figure 2. Table HangHoa trong database DB_TEST 
Figure 3. Table KhoHang trong database DB_TEST 
Tạo một chuỗi connection trong file cấu hình web.config đặt tên là ConnectionString cho phép truy nhập vào cơ sở dữ liệu DB_TEST.MDF 
web.config <configuration> <connectionStrings> <add name="ConnectionString" connectionString="Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|DB_TEST.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" /> </connectionStrings> // … các thiết lập cấu hình khác … </configuration> 
2 Truy cập dữ liệu ADO.NET 
ADO.NET Data Providers cho phép truy nhập vào một cơ sở dữ liệu cụ thể, thực hiện các câu lệnh SQL và nhận dữ liệu. Data provider là chiếc cầu nối giữa ứng dụng và nguồn dữ liệu. 
Lớp ADO.NET Data Provider bao gồm các thành phần: Connection: Thực hiện connect tới nguồn cơ sở dữ liệu; Command: Thực hiện một câu lệnh SQL hoặc một store procedures; DataReader: Chỉ đọc và nhận dữ liệu từ một truy vấn; DataAdapter thực hiện 2 nhiệm vụ: Điền dữ liệu nhận được vào một DataSet, có thể ghi nhận sự thay đổi dữ liệu trong DataSet. 
Một ví dụ sử dụng ADO.NET với đối tượng hiển thị dữ liệu là GridView. Tạo một webform đặt tên là Adonet.aspx, trong webform đó tạo một GridView đặt tên là GridView1. Mã lệnh thực hiện kết nối dữ liệu: 
Adonet.aspx.cs SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 4 
SqlCommand sql = new SqlCommand("SELECT * FROM HangHoa", conn); DataSet ds = new DataSet(); SqlDataAdapter sda = new SqlDataAdapter(sql); sda.Fill(ds,"HangHoa"); DataTable dt = ds.Tables["HangHoa"]; GridView1.DataSource = dt.DefaultView; GridView1.DataBind(); 
Figure 4. Thực hiện chương trình với truy nhập dữ liệu ADO.NET 3 Truy cập dữ liệu XML 
Dữ liệu XML ngày càng thông dụng và được phát triển mạnh mẽ hơn trước. Trong các ứng dụng ngày nay, việc sử dụng XML thay cho dữ liệu truyền thống đang có xu hướng phát triển mạnh mẽ. Tuy nhiên các ứng dụng sử dụng XML làm cơ sở dữ liệu vẫn còn ở mức quy mô nhỏ và hạn chế. 
Ví dụ sử dụng GridView để hiển thị dữ liệu trong một file XML. 
Employee.xml <?xml version="1.0" encoding="utf-8" ?> <JobDataSet> <Employees> <Name>Nguyen Van A</Name> <Birthday>1988</Birthday> <Jobs>Student</Jobs> </Employees> <Employees> <Name>Do Nhu B</Name> <Birthday>1989</Birthday> <Jobs>Engineer</Jobs> </Employees> </JobDataSet> 
XML.aspx.cs DataSet ds = new DataSet(); ds.ReadXml(Server.MapPath("Employee.xml")); DataTable dt = ds.Tables["Employees"]; GridView1.DataSource = dt.DefaultView; GridView1.DataBind();
Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 5 
Figure 5. Thực hiện truy cập dữ liệu XML 4 Truy cập dữ liệu với SqlDataSource. 
SqlDataSource là một thành phần được giới thiệu từ .NET Framework 2.0. Sử dụng SqlDataSource để truy cập dữ liệu sẽ không cần phải viết mã lệnh lập trình, chỉ cần khai báo đầy đủ các thuộc tính cần. SqlDataSource chỉ nên dùng khi không cần sử dụng các truy vấn SQL quá phức tạp để thao tác với cơ sở dữ liệu. 
SqlDataSource là một cách thức kết nối dữ liệu dùng ADO.NET provider (System.Data.SqlClient, System.Data.OracleClient, System.Data.OleDbClient, System.Data.OdbcClient). SqlDataSource cần có một connectionString thường đặt trong web.config. Tiếp theo của SqlDataSource là một câu lệnh SQL có thể là một câu lệnh truy vấn SELECT hoặc các câu lệnh liên quan đến thay đổi dữ liệu như: DELETE, INSERT, UPDATE. 
Figure 6. Tạo SqlDataSource truy cập cơ sở dữ liệu
Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 6 
Figure 7. Lựa chọn kết nối cơ sở dữ liệu trong SqlDataSource 
Lựa chọn table cần hiển thị dữ liệu vào trong SqlDataSource (ví dụ table KhoHang) sau đó thiết lập GridView trỏ vào SqlDataSource vừa được tạo (Figure 8) 
Figure 8. Lựa chọn SqlDataSource1 cho GridView1
Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 7 
Figure 9. Thực hiện truy cập dữ liệu với SqlDataSource 5 Truy cập dữ liệu LINQ 
LINQ là một sự sáng tạo mới trong .NET Framework 3.5 (Language Integrate Query) là một tập hợp mở rộng ngôn ngữ cho phép thực hiện các truy vấn trong ngôn ngữ C# 2008 và Visual Basic 2008. LINQ cho phép select, filter, sort, group và transform data từ các nguồn data source khác nhau theo một cách chung. LINQ to Objects thực hiện truy vấn các đối tượng, LINQ to DataSet thực hiện truy vấn DataSet, LINQ to SQL thực hiện truy vấn đến cơ sở dữ liệu SQL Server mà không phải viết code, LINQ to XML đọc dữ liệu từ định dạng XML. 5.1 LINQ cơ bản 
Ví dụ, nếu không dùng LINQ cho, cần lấy tất cả hàng hóa bắt đầu bằng B thì ta có code sau: DanhMucHangHoa dm = new DanhMucHangHoa(); List<HangHoaChiTiet> dshh = dm.LayDanhMucHangHoa(); List<HangHoaChiTiet> dmhh = new List<HangHoaChiTiet>(); foreach (HangHoaChiTiet hh in dshh) { if (hh.HangHoa_TenHang.ToString().StartsWith("B")) { dmhh.Add(hh); } } 
Nếu sử dụng LINQ trong mã lập trình: List<HangHoaChiTiet> dshh = dm.LayDanhMucHangHoa(); IEnumerable<HangHoaChiTiet> dmhh; dmhh = from hh in dshh where hh.HangHoa_TenHang.ToString().StartsWith("B") select hh; GridView1.DataSource = dshh; GridView1.DataBind(); 
5.1.1 Cách làm việc của LINQ 
Để dùng LINQ cần tạo ra một LINQ expression theo đúng quy tắc. 
Giá trị trả về của LINQ expression là một đối tượng iterator thực thi giao diện IEnumerable<T> 
Khi enumerable đã được gán vào iterator thì LINQ thực hiện.
Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 8 
5.1.2 Cú pháp LINQ 
Cú pháp của LINQ tương tự như một cú pháp của SQL nhưng có trật tự khác với SQL. dmhh = from hh in dshh …; Ví dụ: IEnumerable<HangHoaChiTiet> dmhh = from hh in dshh select hh.HangHoa_TenHang; 
5.1.3 Dùng filter và sorting với LINQ IEnumerable<HangHoaChiTiet> dmhh; dmhh = from hh in dshh where hh.HangHoa_TenHang.ToString().StartsWith("B") select hh; hoặc IEnumerable<HangHoaChiTiet> dmhh; dmhh = from hh in dshh orderby hh.HangHoa_TenHang select hh; 
Có thể dùng LINQ như sau (hai câu lệnh sau tương đương nhau): IEnumerable<HangHoaChiTiet> dmhh = from hh in dshh select hh; IEnumerable<HangHoaChiTiet> dmhh = hh.Select(hh => hh); 5.2 LinqDataSource 
LinqDataSource là một control có thể thực hiện nhiều tác vụ thêm, sửa, xóa dữ liệu một cách tự động. Với LinqDataSource không cần viết code cho cả việc cập nhật, sửa đổi dữ liệu cũng giống như SqlDataSource. 
Trước hết cần phải tạo ra một Linq to SQL class: File  New  File  LINQ to SQL class (Figure 10)
Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 9 
Figure 10. Tạo ra một LinqSqlDataContext cho phép LinqDataSource truy nhập 
Tạo ra mô hình LinqSqlDataContext cho phép Linq lấy dữ liệu từ database DB_TEST.MDF (Figure 11) 
Figure 11. Mô hình LinqSqlDataContext 
Thiết lập cấu hình cho control Linqdatasource1: Chọn Linqdatasource1  Configure Data Source…  Chọn LinqSqlDataContext (Figure 12)
Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 10 
Figure 12. LinqDataSource  Configure Data Source… 
Thực hiện đưa dữ liệu từ LinqDataSource vào vào GridView (Figure 13) 
Figure 13. Chọn DataSource của GridView1 là LinqDataSource1
Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 11 
Figure 14. Thực hiện truy cập dữ liệu với LinqDataSource 6 Truy cập dữ liệu với web services 
Web services là một ứng dụng quan trọng trong các ứng dụng. Phần lớn các ứng dụng hiện nay đều sử dụng web services. Cách đơn giản nhất là thông qua HTTP-POST hoặc HTTP-GET hoặc SOAP. Mục đích của web services là các ứng dụng khác nhau có thể sử dụng các phương thức web services có sẵn mà không cần phải viết lại chúng nên sẽ tiết kiệm nhiều thời gian và công sức. 
Từ Solution Explorer  Website  chọn Add New Item  Web Service  WebService.asmx (Figure 15) 
Figure 15. Tạo web services trong ứng dụng 
Mặc định với mỗi web service được tạo ra trong các ứng dụng sử dụng Visual Studio đều có sẵn phương thức HelloWorld. Phương thức này trả về một giá trị string là “Hello World”. Ta tạo thêm một phương thức DanhMucHangHoa để truy cập vào dữ liệu đã có trong ứng dụng. Các phương thức trong web services được tạo
Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 12 
như các phương thức bình thường trong ứng dụng nhưng có thêm thuộc tính chỉ định nó là một web services ký pháp là [WebMethod]. 
WebService.asmx.cs [WebMethod] public DataSet DanhMucHangHoa() { SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); DataSet ds = new DataSet(); SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM HangHoa", conn); sda.Fill(ds, "HangHoa"); return ds; } 
Dùng một GridView để nhận dữ liệu từ phương thức DanhMucHangHoa của web services để kiểm tra xem dữ liệu nhận được như thế nào. Từ Website  Add New Item  WebForm  WebServices.aspx 
WebServices.aspx.cs protected void Page_Load(object sender, EventArgs e) { WebService vs = new WebService(); GridView1.DataSource = vs.DanhMucHangHoa().Tables["HangHoa"].DefaultView; GridView1.DataBind(); } 
Kết quả khi thực hiện (Figure 16) 
Figure 16. Kết nối dữ liệu với web services 
7 Truy cập dữ liệu với Ajax 
Hiện nay công nghệ AJAX đang được ưa chuộng trong lĩnh vực lập trình web. Thiếu vắng AJAX thì nền tảng được coi là Web 2.0 sẽ không còn tồn tại. Về mặt công nghệ Ajax cho ta một cái nhìn mới về tương tác giữa web client và web server. Ajax được coi là chiếc cầu nối giữa client và server, làm tăng tốc độ thực hiện của ứng dụng, làm ẩn đi cơ chế postback khiến người dùng tưởng như đang làm việc trên một ứng dụng desktop hơn là một ứng dụng web.
Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 13 
Ajax sử dụng XMLHttpRequest của trình duyệt để gửi một yêu cầu đến web server thay cho Request truyền thống. Dữ liệu từ web server trả về cho XMLHttpRequest có dạng một tài liệu XML hoặc một tài liệu dạng Text. Dữ liệu này có thể được xử lý bởi các hàm Javascript trước khi được trả lại cho trình duyệt. Khác với cách gửi request – response truyền thống thì dữ liệu từ web server trả về cho client được trình duyệt hiển thị ngay mà không qua một bước xử lý trung gian nào nữa. 
Sử dụng các framework AJAX có sẵn để gọi Ajax. Ví dụ ta gọi URL http://localhost:49163/WebSite/Adonet.aspx bằng ajax của thư viện miễn phí prototype.js như sau (Figure 17) 
Figure 17. Sử dụng AJAX 
AJAX có 2 dạng dữ liệu được trả về là responseText và responseXML. Tùy từng mục đích sử dụng mà có thể lựa chọn cách thức lấy dữ liệu về cho hợp lý. Mặt khác, khi nhận được dữ liệu từ AJAX trả về có thể xử lý trước khi hiển thị dữ liệu cho người dùng cuối. 
Kết quả thực hiện Ajax với tham số URL: http://localhost:49163/WebSite/Adonet.aspx (Figure 18)
Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 14 
Figure 18. Gọi AJAX với tham số URL 
8 Câu hỏi ôn tập 
Câu hỏi: Từ khi có các control SqlDataSource, LinqDataSource thì có cần thiết dùng các đối tượng của ADO.NET (Connection, Command, Adapter,… ) để truy cập dữ liệu nữa không? 
Trả lời: Vẫn cần thiết vì dù các đối tượng SqlDataSource, LinqDataSource rất linh hoạt và có thể đảm đương hầu hết các chức năng nhưng vẫn chưa thể cung cấp đủ cho nhu cầu người dùng nhất là đối với những thao tác phức tạp lên cơ sở dữ liệu. 
Câu hỏi: Khi cần thực hiện lấy dữ liệu từ một table trong cơ sở dữ liệu sử dụng ADO.NET rồi đưa vào đối tượng DataTable thì cần các bộ thành phần nào sau đây: 
A. Connection, Command, Adapter 
B. Connection, DataSet, Adapter 
C. Connection, DataTable, DataSet 
D. Command, Adapter, DataTable 
Trả lời: Đáp án B. 
9 Tài liệu tham khảo 
http://www.codegod.de/webappcodegod 
http://www.asp.net/ 
http://www.linqhelp.com/

Más contenido relacionado

La actualidad más candente

Bài 7: Lập trình với CSDL – Sử dụng DESIGNER & Triển khai ứng dụng - Lập trìn...
Bài 7: Lập trình với CSDL – Sử dụng DESIGNER & Triển khai ứng dụng - Lập trìn...Bài 7: Lập trình với CSDL – Sử dụng DESIGNER & Triển khai ứng dụng - Lập trìn...
Bài 7: Lập trình với CSDL – Sử dụng DESIGNER & Triển khai ứng dụng - Lập trìn...MasterCode.vn
 
Thuc hanh ado.net_bai_03
Thuc hanh ado.net_bai_03Thuc hanh ado.net_bai_03
Thuc hanh ado.net_bai_03Thanh Điền
 
Cach su dung databinding
Cach su dung databindingCach su dung databinding
Cach su dung databindingtruong le hung
 
5.cach su dung data reader
5.cach su dung data reader5.cach su dung data reader
5.cach su dung data readerDao Uit
 
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...MasterCode.vn
 
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theoBài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theoMasterCode.vn
 
Linq n hibernate net-tier
Linq n hibernate net-tierLinq n hibernate net-tier
Linq n hibernate net-tierNguyen Tran
 
S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...
S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...
S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...zzsunzz
 
00 overview of_sql_server
00 overview of_sql_server00 overview of_sql_server
00 overview of_sql_serverthai
 
Hdth07 ltudql02-linq-ep1
Hdth07 ltudql02-linq-ep1Hdth07 ltudql02-linq-ep1
Hdth07 ltudql02-linq-ep1Dũng Đinh
 
03 chuong3-datasets-140404114719-phpapp02
03 chuong3-datasets-140404114719-phpapp0203 chuong3-datasets-140404114719-phpapp02
03 chuong3-datasets-140404114719-phpapp02huynhtrong774129
 
Bài 2 - Công nghệ ADO.NET với C#
Bài 2 - Công nghệ ADO.NET với C#Bài 2 - Công nghệ ADO.NET với C#
Bài 2 - Công nghệ ADO.NET với C#MasterCode.vn
 

La actualidad más candente (20)

Bài 7: Lập trình với CSDL – Sử dụng DESIGNER & Triển khai ứng dụng - Lập trìn...
Bài 7: Lập trình với CSDL – Sử dụng DESIGNER & Triển khai ứng dụng - Lập trìn...Bài 7: Lập trình với CSDL – Sử dụng DESIGNER & Triển khai ứng dụng - Lập trìn...
Bài 7: Lập trình với CSDL – Sử dụng DESIGNER & Triển khai ứng dụng - Lập trìn...
 
Thuc hanh ado.net_bai_03
Thuc hanh ado.net_bai_03Thuc hanh ado.net_bai_03
Thuc hanh ado.net_bai_03
 
Cach su dung databinding
Cach su dung databindingCach su dung databinding
Cach su dung databinding
 
ado.net
ado.netado.net
ado.net
 
04 ado
04 ado04 ado
04 ado
 
Cach su dung data reader
Cach su dung data readerCach su dung data reader
Cach su dung data reader
 
5.cach su dung data reader
5.cach su dung data reader5.cach su dung data reader
5.cach su dung data reader
 
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
Bài 4: Lập trình với CSDL ADO.NET & Kiến trúc không kết nối & Lập trình giao ...
 
Asp.net 3.5 _8
Asp.net 3.5 _8Asp.net 3.5 _8
Asp.net 3.5 _8
 
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theoBài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
Bài 5: Làm quen với lập trình CSDL ASP.NET - Giáo trình FPT - Có ví dụ kèm theo
 
Linq n hibernate net-tier
Linq n hibernate net-tierLinq n hibernate net-tier
Linq n hibernate net-tier
 
Asp.net 3.5 _7
Asp.net 3.5 _7Asp.net 3.5 _7
Asp.net 3.5 _7
 
S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...
S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...
S vnet.vn 51. [silde bài giảng] lập trình trên môi trường windows với ado.net...
 
00 overview of_sql_server
00 overview of_sql_server00 overview of_sql_server
00 overview of_sql_server
 
C# co ban 10
C# co ban 10C# co ban 10
C# co ban 10
 
01 tong-quan-ado
01 tong-quan-ado01 tong-quan-ado
01 tong-quan-ado
 
Hdth07 ltudql02-linq-ep1
Hdth07 ltudql02-linq-ep1Hdth07 ltudql02-linq-ep1
Hdth07 ltudql02-linq-ep1
 
03 chuong3-datasets-140404114719-phpapp02
03 chuong3-datasets-140404114719-phpapp0203 chuong3-datasets-140404114719-phpapp02
03 chuong3-datasets-140404114719-phpapp02
 
Linq2 sql
Linq2 sqlLinq2 sql
Linq2 sql
 
Bài 2 - Công nghệ ADO.NET với C#
Bài 2 - Công nghệ ADO.NET với C#Bài 2 - Công nghệ ADO.NET với C#
Bài 2 - Công nghệ ADO.NET với C#
 

Similar a Aspnet 3.5 _02

Bài 7: Đối tượng Data Source -Đóng gói ứng dụng - Giới thiệu các kĩ thuật lập...
Bài 7: Đối tượng Data Source -Đóng gói ứng dụng - Giới thiệu các kĩ thuật lập...Bài 7: Đối tượng Data Source -Đóng gói ứng dụng - Giới thiệu các kĩ thuật lập...
Bài 7: Đối tượng Data Source -Đóng gói ứng dụng - Giới thiệu các kĩ thuật lập...MasterCode.vn
 
2.gioi thieu co ban ado.net cho nguoi lap trinh c#
2.gioi thieu co ban ado.net cho nguoi lap trinh c#2.gioi thieu co ban ado.net cho nguoi lap trinh c#
2.gioi thieu co ban ado.net cho nguoi lap trinh c#Dao Uit
 
Trong bài viết hôm nay
Trong bài viết hôm nayTrong bài viết hôm nay
Trong bài viết hôm nayledoanduc
 
7 databinding-120306231825-phpapp02(1)
7 databinding-120306231825-phpapp02(1)7 databinding-120306231825-phpapp02(1)
7 databinding-120306231825-phpapp02(1)TI Anh
 
7.databinding
7.databinding7.databinding
7.databindingDao Uit
 
Lap trinhcosodulieuvoi c-sharp_phan-1
Lap trinhcosodulieuvoi c-sharp_phan-1Lap trinhcosodulieuvoi c-sharp_phan-1
Lap trinhcosodulieuvoi c-sharp_phan-1Hiển Phùng
 
Co ban ve_zend_framework 1
Co ban ve_zend_framework 1Co ban ve_zend_framework 1
Co ban ve_zend_framework 1Ông Thông
 
Bai 1 lam quen voi sql 2008
Bai 1 lam quen voi sql 2008Bai 1 lam quen voi sql 2008
Bai 1 lam quen voi sql 2008Phương Nhung
 

Similar a Aspnet 3.5 _02 (18)

C5. Model, DataSharing.pdf
C5. Model, DataSharing.pdfC5. Model, DataSharing.pdf
C5. Model, DataSharing.pdf
 
Bài 7: Đối tượng Data Source -Đóng gói ứng dụng - Giới thiệu các kĩ thuật lập...
Bài 7: Đối tượng Data Source -Đóng gói ứng dụng - Giới thiệu các kĩ thuật lập...Bài 7: Đối tượng Data Source -Đóng gói ứng dụng - Giới thiệu các kĩ thuật lập...
Bài 7: Đối tượng Data Source -Đóng gói ứng dụng - Giới thiệu các kĩ thuật lập...
 
2.gioi thieu co ban ado.net cho nguoi lap trinh c#
2.gioi thieu co ban ado.net cho nguoi lap trinh c#2.gioi thieu co ban ado.net cho nguoi lap trinh c#
2.gioi thieu co ban ado.net cho nguoi lap trinh c#
 
Trong bài viết hôm nay
Trong bài viết hôm nayTrong bài viết hôm nay
Trong bài viết hôm nay
 
Aspnet 3.5 -06
Aspnet 3.5 -06Aspnet 3.5 -06
Aspnet 3.5 -06
 
7 databinding-120306231825-phpapp02(1)
7 databinding-120306231825-phpapp02(1)7 databinding-120306231825-phpapp02(1)
7 databinding-120306231825-phpapp02(1)
 
LinQ
LinQLinQ
LinQ
 
ôn tập dbms
ôn tập dbmsôn tập dbms
ôn tập dbms
 
7.databinding
7.databinding7.databinding
7.databinding
 
Mo hinh-3-lop
Mo hinh-3-lopMo hinh-3-lop
Mo hinh-3-lop
 
Bài 6: Working with DATA
Bài 6: Working with DATABài 6: Working with DATA
Bài 6: Working with DATA
 
Lap trinhcosodulieuvoi c-sharp_phan-1
Lap trinhcosodulieuvoi c-sharp_phan-1Lap trinhcosodulieuvoi c-sharp_phan-1
Lap trinhcosodulieuvoi c-sharp_phan-1
 
Bai th 03
Bai th 03Bai th 03
Bai th 03
 
Laptrinh jdbc
Laptrinh jdbcLaptrinh jdbc
Laptrinh jdbc
 
LINQ presentation
LINQ presentationLINQ presentation
LINQ presentation
 
Ung dung web chuong 7
Ung dung web  chuong 7Ung dung web  chuong 7
Ung dung web chuong 7
 
Co ban ve_zend_framework 1
Co ban ve_zend_framework 1Co ban ve_zend_framework 1
Co ban ve_zend_framework 1
 
Bai 1 lam quen voi sql 2008
Bai 1 lam quen voi sql 2008Bai 1 lam quen voi sql 2008
Bai 1 lam quen voi sql 2008
 

Aspnet 3.5 _02

  • 1. Bài số 2 Giới thiệu về cách thức truy cập dữ liệu Table of Contents 1 Tổng quan ............................................................................................................................... 2 2 Truy cập dữ liệu ADO.NET .......................................................................................................... 3 3 Truy cập dữ liệu XML ................................................................................................................. 4 4 Truy cập dữ liệu với SqlDataSource. ........................................................................................... 5 5 Truy cập dữ liệu LINQ ................................................................................................................. 7 5.1 LINQ cơ bản ................................................................................................................................ 7 5.1.1 Cách làm việc của LINQ ................................................................................................. 7 5.1.2 Cú pháp LINQ ................................................................................................................. 8 5.1.3 Dùng filter và sorting với LINQ ...................................................................................... 8 5.2 LinqDataSource ........................................................................................................................... 8 6 Truy cập dữ liệu với web services ............................................................................................ 11 7 Truy cập dữ liệu với Ajax ......................................................................................................... 12 8 Câu hỏi ôn tập ....................................................................................................................... 14 9 Tài liệu tham khảo ................................................................................................................ 14
  • 2. Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 2 1 Tổng quan Phần lớn các ứng dụng hiện nay đều sử dụng cơ sở dữ liệu. Có nhiều cách thức truy cập dữ liệu khác nhau trong các công nghệ của Microsoft như ADO, RDO, DAO, ODBC. Tuy nhiên từ khi .NET Framework ra đời thì công nghệ ADO.NET đã được tích hợp, ADO.NET chứa các lớp cho phép các ứng dụng connect data sources (kết nối với các nguồn dữ liệu), execute commands (thực hiện các lệnh), manage disconnected data (quản lý dữ liệu đã ngắt kết nối). Với ADO.NET người lập trình có thể viết ít mã lệnh thao tác cơ sở dữ liệu hơn so với các công nghệ trước trong các ứng dụng client-server hoặc các ứng dụng trên desktop. Mặt khác, trong ASP.NET từ phiên bản .NET Framework 2.0 trở lên có thêm các thao tác với cơ sở dữ liệu mà không sử dụng ADO.NET như SqlDataSource, LINQ hoặc Profiles. Ngoài ra các ứng dụng truy cập dữ liệu của .NET Framework còn có thể truy nhập vào các nguồn dữ liệu ngoài như File, Stream, XML, Ajax, web services, WCF, data services. Trong hướng dẫn này, ta sẽ tạo ra một Web site project thao tác với cơ sở dữ liệu. Sử dụng Visual Studio 2008 tạo một project Website. Trong đó tạo một database tên là DB_TEST.MDF trong folder App_Data (Figure 1) Figure 1. Tạo database DB_TEST trong ứng dụng Website Sử dụng database DB_TEST tạo 2 table HangHoa và KhoHang (Figure 2, Figure 3)
  • 3. Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 3 Figure 2. Table HangHoa trong database DB_TEST Figure 3. Table KhoHang trong database DB_TEST Tạo một chuỗi connection trong file cấu hình web.config đặt tên là ConnectionString cho phép truy nhập vào cơ sở dữ liệu DB_TEST.MDF web.config <configuration> <connectionStrings> <add name="ConnectionString" connectionString="Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|DB_TEST.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" /> </connectionStrings> // … các thiết lập cấu hình khác … </configuration> 2 Truy cập dữ liệu ADO.NET ADO.NET Data Providers cho phép truy nhập vào một cơ sở dữ liệu cụ thể, thực hiện các câu lệnh SQL và nhận dữ liệu. Data provider là chiếc cầu nối giữa ứng dụng và nguồn dữ liệu. Lớp ADO.NET Data Provider bao gồm các thành phần: Connection: Thực hiện connect tới nguồn cơ sở dữ liệu; Command: Thực hiện một câu lệnh SQL hoặc một store procedures; DataReader: Chỉ đọc và nhận dữ liệu từ một truy vấn; DataAdapter thực hiện 2 nhiệm vụ: Điền dữ liệu nhận được vào một DataSet, có thể ghi nhận sự thay đổi dữ liệu trong DataSet. Một ví dụ sử dụng ADO.NET với đối tượng hiển thị dữ liệu là GridView. Tạo một webform đặt tên là Adonet.aspx, trong webform đó tạo một GridView đặt tên là GridView1. Mã lệnh thực hiện kết nối dữ liệu: Adonet.aspx.cs SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
  • 4. Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 4 SqlCommand sql = new SqlCommand("SELECT * FROM HangHoa", conn); DataSet ds = new DataSet(); SqlDataAdapter sda = new SqlDataAdapter(sql); sda.Fill(ds,"HangHoa"); DataTable dt = ds.Tables["HangHoa"]; GridView1.DataSource = dt.DefaultView; GridView1.DataBind(); Figure 4. Thực hiện chương trình với truy nhập dữ liệu ADO.NET 3 Truy cập dữ liệu XML Dữ liệu XML ngày càng thông dụng và được phát triển mạnh mẽ hơn trước. Trong các ứng dụng ngày nay, việc sử dụng XML thay cho dữ liệu truyền thống đang có xu hướng phát triển mạnh mẽ. Tuy nhiên các ứng dụng sử dụng XML làm cơ sở dữ liệu vẫn còn ở mức quy mô nhỏ và hạn chế. Ví dụ sử dụng GridView để hiển thị dữ liệu trong một file XML. Employee.xml <?xml version="1.0" encoding="utf-8" ?> <JobDataSet> <Employees> <Name>Nguyen Van A</Name> <Birthday>1988</Birthday> <Jobs>Student</Jobs> </Employees> <Employees> <Name>Do Nhu B</Name> <Birthday>1989</Birthday> <Jobs>Engineer</Jobs> </Employees> </JobDataSet> XML.aspx.cs DataSet ds = new DataSet(); ds.ReadXml(Server.MapPath("Employee.xml")); DataTable dt = ds.Tables["Employees"]; GridView1.DataSource = dt.DefaultView; GridView1.DataBind();
  • 5. Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 5 Figure 5. Thực hiện truy cập dữ liệu XML 4 Truy cập dữ liệu với SqlDataSource. SqlDataSource là một thành phần được giới thiệu từ .NET Framework 2.0. Sử dụng SqlDataSource để truy cập dữ liệu sẽ không cần phải viết mã lệnh lập trình, chỉ cần khai báo đầy đủ các thuộc tính cần. SqlDataSource chỉ nên dùng khi không cần sử dụng các truy vấn SQL quá phức tạp để thao tác với cơ sở dữ liệu. SqlDataSource là một cách thức kết nối dữ liệu dùng ADO.NET provider (System.Data.SqlClient, System.Data.OracleClient, System.Data.OleDbClient, System.Data.OdbcClient). SqlDataSource cần có một connectionString thường đặt trong web.config. Tiếp theo của SqlDataSource là một câu lệnh SQL có thể là một câu lệnh truy vấn SELECT hoặc các câu lệnh liên quan đến thay đổi dữ liệu như: DELETE, INSERT, UPDATE. Figure 6. Tạo SqlDataSource truy cập cơ sở dữ liệu
  • 6. Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 6 Figure 7. Lựa chọn kết nối cơ sở dữ liệu trong SqlDataSource Lựa chọn table cần hiển thị dữ liệu vào trong SqlDataSource (ví dụ table KhoHang) sau đó thiết lập GridView trỏ vào SqlDataSource vừa được tạo (Figure 8) Figure 8. Lựa chọn SqlDataSource1 cho GridView1
  • 7. Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 7 Figure 9. Thực hiện truy cập dữ liệu với SqlDataSource 5 Truy cập dữ liệu LINQ LINQ là một sự sáng tạo mới trong .NET Framework 3.5 (Language Integrate Query) là một tập hợp mở rộng ngôn ngữ cho phép thực hiện các truy vấn trong ngôn ngữ C# 2008 và Visual Basic 2008. LINQ cho phép select, filter, sort, group và transform data từ các nguồn data source khác nhau theo một cách chung. LINQ to Objects thực hiện truy vấn các đối tượng, LINQ to DataSet thực hiện truy vấn DataSet, LINQ to SQL thực hiện truy vấn đến cơ sở dữ liệu SQL Server mà không phải viết code, LINQ to XML đọc dữ liệu từ định dạng XML. 5.1 LINQ cơ bản Ví dụ, nếu không dùng LINQ cho, cần lấy tất cả hàng hóa bắt đầu bằng B thì ta có code sau: DanhMucHangHoa dm = new DanhMucHangHoa(); List<HangHoaChiTiet> dshh = dm.LayDanhMucHangHoa(); List<HangHoaChiTiet> dmhh = new List<HangHoaChiTiet>(); foreach (HangHoaChiTiet hh in dshh) { if (hh.HangHoa_TenHang.ToString().StartsWith("B")) { dmhh.Add(hh); } } Nếu sử dụng LINQ trong mã lập trình: List<HangHoaChiTiet> dshh = dm.LayDanhMucHangHoa(); IEnumerable<HangHoaChiTiet> dmhh; dmhh = from hh in dshh where hh.HangHoa_TenHang.ToString().StartsWith("B") select hh; GridView1.DataSource = dshh; GridView1.DataBind(); 5.1.1 Cách làm việc của LINQ Để dùng LINQ cần tạo ra một LINQ expression theo đúng quy tắc. Giá trị trả về của LINQ expression là một đối tượng iterator thực thi giao diện IEnumerable<T> Khi enumerable đã được gán vào iterator thì LINQ thực hiện.
  • 8. Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 8 5.1.2 Cú pháp LINQ Cú pháp của LINQ tương tự như một cú pháp của SQL nhưng có trật tự khác với SQL. dmhh = from hh in dshh …; Ví dụ: IEnumerable<HangHoaChiTiet> dmhh = from hh in dshh select hh.HangHoa_TenHang; 5.1.3 Dùng filter và sorting với LINQ IEnumerable<HangHoaChiTiet> dmhh; dmhh = from hh in dshh where hh.HangHoa_TenHang.ToString().StartsWith("B") select hh; hoặc IEnumerable<HangHoaChiTiet> dmhh; dmhh = from hh in dshh orderby hh.HangHoa_TenHang select hh; Có thể dùng LINQ như sau (hai câu lệnh sau tương đương nhau): IEnumerable<HangHoaChiTiet> dmhh = from hh in dshh select hh; IEnumerable<HangHoaChiTiet> dmhh = hh.Select(hh => hh); 5.2 LinqDataSource LinqDataSource là một control có thể thực hiện nhiều tác vụ thêm, sửa, xóa dữ liệu một cách tự động. Với LinqDataSource không cần viết code cho cả việc cập nhật, sửa đổi dữ liệu cũng giống như SqlDataSource. Trước hết cần phải tạo ra một Linq to SQL class: File  New  File  LINQ to SQL class (Figure 10)
  • 9. Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 9 Figure 10. Tạo ra một LinqSqlDataContext cho phép LinqDataSource truy nhập Tạo ra mô hình LinqSqlDataContext cho phép Linq lấy dữ liệu từ database DB_TEST.MDF (Figure 11) Figure 11. Mô hình LinqSqlDataContext Thiết lập cấu hình cho control Linqdatasource1: Chọn Linqdatasource1  Configure Data Source…  Chọn LinqSqlDataContext (Figure 12)
  • 10. Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 10 Figure 12. LinqDataSource  Configure Data Source… Thực hiện đưa dữ liệu từ LinqDataSource vào vào GridView (Figure 13) Figure 13. Chọn DataSource của GridView1 là LinqDataSource1
  • 11. Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 11 Figure 14. Thực hiện truy cập dữ liệu với LinqDataSource 6 Truy cập dữ liệu với web services Web services là một ứng dụng quan trọng trong các ứng dụng. Phần lớn các ứng dụng hiện nay đều sử dụng web services. Cách đơn giản nhất là thông qua HTTP-POST hoặc HTTP-GET hoặc SOAP. Mục đích của web services là các ứng dụng khác nhau có thể sử dụng các phương thức web services có sẵn mà không cần phải viết lại chúng nên sẽ tiết kiệm nhiều thời gian và công sức. Từ Solution Explorer  Website  chọn Add New Item  Web Service  WebService.asmx (Figure 15) Figure 15. Tạo web services trong ứng dụng Mặc định với mỗi web service được tạo ra trong các ứng dụng sử dụng Visual Studio đều có sẵn phương thức HelloWorld. Phương thức này trả về một giá trị string là “Hello World”. Ta tạo thêm một phương thức DanhMucHangHoa để truy cập vào dữ liệu đã có trong ứng dụng. Các phương thức trong web services được tạo
  • 12. Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 12 như các phương thức bình thường trong ứng dụng nhưng có thêm thuộc tính chỉ định nó là một web services ký pháp là [WebMethod]. WebService.asmx.cs [WebMethod] public DataSet DanhMucHangHoa() { SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); DataSet ds = new DataSet(); SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM HangHoa", conn); sda.Fill(ds, "HangHoa"); return ds; } Dùng một GridView để nhận dữ liệu từ phương thức DanhMucHangHoa của web services để kiểm tra xem dữ liệu nhận được như thế nào. Từ Website  Add New Item  WebForm  WebServices.aspx WebServices.aspx.cs protected void Page_Load(object sender, EventArgs e) { WebService vs = new WebService(); GridView1.DataSource = vs.DanhMucHangHoa().Tables["HangHoa"].DefaultView; GridView1.DataBind(); } Kết quả khi thực hiện (Figure 16) Figure 16. Kết nối dữ liệu với web services 7 Truy cập dữ liệu với Ajax Hiện nay công nghệ AJAX đang được ưa chuộng trong lĩnh vực lập trình web. Thiếu vắng AJAX thì nền tảng được coi là Web 2.0 sẽ không còn tồn tại. Về mặt công nghệ Ajax cho ta một cái nhìn mới về tương tác giữa web client và web server. Ajax được coi là chiếc cầu nối giữa client và server, làm tăng tốc độ thực hiện của ứng dụng, làm ẩn đi cơ chế postback khiến người dùng tưởng như đang làm việc trên một ứng dụng desktop hơn là một ứng dụng web.
  • 13. Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 13 Ajax sử dụng XMLHttpRequest của trình duyệt để gửi một yêu cầu đến web server thay cho Request truyền thống. Dữ liệu từ web server trả về cho XMLHttpRequest có dạng một tài liệu XML hoặc một tài liệu dạng Text. Dữ liệu này có thể được xử lý bởi các hàm Javascript trước khi được trả lại cho trình duyệt. Khác với cách gửi request – response truyền thống thì dữ liệu từ web server trả về cho client được trình duyệt hiển thị ngay mà không qua một bước xử lý trung gian nào nữa. Sử dụng các framework AJAX có sẵn để gọi Ajax. Ví dụ ta gọi URL http://localhost:49163/WebSite/Adonet.aspx bằng ajax của thư viện miễn phí prototype.js như sau (Figure 17) Figure 17. Sử dụng AJAX AJAX có 2 dạng dữ liệu được trả về là responseText và responseXML. Tùy từng mục đích sử dụng mà có thể lựa chọn cách thức lấy dữ liệu về cho hợp lý. Mặt khác, khi nhận được dữ liệu từ AJAX trả về có thể xử lý trước khi hiển thị dữ liệu cho người dùng cuối. Kết quả thực hiện Ajax với tham số URL: http://localhost:49163/WebSite/Adonet.aspx (Figure 18)
  • 14. Microsoft Vietnam – DPE Team | Bài số 2: Giới thiệu cách thức truy cập dữ liệu 14 Figure 18. Gọi AJAX với tham số URL 8 Câu hỏi ôn tập Câu hỏi: Từ khi có các control SqlDataSource, LinqDataSource thì có cần thiết dùng các đối tượng của ADO.NET (Connection, Command, Adapter,… ) để truy cập dữ liệu nữa không? Trả lời: Vẫn cần thiết vì dù các đối tượng SqlDataSource, LinqDataSource rất linh hoạt và có thể đảm đương hầu hết các chức năng nhưng vẫn chưa thể cung cấp đủ cho nhu cầu người dùng nhất là đối với những thao tác phức tạp lên cơ sở dữ liệu. Câu hỏi: Khi cần thực hiện lấy dữ liệu từ một table trong cơ sở dữ liệu sử dụng ADO.NET rồi đưa vào đối tượng DataTable thì cần các bộ thành phần nào sau đây: A. Connection, Command, Adapter B. Connection, DataSet, Adapter C. Connection, DataTable, DataSet D. Command, Adapter, DataTable Trả lời: Đáp án B. 9 Tài liệu tham khảo http://www.codegod.de/webappcodegod http://www.asp.net/ http://www.linqhelp.com/