14
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 XM L ..............................................................................................................................................4 4 Truy cập dữ liệu với SqlDataSource.................................................................................................................... 5 5 Truy cập dữ liệu LINQ.............................................................................................................................................. 7 5.1 LINQcơ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 UNO................................................................................................................. 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

Giới thiệu về cách thức truy cập dữ liệudulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · 8 Câu hỏi ôn tập ... dụng XML làm cơ sở dữ

Embed Size (px)

Citation preview

Page 1: Giới thiệu về cách thức truy cập dữ liệudulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · 8 Câu hỏi ôn tập ... dụng XML làm cơ sở dữ

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 X M L..............................................................................................................................................4

4 Truy cập dữ liệu vớ i SqlDataSource....................................................................................................................5

5 Truy cập dữ liệu LINQ..............................................................................................................................................7

5.1 LINQcơ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 UNO.................................................................................................................8

5.2 LinqDataSource...............................................................................................................................................................8

6 Truy cập dữ liệu với web serv ices....................................................................................................................11

7 Truy cập dữ liệu với A jax ....................................................................................................................................12

8 Câu hỏi ôn tập.........................................................................................................................................................14

9 Tài liệu tham khảo........................................................................................................................14

Page 2: Giới thiệu về cách thức truy cập dữ liệudulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · 8 Câu hỏi ôn tập ... dụng XML làm cơ sở dữ

1 Tổng quanPhầ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 ưong 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)

Add New Item - F:\@ Projects\@ Test\H iTest\W ebSite\ Send Feedback Ị " ỉ" 0

Templates:

I

Visual Studio installed tem p la tes

iS j AJAX-enabled WCF Service

¿ 1 Report Wizard

¿^X M L File

My T em plates

j Search O nline Tem plates...

Class Diagram

J SQL Server D atabase

|jy XML Schema

[¿¿I Report

g ) Text File

An em pty SQL Server database

Name: DB.TESTtmdf

| Language: Visual C* n Place code in separate file

n Select m aster page

Add Cancel

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 -D P E Team I Bài SÔ 2: Giới thiệu cách thức truy cập dữ liệu 2

Page 3: Giới thiệu về cách thức truy cập dữ liệudulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · 8 Câu hỏi ôn tập ... dụng XML làm cơ sở dữ

dbo.HangHoa: ...DATABASE.MDF) Default.aspx Default.aspx.cs

Column Name Data Type Allow Nulls

|K ? j ID int

TenHang nvarchar(50) 0KhoID int 0

Figure 2. Table HangHoa trong database DB_TEST

dbo.KhoHang: ...DATABASE.MDF) Default, aspx Default.aspx.es

Column Name Data Type Allow Nulls

W ['ÏD ; int; □TenKhoHang nvarchar(50) 0

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>

<ađd name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=IDataDirectoryI\DB_TEST.mdf; Integrated Securitỵ=True;User Instance=True"

providerName="System.Data.SqlClient" /></connectionstringo>

// ... các thiết lập cấu hình khác ...

</configurâtion>

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à GridViewl. Mã lệnh thực hiện kết nối dữ liệu:

Adonet.aspx.es

SqlConneC' ion conn = new( .ConnectionStringst"ConnectionString"].Connection

String);

Micrusufl Vielnum —DPE Teum I Bài su 2: Gi('rì thiệu cách Ihúv Iruy cập dữ liệu 3

Page 4: Giới thiệu về cách thức truy cập dữ liệudulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · 8 Câu hỏi ôn tập ... dụng XML làm cơ sở dữ

sql = new ("SELECT * FROM HangHoa", conn);DataSet ds = new DaLaSet 0;SqlDataAdapter sda = new SqlDataAdapter(sql); sda.Fill(ds,"HangHoa");Data'X'able dt = ds . Tables [ "HangHoa" ] ;Gridviewl.DataSource = dt.Defaultview;Gridviewl.DataBind();

Ặ Untitled Pace - Mozilla Mrefox

File Edit View History Bookmarks Jools Help

is - c □http://localhost:49163/WebSite/Adonet.aspx

p Most Visited ^ Getting Started Latest Headlines

ID TenHang KhoID1 Đò điện tử 12 Đò tiêu đùng 23 Đò choi trẻ em 34 Đo mảy tính 35 Thiết bị y tể 16 Thiết bị mòi trường 2

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ẽ hon 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="l.0" encoding="utf-8" ?> <JobDataSet>

<Employees><Name>Nguyen Van A</Name> <Birthday>1988</Birthday> <Jobs>Student</Jobs>

</Employees><Rmpl nỵpf=s>

<Name>Do Nhu B</Name> <Birthdaỵ>1989</Birthdaỵ> <Jobs>Engineer</Jobs>

</Employees></JobDataSet>

XML.aspx.cs

Date; ds = new lLaSet ();ds.ReadXml(Server-MapPath("Employee.xml"));

dt = ds.Tablest"Employees"]; Gridviewl.DataSource = dt.Defaultview; Gridviewl.DataBind();

