Cấu trúc tập tin web.config

Một phần của tài liệu Giáo trình xây dựng ứng dụng web (ngành hệ thống thông tin) (Trang 140)

Web.config là một tập tin văn bản được sử dụng để lưu trữ thông tin cấu hình của một ứng dụng, được tự động tạo ra khi chúng ta tạo mới ứng dụng web. Tập tin web.config được viết theo định dạng XML.

Web.config được tạo kế thừa các giá trị từ tập tin Windows\Microsoft. NET\Framework\[Framework Version]\CONFIG\machinẹconfig

Tập tin cấu hình ứng dụng Web.config:

<?xml version="1.0"?>

<!-- For more information on how to configure your ASP.NET application, please visit http://gọmicrosoft.com/fwlink/?LinkId=169433 --> <configuration> <connectionStrings> <ađ name="qlkhachhang" connectionString="server=.;database=QLSV;integrated security=sspi" providerName="System.DatạSqlClient"/> </connectionStrings> <system.web>

<compilation debug="true" targetFramework="4.0"/> <authentication mode="Forms">

<forms loginUrl="~/Account/Login.aspx" timeout="2880"/> </authentication>

KHOA CÔNG NGHỆ THÔNG TIN 138 <providers> <clear/> <ađ name="AspNetSqlMembershipProvider" type="System.Web.SecuritỵSqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/> </providers> </membership> <profile> <providers> <clear/> <ađ name="AspNetSqlProfileProvider" type="System.Web.ProfilẹSqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/> </providers> </profile> <roleManager enabled="false"> <providers> <clear/> <ađ name="AspNetSqlRoleProvider" type="System.Web.SecuritỵSqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/"/> <ađ name="AspNetWindowsTokenRoleProvider" type="System.Web.SecuritỵWindowsTokenRoleProvider" applicationName="/"/> </providers> </roleManager>

KHOA CÔNG NGHỆ THÔNG TIN 139 </system.web> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer> </configuration> 5.7.2. Các cấu hình mặc định

* <compilation defaultLanguage="vb" debug="true"/>

defaultLanguage: qui định ngôn ngữ mặc định của ứng dụng. debug: Bật/tắt chế độ debug của ứng dụng

* <customErrors mode="RemoteOnly"/>

Đây là một cấu hình khá cần thiết cho ứng dụng Web. Hiệu chỉnh cấu hình này cho phép chúng ta quản lý việc xử lý lỗi khi có lỗi phát sinh trong ứng dụng.

Thuộc tính mode có các giá trị: RemoteOnly, On và Off.

 RemoteOnly: Cho phép người dùng thấy thông báo lỗi của hệ thống hoặc trang thông báo lỗi được chỉ định qua defaultRedirect (nếu có).

Thông báo lỗi gồm: Mã lỗi và mô tả lỗi tương ứng <customErrors mode="RemoteOnly"

defaultRedirect="Error/Err.aspx"/>

 On: Tùy theo giá trị của defaultRedirect mà có các trường hợp tương ứng:

* Có qui định trang thông báo lỗi qua defaultRedirect: Hiển thị trang thông báo lỗị

KHOA CÔNG NGHỆ THÔNG TIN 140

Hình 5-3 Thông báo lỗi trang

* Không có thuộc tính defaultRedirect: Hiển thị trang báo lỗi nhưng không có hiển thị mã lỗi và mô tả lỗị

Hình 5-4 Trang lỗi, không hiển thị mã lỗi

 Off: Hiển thị thông báo lỗi của trang aspx (nếu xảy ra lỗi).

KHOA CÔNG NGHỆ THÔNG TIN 141 * <sessionState>

<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1; Trusted_Connection=yes" cookieless="false" timeout="20" />

 mode: Thuộc tính này có 3 giá trị: InProc, sqlserver (lưu trong database), và stateserver (lưu trong bộ nhớ)

 stateConnectionString: Cấu hình địa chỉ và cổng (port) của máy để lưu trữ thông tin của Session trong vùng nhớ (nếu chức năng này được chọn).

 sqlConnectionString: Cấu hình kết nối đến SQL Server được dùng để lưu thông tin Session (nếu chức năng này được chọn).

 cookieless: Nếu giá trị của thuộc tính này = True, thông tin cookie sẽ được lưu trữ trong URL, ngược lại, nếu = False, thông tin cookies sẽ được lưu trữ tại client (nếu client có hỗ trợ)

 timeout: Khoảng thời gian (tính bằng phút) mà đối tượng Session được duy trì. Sau khoảng thời gian này, đối tượng Session sẽ bị huỷ. Giá trị mặc định của thuộc tính này là 20.