Microsoft Vietnam -D P E Team I Bài sô 2: Giới thiệu cách thức truy cập dữ liệu

Page 5: Giới thiệu về cách thức truy cập dữ liệudulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · 8 Câu hỏi ôn tập ... dụng XML làm cơ sở dữ

^ Untitled Page - Mozilla Firefox

File Edit View History Bookmarks Jools Help

@ * C ^ ~http://localhost:49163/WebSite/XMLaspx

fi Most Visited ^ Getting Started Latest Headlines

Name Birthday JobsNguyen Van A 1988 StudentDo Nhu B 1989 Engineer

Figure 5. Thuc hien truy cap du lieu XML

Truy cap du1 lieu vofi 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.

>•ự}õ>ẫm

!*

SqlDataSource.aspx start Paọe Default.aspx

Client Objects & Events V (No Events)

<%0 Page Language»"C#" AutoEventVireup»"true" CodeFile»"SqlDataSource.aspx.cs" Inherits»"SqlDataSource" *>

<!DOCTYPE hcral PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ”http://«mj. w3.or q/TR/xhtmll/DTD/ xhttnl 1-transit lonal.dtd">

□ <html xrnlns»"http: //wvsw. «3 . ocq/ 1999/xhtrol">[±] <head runat="server">

<title>Untltled Page</title></head>

[£ <body><forra id="for:ml" runat="server">< d lv >

<asp:GridView ID="GridViewl" runat="server"></asp:GridView><asp:SqlDataSource ID="SqlDataSource1" runat="server"></asp:SqlDataSource>

</div></form>

</body></htral>

CohimiiO Column 1 C ohunnZabc abc abcabc abc abcabc abc abcabc abc abc

I âsp5qBDataSÕorce#SqlDataSourc6l ll

SqlDataSource • £ qlOatKnurcel i j SqlDataSource Tasks

--------------------------------------------- Configure Oata Source. ■ ■ I

Figure 6. Tạo SqlDataSource truy cập cơ sở dữ liệu

Microsoft Vietnam. —DPE Team I Bùi xó 2: Giói Ihiệu cách thức Iruy cập dữ liệu 5

Page 6: Giới thiệu về cách thức truy cập dữ liệudulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · 8 Câu hỏi ôn tập ... dụng XML làm cơ sở dữ

I Server Expícrer ị T ootoox;

Configure Data Source - SqlDataSourcel ( U S

Choose Y ou r D a ta Connection

Which data connection should your application use to connect to the database?

ConnectionString New Connection...

1+) Connection string

< Previous Next > Finish Cancel

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)

^ S q & ata So u rce .asp x+ sta rt Page Default, aspx

Client O b jects & E ven ts V» (No Events)

< ! DOCTYPE htrol PUBLIC "-//M3C//DTD XHTML 1.0 Transitlonal//EN" "http: //www. «3 . ora/TR/xhtml 1/DTD/xhtml 1-transit lonal. dtd">

_:<html xtnln3=whttp: / /vnrvs. w3 . or a / 1999/xhtmlw>]<head runac-"server">

<title>Untitled Page</title>-</head>] <foody>-] <£orm id= "forml " runat = "server">-1 <div>

casprGridView ID=wGrldViewl" runat = "£erver" AucoGenerateColiunna="False''Dac.aKeyNaroesm"Id" DataSourceIDm"2cilDac.aSourcel"><Columns>

<asp:BoundFleld DataField="ICM HeaderText“”Id" InsercVisible^'False"Readonly^"True" SortExpression-^Id" />

<asp:BoundF ieId DataFleld="TenKhoHang" HeaderText=”TenKhoHang"SortExpre33ion“"TenKhoHar.g" />

I d T e i i K h o H a n g <] r , r id V ie w T a s k s

0 a b c Auto Form at...

1

2

a b c Choose Data Source: SqlDataSourcel v ]

a b c Configure Data Source (None)

3 a b c Refresh Schema <New data sou rce ... >

4 a b c Edit Columns...

S q lD ataSo u rce - Sq.Dal Add NewCofam n..

□ Enable PaQing

f~ l Enable Sorting

I I Enable Selection

Edit Templates

Figure 8. Lua chon SqlDataSourcel cho GridViewl

Microsoft Vietnam - D P E Team i Bed SÔ 2: Giới thiệu cách thức truy cập dữ liệu

Page 7: Giới thiệu về cách thức truy cập dữ liệudulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · 8 Câu hỏi ôn tập ... dụng XML làm cơ sở dữ

Untitled Page - Mozilla Firefox

File Edit View History Bookmarks Jools Help

^ C X <i> □ http://localhost491.63/WebSite/SqlDataSource.aspx

P Most Visited 3^ Getting Started Latest Headlines

Id TenK h o H an g

1 Kho số c2 Kho hàng B3 Kho chứa A

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 van 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, LINỌ to XML đọc dữ liệu từ định dạng XML.

5.1 LINQcơ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< > dshh = dm.LayDanhMucHangHoa();List<HangHoaChiTiet> dmhh = new List<HangHoaChiTiet>(); foreach ( TiiTiet hh in dshh)ỉ

if (hh.HangHoa_TenHang.ToString().StartsWith("B")){

dmhh.Add(hh);á

}

Neu sủ dụng LINQ trong mã lập trình:

List< > dshh = đm.LaỵDanhMucHangHoa();IEnumerable< > dmhh;dmhh = from hh in dshh

where hh.HangHoa TenHang.ToString() .StartsWith ("B") select hh;

GridViewl.DataSource = dshh;Gridviewl.DataBind();

5.1.1 Cách làm việc của LINQ

Đe 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 - D P E Team i Bài sô 2: Giới thiệu cách thức truy cập dữ liệu

Page 8: Giới thiệu về cách thức truy cập dữ liệudulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · 8 Câu hỏi ôn tập ... dụng XML làm cơ sở dữ

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< > dmhh = from hh in dshhselect hh.HangHoa_TenHang;

5.1.3 Dùng filter và sorting với LINQ

IEnumerable< > dmhh;đmhh = from hh in dshh

where hh.HangHoa TenHang.ToString().StartsWith ("B") select hh;

hoặc

IEnumerable< > drtthh;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< > dmhh = from hh in dshhselect hh;

IEnumerable< > 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 - D P E Team I Bài sỗ 2: Giới thiệu cách thức truy cập dữ liệu 8

Page 9: Giới thiệu về cách thức truy cập dữ liệudulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · 8 Câu hỏi ôn tập ... dụng XML làm cơ sở dữ

Add New Item - C:\Test\WebSite1\

Templates:

o Q¡1

Visual Studio installed te m p la te s

i H] Web Form .jjA JA X Client Behavior

"H AJA* Master Page Browser File

¿ ] Crystal ReportGlobal Application Class

j ,L IN Q to SQL Classes ^ R e s o u r c e File

J SQL Server D atabase 3§W C F Service j^XM L File

My Templates

~1 Master Page ¿îjAJAX Client Control

AJAX Web Form Class DataSet

^ HTML Page

J Report l^ J Site Map

Style Sheet j j , Web Configuration File

[J j XML Schema

J : Web User Control ijjA JA X Client Library

AJAX-enabled WCF Service J Class Diagram ^ Generic Handler

g p S c r ip t File / J Report W eard jyJ’Skin File

g | Text File ^ Web Service $ XSLT File

LINQ to SQL classes mapped to relational objects.

Name: LinqSqlDataContextị dbml

Language: Visual c# V 0 Place code in sepa ra te file

Select m aster page

Add Cancel

Figure 10. Tạo ra một LinqSalDataContext 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)

ÿư)ÕỊmX■§.o

oocrpX

Start Page App_Code/Linq...aContext.dbml Default.aspx

Figure 11. Mô hình LinqSqlDataContext