5.8. Bài tập áp dụng

1. Viết chương trình đếm số người đang onlinẻ

2. Tạo tập tin .txt. Viết chương trình ghi nhận các thành viên đã truy cập website vào file và đọc số thành viên đã từng truy câp cho người dùng xem?

3. Viết chương trình đăng nhập bằng username và password lưu thông tin trên máy client để cho lần đăng nhập saụ

KHOA CÔNG NGHỆ THÔNG TIN 142

CHƯƠNG 6: XÂY DỰNG CÁC THÀNH PHẦN TRUY XUẤT DỮ LIỆU Giới thiệu: Giới thiệu về các kiến trúc công nghệ ADỌNET kết nối với cơ sở dữ liệu

Mục tiêu:

- Trình bày được các kiến trúc của cộng nghệ ADỌNET - Nhận diện được các đối tượng của ADỌNET

- Trình bày được qui trình kết nối dữ liệu - Sử dụng được các đối tượng của ADỌNET

- Xây dựng được ứng dụng Web có sử dụng cơ sở dữ liệu

Nội dung chính:

6.1. Tìm hiểu về ADỌNET

ADỌNET tương tự với ADO, điểm khác biệt chính ở chỗ ADỌNET là một kiến trúc dữ liệu rời rạc, không kết nối (Disconnected Data Architecture). Với kiến trúc này, dữ liệu được nhận về từ cơ sở dữ liệu và được lưu trên vùng nhớ cache của máy người dùng. Người dùng có thể thao tác trên dữ liệu họ nhận về và chỉ kết nối đến cơ sở dữ liệu khi họ cần thay đổi các dòng dữ liệu hay yêu cầu dữ liệu mớị

Việc kết nối không liên tục đến cơ sở dữ liệu đã đem lại nhiều thuận lợi, trong đó điểm lợi nhất là việc giảm đi một lưu lượng lớn truy cập vào cơ sở dữ liệu cùng một lúc, tiết kiệm đáng kể tài nguyên bộ nhớ. Giảm thiểu đáng kể vấn đề hàng trăm ngàn kết nối cùng truy cập vào cơ sở dữ liệu cùng một lúc.

ADỌNET kết nối vào cơ sở dữ liệu để lấy dữ liệu và kết nối trở lại để cập nhật dữ liệu khi người dùng thay đổi chúng. Hầu hết mọi ứng dụng đều sử dụng nhiều thời gian cho việc đọc và hiển thị dữ liệu, vì thế ADỌNET đã cung cấp một tập hợp con các đối tượng dữ liệu không kết nối cho các ứng dụng để người dùng có thể đọc và hiển thị chúng mà không cần kết nối vào cơ sở dữ liệụ

Các đối tượng ngắt kết nối này làm việc tương tự đối với các ứng dụng Web.

6.2. Giới thiệu

Mục tiêu chính của ADỌNET là:

o Cung cấp các lớp để thao tác dữ liệu trong cả hai môi trường là phi kết nối (Disconnected data) và kết nối (Connected data).

o Tích hợp chặt chẽ với XML (Extensible Markup Language)

o Tương tác với nhiều nguồn dữ liệu thông qua mô tả chung

KHOA CÔNG NGHỆ THÔNG TIN 143

o Làm việc trên môi trường Internet

Các lớp của ADỌNET được đặt trong Namespase là System.Data

ADỌNET bao gồm 2 provider để thao tác với các cơ sở dữ liệu là OLEDB provider (nằm trong System.DatạOLEDB) dùng để truy xuất đến bất kỳ CSDL có hỗ trợ OLEDB; SQL Provider dữ liệu (nằm trong System.DatạSQLClient) chuyên dùng để truy xuất đến CSDL SQL Server (Không qua OLE DB nên nhanh hơn).

6.3. Kiến trúc ADỌNET

ADỌNET được chia ra làm hai phần chính rõ rệt, được thể hiện qua hình

Hình 6-1 Kiến trúc ADỌNET

Từ kiến trúc ta thấy rằng ADỌNET là một phần nội tại của .NET Framework, do vậy nó có thể được sử dụng trong tất cả các ngôn ngữ hộ trợ .NET như C#, VB.Net… mà không có sự khác biệt nào (Tức là các chức năng cũng như cách sử dụng hoàn toàn giống nhau).