Thiết lập cấu hình cho control Linqdatasource 1 : Chọn Linqdatasourcel Configure Data Source... -> Chọn LinqSqlDataContext (Figure 12)

Microsoft Vielnum —DPE Teum I Bài su 2: Gi('rì thiệu cách Ihúv Iruy cập dữ liệu 9

Page 10: Giới thiệu về cách thức truy cập dữ liệudulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · 8 Câu hỏi ôn tập ... dụng XML làm cơ sở dữ

Configure Data Source - Linqdatasourcel

AChoose a Con tex t Object

Select a context object that can be used to retrieve or update data.

0 Show only DataContext objects

Choose your context object:

LinqSqlDataContextDataContext v

: Previous Next > Finish Cancel

Figure 12. LinqDataSource Configure Data Source...

Thuc hiên dua dir lieu tir LinqDataSource vào vào GridView (Figure 13)

»\ LinqDataSource.aspx sta rt Page Default.aspx

C lient O b jcc ts & E v en ts ■v (No Events)

"forml" runac="server”

"GridViewl" runat-"server" AutoGenerateColumns**"False'’ "ID" DataSourceID="LinqDataSourc:el">

"ID" InsertVisible="Fa Is

<:foriri id=<div>

<asp:GridView ID*DataKeyNaroes=<Colurons>

<asp:BoundField DataField=,,ID" HeaderText =ReadOnly“”True" SortExpres3ion="ID" />

<asp: BoundField DataField“"TenHaaig" HeaderText"”TenIIang” SortExpres3ion*"TenHang" />

<asp:BoundField DacaField=”KhoID" HeaderText="KhoID" SortExpression^'KhoID" </Coluinns>

</asp:GridView><asp:LinqDataSource ID»*"LinqDataSourcel" runat*"server"

ContextTypeName-"LinqSqlDataContextDataContext" TableName-"HangHoas"></asp : LmqDataSource>

< |

ID TenHangKhoID0 a b c 0

1 a b c 1

2 a b c 2

3 a b c 3

4 a b c A

GridView TasksAuto Form at. ..

Choose Data Source: LinqDataSource 1 -

Configure Data Source ...

Refresh Schema

Edit Colum ns...

Add New Column...

Move Column Left

Remove Column

1 1 Enable Paging

1 1 Enable Sorting

1 1 Enable Selection

Edit Templates

Figure 13. Chon DataSource cua GridView 1 là LinqDataSource 1

Microsoft Vielnum —DPE Team I Bài su 2: Giâi Ihiêu edeh Ihüc Iruy câp dir lieu 10

Page 11: Giới thiệu về cách thức truy cập dữ liệudulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · 8 Câu hỏi ôn tập ... dụng XML làm cơ sở dữ

Untitled Page - Mozilla Firefox

File Edit View History Bookmarks Tools Help

@ • C ^ http://localhost:49163/WebSite/LinqDataSource.aspx

P Most Visited ^ Getting Started Latest Headlines

ID TenHang KhoID1 Đò điện tử 12 Đò tiêu đùng 23 Đo choi trẻ em 34 Đò máy tinh 35 Thiết bị V tể 16 Thiêt bị mòi trườn? 2

Figure 14. Thực hiện truy cập dữ liệu với LìnqDataSource

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)

T em plates: ^ ỉ ^ ỉ

Visual S tudio installed te m p la tes

i^ l W eb Form H I M aster Page 1 : 1 W eb User Control

3 jA JA X Client Behavior ¿3] AJAX Client Control a ] AJAX C lient Library

n AJAX M aster Page AJAX W eb Form iS |A IA X -enabled WCF Service

Browser File ^ Class ¿ 5̂ Class D iagram

j D Crystal Report ¡jy DataSet ^ Generic H andler

-ft! Global A pplication Class !•) HTML Page 3 } J S c rip t File

^ ,U N Q to SQL Classes jS] Report ¿ 1 R eport Wizard

¿¡Jl Resource File Site M ap ¿¿ 'S k in File

LJ SQL Server D atabase AH Style Sheet ^ Text File

HijWCF Service W eb C onfiguration File ft] W eb Service

XML File iüj XML Schem a XSLT File

My T em plates

. J Search O nline Tem plates...

A visually d esigned class fo r creating a W eb Service

N am e: W ebService|asm x