- ADỌNET được thiết kế để kết nối với cả dữ liệu phi kết nối trong môi trường đa tầng (Multi – Tier). Nó sử dụng XML để trao đổi dữ liệu phi kết nối do vậy dễ dàng khi giao tiếp giữa các ứng dụng không phải trên nền Windows.

- ADỌNET hỗ trợ hoàn toàn XML, nghĩa là chúng ta có thể nạp dữ liệu từ một tệp XML và thao tác như một CSDL, sau đó cũng có thể lưu kết quả ngược trở lại tệp XML do vậy có thểđi qua FireWall một cách dễ dàng.

KHOA CÔNG NGHỆ THÔNG TIN 144

6.4. Minh họa tạo kết nối cơ sở dữ liệu

Hình 6-2 Mô hình kết nối cơ sở dữ liệu

DataSet là thành phần chính cho đặc trưng kết nối không liên tục của kiến trúc ADỌNET. DataSet được thiết kế để có thể thích ứng với bất kỳ nguồn dữ liệu nàọ DataSet chứa một hay nhiều đối tượng DataTable mà nó được tạo từ tập các dòng và cột dữ liệu, cùng với khoá chính, khóa ngoại, ràng buộc và các thông tin liên quan đến đối tượng DataTable nàỵ Bản thân DataSet được dạng như một tập tin XML.

Thành phần chính thứ hai của ADỌNET chính là NET Provider Data, nó chứa các đối tượng phục vụ cho việc thao tác trên cơ sở dữ liệu được hiệu quả và nhanh chóng, nó bao gồm một tập các đối tượng Connection, Command, DataReader và

DataAdapter. Đối tượng Connection cung cấp một kết nối đến cơ sở dữ liệu, Command cung cấp một thao tác đến cơ sở dữ liệu, DataReader cho phép chỉ đọc dữ liệu và DataAdapter là cấu nối trung gian giữa DataSet và nguồn dữ liệụ

6.5. Các đối tượng trong ADỌNET

ADỌNET bao gồm nhiều đối tượng bạn có thể dùng với dữ liệụ Các đối tượng dưới đây bắt buộc bạn phải biết để làm việc với dữ liệu khi dùng ADỌNET.

SqlConnection

Để tương tác với database, bạn phải có một kết nối tới nó. Kết nối giúp xác định database server, database name, user name, password, và các tham số cần thiết để kết nối tới databasẹ Một đối tượng connection được dùng bởi đối tượng command vì thế chúng sẽ biết database nào để thực thi lệnh.

KHOA CÔNG NGHỆ THÔNG TIN 145 Quá trình tương tác với database cần phải biết hành động nào bạn muốn xảy rạ Điều này được thực hiện bởi đối tượng command. Bạn dùng đối tượng command để gửi một câu lệnh SQL tới databasẹ Một đối tượng command dùng một đối tượng connection để xác định database nào sẽ được truy xuất. Bạn có thể dùng một đối tượng command riêng lẻ để thực thi lệnh trực tiếp, hoặc để gắn một tham chiếu của đối tượng command cho một SqlDataAdapter – đối tượng giữ các command sẽ làm việc trên một nhóm dữ liệu như sẽ đề cập tới trong phần dướị

SqlDataReader

Nhiều thao tác dữ liệu đòi hỏi bạn chỉ lấy một luồng dữ liệu để đọc. Đối tượng data reader cho phép bạn lấy được kết quả của một câu lệnh SELECT từ một đối tượng command. Để tăng hiệu suất, dữ liệu trả về từ một data reader là một luồng dữ liệu fast forward-onlỵ Có nghĩa là bạn chỉ có thể lấy dữ liệu từ luồng theo một thứ tự nhất định. Mặc dù điều này có lợi về mặt tốc độ, nhưng nếu bạn cần phải thao tác dữ liệu, thì một DataSet sẽ là một đối tượng tốt hơn để làm việc.

DataSet

Đối tượng DataSet là một thể hiện của dữ liệu trong bộ nhớ. Chúng chứa nhiều đối tượng DataTable, bên trong DataTable lại có nhiều column và row, giống như các database table thông thường. Bạn thậm chí có thể định nghĩa dữ liệu giữa các table để tạo các quan hệ parent-child. DataSet được thiết kế đặc biệt để giúp quản lý dữ liệu trong bộ nhớ và để hỗ trợ các thao tác không cần kết nối (disconnected) trên dữ liệụ DataSet là một đối tượng được dùng bởi tất cả Data Provider, đó là lý do tại sao nó không có một Data Provider prefix trong tên gọị

SqlDataAdapter

Đôi lúc dữ liệu mà bạn làm việc là read-only và bạn ít khi cần thay đổi dữ liệu nguồn. Vài trường hợp cần lưu trữ tạm dữ liệu trong bộ nhớ để hạn chế truy xuất đến databasẹ Data adapter làm điều này dễ dàng bằng cách giúp bạn quản lý dữ liệu trong chế độ ngắt kết nốị Data adapter sẽ đổ vào DataSet khi đọc dữ liệu và thực hiện thay đổi dữ liệu một lượt vào databasẹ

Data adapter chứa một tham chiếu đến đối tượng connection và mở/đóng kết nối tự động khi đọc và ghi dữ liệu vào databasẹ Hơn nữa, data adapter chứa đối tượng command cho những thao tác SELECT, INSERT, UPDATE và DELETE trên dữ liệụ Bạn sẽ có một data adapter được định nghĩa cho mỗi table trong một DataSet và nó sẽ quản lý các giao tiếp với database cho bạn. Tất cả những gì bạn cần làm là chỉ cho data adapter khi nào nạp hoặc ghi vào databasẹ

KHOA CÔNG NGHỆ THÔNG TIN 146

6.6. Đối tượng Connection

Kết nối cơ sở dữ liệu SQLServer

Bạn cần nhập khẩu lớp SqlClient using System.DatạSqlClient; Khai báo và khởi tạo:

SqlConnection sqlcon;

string driver="server=localhost; UID=sa; PWD=; database=name_database"; sqlcon=new Sqlconnection();

sqlcon.ConnectionString=driver;

Driver là chuỗi kết nối đến cơ sở dữ liệu trong trường hợp này mình kết nối với sqlserver 2000/2005

Kết nối với cơ sở dữ liệu Access Bạn cận nhập khẩu lớp OleDb using System.DatạOleDb; OleDbConnection oleconn;

string driver = "Provider=Microsoft.jet.OLEDB.4.0; Data Source=duongdan_tendata";

oleconn = new OleDbConnection(); oleconn.ConnectionString = driver; Thuộc tính:

ConnectString: chứa đựng chuỗi kết nối tới cơ sở dữ liệu

Database: Chứa đựng tên cơ sở dữ liệu trong chuỗi kết nối ConnectString ở trên và bạn có thể thay đổi cơ sở dữ liệu trong lúc thực thi bằng phương thức ChangeDataBase:

Sqlconn.ChangeDatabase(“name_database_thaydoi”); Server: tên máy chủ bạn trỏ tới

Connect Timeout: số thời gian(tính bằng giây) chờ kết nối dữ liệu mặc đình là 15giây, nếu trong khoảng thời gian này mà vẫn chưa kết nối xong một lỗi Connect Timeout được đưa rạ

KHOA CÔNG NGHỆ THÔNG TIN 147 State: trả về trạng thái của đối tượng SqlConnection: bạn có thể kiểm tra trạng thái của State như sau

ResponsẹWrite(sqlconn.State)

Các phương thức của đối tượng Connection

Open: cho phép mở dữ liệu với các thuộc tính đã khai báo trong ConnectString Close: Đóng cơ sở dữ liệu đang mở

CreateCommand: phương thức cho phép gán hay trả về một đối tượng Command ứng với đối tượng Connection, như ví dụ HelloWorld

SqlConnection sqlconn = new SqlConnection(driver); SqlCommand sqlcom = sqlconn.CreateCommand();

sqlcom.CommandText = "select sTitle from tblHello where pkHelloID=1"; BeginTransaction: Phương thức này khai báo bắt đầu một chuyển tác, để kết thúc chuyển tác bạn dùng Table Commit

Rollback: trong trương hợp có lỗi trong quá trình thực thi bạn có thể sử dụng phương thức Rollback để huỷ bỏ các chuyển tác đã thực hiện.

Dispose: dùng để huỷ bỏ hay giải phóng đối tượng Connection đang sử dụng

6.7. Đối tượng Command

• Đối tượng Command dùng để thực hiện câu lệnh SQL hoặc thủ tục nội tại (stored procedure)