Language: Visual C» ▼ o Place co d e in sepa ra te file

Select m aster p age

Add Cancel

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ưong 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

Micrusufl Vielnum —DPE Teum I Bài số 2: Giói Ihiệu cách thức Iruy cập dữ liệu 11

Page 12: Giới thiệu về cách thức truy cập dữ liệudulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · 8 Câu hỏi ôn tập ... dụng XML làm cơ sở dữ

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.es

[WebMethod]public .-iSel DanhMucHangHoa() i

SolConnecLion conn = new( .ConnectionStrings["ConnectionString"]-Connection

String);DataSet ds = new DataSet 0;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.es

protected void Page_Load (object sender, iii/enLArg e){

webSexvice vs = new webServiceO;GridViewl.DataSource = vs.DanhMucHangHoa().Tables["HangHoa"].Defaultview; GridViewl.DataBind();

}

Ket quả khi thực hiện (Figure 16)

Untitled Page - Mozilla Firefox

File Edit View History Bookmarks Jools Help

®p - c □Ìhttp://localhost:49163/WebSite/WebServices.aspx

p Most Visited ^ Getting Started Latest Headlines

ID TenHans KhoID1 Đò điện tư 12 Đò tiêu đùng 2

3 Đo chơi trẽ em 34 Đô mảy tính 35 Thiểt bị y tể 16 Thiet bị mòi trường 2Ấm

Figure 16. Ket 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 - D P E Team i Bài số 2: Giới thiệu cách thức truy cập dữ liệu 12

Page 13: Giới thiệu về cách thức truy cập dữ liệudulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · 8 Câu hỏi ôn tập ... dụng XML làm cơ sở dữ

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 bang ajax của thư viện miễn phí prototype.js như sau (Figure 17)

*HỌoerpX

?(/}(6<Dỉ

Ajax-aspx Start PageClient Objects & Events ▼ (No Events)

<%3 Page Language-"C#" AutoEver.tWireup-"true" CodeFile-"Ajax.aspx.es" Xnherlts-"Ajax" %>

<!DOCTYPE html PU3LIC "-//W3C//DTD XHTML 1.0 Trar.sitional//EN" "http: //www.w3.oro/TR/xhtmi:/DTD/xhtnill-transitional.dtd"> 0<html xnar.3-"at£E;//raffl«wS«.gSfl/1929/i&tIlfl">£j<head runat="server">

<title>Untltled Page</title>

<scnpt type»"text/javascript" src“"prototype. js"></scnpt>

<script type="text/javascript"> callAjax - function(){

url = $('strURL').value; new Ajax.Request(url, {

method: 'get',onSuccess: function(transport) {

S ('viewData').update(transport.responseText);>

>);>

</scnpt>

</head><body>

<form id="fcnnl" rur.at="server">$ <dlv>

<div id="viewData"></div><input type**texcw r.ame-"strURL" id-"strURL" style""width: 400px" /xbr /><mput type="button" value="Call Ajax" onclic)c="1 avasenpt:callAiaxl):" />

</div>

</body>L</html>

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.

Ket quả thực hiện Ajax với tham so URL: http://localhost:49163/WebSite/Adonet.aspx (Figure 18)

Microsoft Vietnam - D P E Team i Bài sô 2: Giới thiệu cách thức truy cập dữ liệu 13

Page 14: Giới thiệu về cách thức truy cập dữ liệudulieu.tailieuhoctap.vn/books/cong-nghe-thong-tin/lap-trinh-ung... · 8 Câu hỏi ôn tập ... dụng XML làm cơ sở dữ

Untitled Page - Mozilla Firefox

File Edit View History Bookmarks Tools Help

- c X Ô LJ 1http://localhost491.63/WebSite/Ajax.aspx

p Most Visited ^ Getting Started Latest Headlines

ID TenHang KhoID1 Đô điện tư 12 Đỏ tiêu đùn? 23 Đo chcõ trẻ em 34 Đỏ máy tính 3

Thiểt bị y tể 16 Thiểt bị mòi trường 2http://localhost49163/WebSite/Adonetaspx

[CaÎAjaxj I

Figure J8. Gọi AJAX với tham so 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 tabie 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/

Microsoft Vietnam - D P E Team i Bài sô 2: Giới thiệu cách thức truy cập dữ liệu 14