• Thực hiện ExecuteScalar: kết quả trả về là một giá trị

• Thực hiện ExecuteReader: kết quả trả về là một tập các dòng

• Thực hiện ExecuteNonQuery: kết quả trả về là số dòng bị ảnh hưởng

Ví dụ các phương thức thực hiện

• Thực hiện ExecuteScalar: SELECT COUNT(*) FROM … • Thực hiện ExecuteReader: SELECT * FROM …

• Thực hiện ExecuteNonQuery: INSERT INTO …

Các Command trong .NET

KHOA CÔNG NGHỆ THÔNG TIN 148 • System.DatạOleDbClient.OleDbCommand

• System.DatạOdbc.OdbcCommand

• System.DatạOracleClient.OracleCommand

Khai báo và khởi tạo Command

• Thuộc tính CommandText Là câu lệnh SQL hoặc tên thủ tục nội tại

• Thuộc tính CommandType Mặc định là Text, tương ứng là câu lệnh SQL Là StoredProcedure khi là tên thủ tục nội tại

• Thuộc tính Connection Đối tượng kết nối CSDL

Cho thực hiện Command

• Khai báo và khởi tạo Command Các thuộc tính CommandText, CommandType, Connection

• Thực hiện

o Phải mở Connection trước khi thực hiện lệnh Các phương thức ExecuteScalar, ExecuteReader, ExecuteNonQuery

o Phải đóng Connection sau khi thực hiện lệnh

Khai báo và khởi tạo

using System.DatạSqlClient; //Tạo chuỗi lệnh

string lenh = "select count(*) from production.product"; //Tạo đối tượng bộ lệnh

SqlCommand bo_lenh = new SqlCommand(lenh, ket_noi);

Thực hiện câu lệnh

• Mở đối tượng Connection

• Thực hiện câu lệnh và xử lý kết quả • Đóng đối tượng Connection

ket_noịOpen();

KHOA CÔNG NGHỆ THÔNG TIN 149 ket_noịClose();

TextBox1.Text = "Số sản phẩm : " + n.ToString();

* Sử dụng Command có tham số

• Khai báo các tham số (Parameter) • Khởi tạo các thuộc tính cho tham số • Gắn các tham số cho Command • Thực hiện Command

• Nhận kết quả ứng với các tham số loại đầu ra (output) hoặc tham số trả về (return)

Các Parameter trong .NET

• System.DatạSqlClient.SqlParameter • System.DatạOleDbClient.OleDbParameter • System.DatạOdbc.OdbcParameter • System.DatạOracleClient.OracleParameter Các thuộc tính của tham số • Parameter • Name • DbType • Size • Direction • Value

Gắn các Parameter cho Command

• Command có thuộc tính tập hợp Parameters

• Thuộc tính Parameters chứa danh sách các tham số của Command

• Sử dụng phương thức Ađ của thuộc tính Parameters để gắn các tham số cho Command

KHOA CÔNG NGHỆ THÔNG TIN 150

6.8. Đối tượng DataReader

Đối tượng này được net cung cấp để đọc dữ liệu từ bảng cơ sở dữ liệu, nó là đối tượng chỉ phục vụ thao tác đọc dữ liệu(Read only). Trong khi truy xuất dữ liệu nó sẽ giữ kết nối liên tục với database(hướng kết nối)

Khai báo và khởi tạo đối tượng SqlDataReader sqlreader;

sqlreader = sqlcom.ExecuteReader();

6.9. Đối tượng DataAdapter

DataAdapter là đối tượng làm trung gian lấy dữ liệu về cho DataSet, để DataSet thực hiện xử lý ngắt kết nốị Do vậy, mặc dù DataAdapter được liệt kê là đối tượng hướng kết nối nhưng thực chất nó phục vụ cho việc ngắt kết nốị Hay nói cách khác, để lầy dữ liệu từ nguồn dữ liệu về cho ứng dụng, chúng ta sử dụng một đối tượng gọi là DataAdapter. Đối tượng này cho phép ta lấy cấu trúc và dữ liệu của các bảng trong nguồn dữ liệụ

Các đối tượng không kết nối (hay các đối tượng chứa dữ liệu) cho phép

Một phần của tài liệu Giáo trình xây dựng ứng dụng web (ngành hệ thống thông tin) (Trang 140)

Tải bản đầy đủ (PDF)

(178 trang)