Đề tài Tìm hiểu Microsoft ASP.NET

Với sự phát triển nhanh chóng của Internet và thương mại điện tử như hiện nay. Việc lựa ASP.NET được coi như là giải pháp hữu hiệu nhất. Với ASP.NET thiết kế Web giờ đây trở nên dễ dàng hơn bao giờ hết do được hỗ trợ nhiều thành phần phong phú, có khả năng vượt qua mọi trình duyệt, thiết bị mà ta không cần quan tâm đến việc định dạng các trang tài liệu cho mỗi trình duyệt, mỗi thiết bị, ASP.NET kết thúc những tranh luận về ngôn ngữ lập trình khi hỗ trợ trên 25 ngôn ngữ khác nhau. Khi kết hợp với ADO+ với ASP.NET ta dễ dàng triển khai được các ứng dụng với mô hình N-tier, tạo ra được nguồn dữ liệu không kết nối từ nhiều nguồn dữ liệu khác nhau Hơn nữa, ASP.NET mở ra nhiều cơ hội cho các nhà phát triển với các ứng dụng phân tán cung cấp dữ liệu cho khách hàng thông qua Internet cho phép họ tạo ra một dòng phần mềm mới với dữ liệu XML. Em đã cố gắng khi xây dựng một ứng dụng với ASP.NET sử dụng cơ sở dữ liệu Oracle, kết hợp hai công cụ sức mạnh nhất trên Internet. Nhưng do thời gian tìm hiểu về hai công cụ này quá ít nên chưa phát huy được nhiều lợi ích do chúng đem lại. Cuối cùng, em xin cảm ơn TS. Cao Kim Ánh là người trực tiếp hướng dẫn em hoàn thành đồ án này, anh Tuấn giám đốc Trung tâm và các anh, chị ở phòng nghiên cứu và phát triển Trung tâm CNTT – Ngân hàng công thương Việt Nam (ITC-ICB) đã khuyến khích và tạo điều kiện thuận lợi cho em hoàn thành đồ án đúng thời hạn.

doc108 trang | Chia sẻ: oanh_nt | Lượt xem: 1275 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đề tài Tìm hiểu Microsoft ASP.NET, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ng có quyền đưa các thông tin về mặt hàng của mình vào trong CSDL bất cứ lúc nào 3.2. Sơ đồ phân rã chức Mục đích của sơ đồ phân rã chức năng: + Chỉ ra ràng buộc cần xây dựng, xác định các chức năng mà HT cần thực hiện. + Xác định rõ phạm vi của hệ thống trong phân tích hệ thống. Các chức năng được xác định ở đây sẽ được dùng nhiều trong mô hình sau này. Chỉ ra miền khảo cứu của hệ thống trong toàn bộ hệ thống tổ chức. Điều này có thể làm rõ trách nhiệm, giúp tránh được trùng lặp công việc. người dùng Quản trị Tài khoản User Thư liên hệ Mặt hàng Đăng nhập Tìm kiếm Post xác nhận hợp lệ Xem và sửa Gửi thư Cập nhật danh mục login đồng ý login/Register đồng ý Kết quả tìm thấy YC tìm/duyệt Tạo thư Lưu thư Thêm mặt hàng Yêu cầu xác nhận Xem lại mặt hàng Thông báo xác nhận Thay đổi Sửa đổi Yêu cầu xác nhận đồng ý Cập nhật Cập nhật Quản lý danh mục Xác nhận Tìm thấy Xác nhận đông ý Yêu cầu Tìm kiếm Nhận thư 3.2.3. Mô hình logic Mô hình logic cho ta thấy được quan hệ của các đối tượng dữ liệu trong cơ sở dữ liệu. Các quan hệ này có thể trực tiếp hay gián tiếp và không cần quan tâm đến dữ liệu được lưu trữ như thế nào. CSDL này có 6 thực thể chính: Categories (các danh mục hàng hoá lớn). SubCategories (các danh mục hàng hoá phụ). Products. Users (người sử dụng). Mailsent (thông tin về mail của người dùng). Maildetails (thông tin chi tiết về mail liên quan đến sản phẩm). Ngoài ra còn một số thực thể (admin, Post) không có quan hệ dùng để chứa một vài thông tin cho ngươì quản lý. Mối quan hệ giữa các thực thể có thể tổng kết như sau: Mỗi Category có thể có nhiều SubCategories. Trong mỗi SubCategory lại có nhiều loại sản phẩm. Một người dùng có thể Post lên đó nhiều sản phẩm và gửi nhiều bức thư về các sản phẩm mà mình quan tâm, một sản phẩm có thể được nhiều người quan tâm và được gửi nhiều thư có liên quan đến thông tin trong sản phẩm đó. 3.2.4Mô hình Vật lý Cơ sở dữ liệu vật lý trong Oracle bao gồm các tập tin dữ liệu, các tablespace, các rollback segment, các bảng, các cột và các index. Ta sẽ bắt đầu thiết kế với đơn vị nhỏ nhất của bộ nhớ vật lý là các cột. Việc định nghĩa các thuộc tính cột là một bước quan trọng trong dự định về năng xuất. Từ thông tin này, kích thước tối đa của mỗi record có thể xác định. Điều này kết hợp với sự đánh giá tổng số hàng giúp xác định không gian cần lưu trữ. Bảng Categories Name Datatype Size Scale Nulls? Default Value CATEGORYID NUMBER 10 0 No CATEGORYNAME VARCHAR2 50 0 No Bảng SubCategories Name Datatype Size Scale Nulls? Default Value SUBCATEGORYID NUMBER 0 No CATEGORYID NUMBER No SUBCATEGORYNAME VARCHAR2 0 0 No Bảng Products Name Datatype Size Scale Nulls? Default Value PRODUCTID NUMBER 10 0 No SUBCATEGORYID NUMBER 10 0 No USERID NUMBER 10 0 No PRODUCTMODEL VARCHAR2 50 0 No PRODUCTION VARCHAR2 50 0 No COUNTRY VARCHAR2 20 0 Yes PRICE FLOAT 10 No IMAGEURL VARCHAR2 50 0 Yes DESCRIPTION VARCHAR2 100 0 Yes QUALITY NUMBER 10 0 Yes AMOUNT NUMBER 10 0 No TOTALVIEW NUMBER 10 0 No DATECREATED DATE 7 0 No ISFORSALE VARCHAR2 20 0 No Bảng Mails Name Datatype Size Scale Nulls? Default Value MAILITEMID NUMBER 10 0 No USERID NUMBER 10 0 No Bảng Maildetails Name Datatype Size Scale Nulls? Default Value MAILITEMID NUMBER 0 No PRODUCTID NUMBER 0 No SUBJECT VARCHAR2 0 No RCPT VARCHAR2 0 No MBODY VARCHAR2 0 No DATESENT DATE 7 0 No Bảng Users: Name Datatype Size Scale Nulls? Default Value USERID NUMBER 10 0 No USERNAME VARCHAR2 50 0 No TEL VARCHAR2 50 0 No ADDRESS VARCHAR2 50 0 No EMAIL VARCHAR2 50 0 No PASSWORD VARCHAR2 10 0 No 3.2.5 Tạo các stored procedure cho ứng dụng Để giảm đi nhiều tính toán cho Web server và tăng cường an ninh cho ứng dụng, các thao tác với CSDL được thực hiện qua các store procedured. Oracle gói các stored procedure trong các Package khiến công việc trở nên modul hoá, che dấu thông tin, dễ dàng được mở rộng khi thêm nhiều chức năng mà không bị ảnh hưởng đến chương trình cũ. Chúng ta sẽ dùng OleDb để gọi các stored procedure trong đây. Create or replace package body PackCategory AS Procedure Getallcategory(c_cursor out cat_cursor) as begin Open c_cursor for select * From Categories; End Getallcategory; Procedure Getsubcategoriesbycat(icategoryid in number, c_cursor out cat_cursor) as begin Open c_cursor for Select c.subcategoryid,c.subcategoryName from subcategories c where c.categoryid=icategoryid ; End Getsubcategoriesbycat; End PackCategory; Create or replace package body PackMail As Procedure Getmaildetails(imailid in number, m_cursor OUT mailcursor) As Begin Open m_cursor for Select * from Maildetails where Mailitemid=imailid; End Getmaildetails; Procedure Getmailbyproduct(iProductid In Number, m_cursor Out mailcursor) As Begin Open m_cursor for Select * from Maildetails where ProductID=iProductid; End GetmailbyProduct; Procedure GetmailbyUser(iUserid In number, m_cursor Out mailcursor) As Begin Open m_cursor for Select m.mailitemid, m.Productid,m.subject,m.RCPT, m.mbody,m.Datesent From maildetails m, Mailsent s Where m.mailitemid=s.mailitemid and s.userid=iuserid; End GetmailbyUser; Procedure Getmailtype (imailtype In number, m_cursor out mailcursor) As Begin Open m_cursor for Select * from Emailtemplate; End Getmailtype; End Packmails; Create or replace package body PackProduct As Procedure GetProductbycat(icategoryid in number,i_isforsale In varchar2,p_cursor out procursor) As begin if i_isforsale='both' then open p_cursor for select p.productid,p.productmodel,p.imageurl,p.totalview, p.price,p.isforsale,u.userid,u.USERNAME,p.subcategoryid from products p,users u where p.subcategoryid in (select subcategoryid from subcategories where categoryid=icategoryid) and p.userid=u.userid ; else if i_isforsale='sale' then open p_cursor for select p.productid,p.productmodel,p.imageurl,p.totalview, p.price,p.isforsale,u.userid,u.USERNAME,p.subcategoryid from products p,users u where p.subcategoryid in (select subcategoryid from subcategories where categoryid=icategoryid) and p.userid=u.userid and p.isforsale='For sale only'; else open p_cursor for select p.productid,p.productmodel,p.imageurl,p.totalview, p.price,p.isforsale,u.userid,u.USERNAME,p.subcategoryid from products p,users u where p.subcategoryid in (select subcategoryid from subcategories where categoryid=icategoryid) and p.userid=u.userid and p.Isforsale ='Wanted'; end if; end if; end GetProductbycat; procedure GetProductbysubcat(isubcategoryid in Number, p_cursor out procursor) As begin open p_cursor for select p.productid,p.productmodel,p.production,p.imageurl,p.totalview, p.price,p.isforsale,u.userid from products p,users u where p.subcategoryid=isubcategoryid and p.userid=u.userid; end GetProductbysubcat; Procedure PostNewProduct(iSUBCATEGORYID IN NUMBER,iUSERID IN NUMBER,iPRODUCTMODEL IN VARCHAR2, iPRODUCTION IN VARCHAR2, iCOUNTRY IN VARCHAR2,iPRICE IN FLOAT, iIMAGEURL IN VARCHAR2, iDESCRIPTION IN VARCHAR2, iQUALITY IN NUMBER,iAMOUNT IN NUMBER,iTOTALVIEW IN NUMBER, iDATECREATED IN DATE, iISFORSALE IN VARCHAR2) IS Begin Insert into Post values( (post_seq.nextval),iSUBCATEGORYID,iUSERID,iPRODUCTMODEL,iPRODUCTION,iCOUNTRY,iPRICE, iIMAGEURL,iDESCRIPTION, iQUALITY,iAMOUNT,iTOTALVIEW,iDATECREATED,iISFORSALE); end PostNewProduct; Procedure SearchProducts(search IN Varchar2,pageindex In number,pagesize in number,p_cursor Out procursor) As pagelow number; pagehight number; Cursor resultcursor is Select ProductID from products Where ProductModel like '%search' OR Production like '%search' OR Description like '%search'; cnt Integer; productlow integer; producthight integer; begin cnt:=0; pagelow:=pageindex * pagesize; pagehight:=pagelow + pagesize + 1; /* Ok, now paging */ For countrec In resultcursor Loop if cnt = pagelow then productlow:=countrec.Productid; End if; if cnt = pagehight then producthight:=countrec.Productid; cnt:=cnt+1; End if; End loop; Open p_cursor for Select P.ProductId,P.ProductModel,P.ImageUrl,P.Price,P.Totalview,U.UserName From Products P,Users U Where P.ProductModel like '%search' OR P.Production like '%search' OR P.Description like '%search' and p.userid=u.userid and P.productid >=Productlow and P.productid <= producthight; End SearchProducts; Procedure GetProductDetails(i_ProductID In Number,p_cursor Out procursor) As Begin Open p_cursor for Select P.SUBCATEGORYID,P.USERID,P.PRODUCTMODEL,P.PRODUCTION,P.COUNTRY,P.PRICE, P.IMAGEURL,P.DESCRIPTION,P.QUALITY,P.AMOUNT,P.TOTALVIEW,P.DATECREATED,P.ISFORSALE, U.Userid From Products P,Users U Where P.Productid=i_Productid and P.Userid=U.Userid; End GetProductDetails; Procedure AddPostProduct(Productid In Number) As Begin Insert Into Products select * From Post; End AddPostProduct; Procedure GetHotProduct (PrevWeek In Date, p_cursor OUT procursor) As Begin Open p_cursor for Select P.SUBCATEGORYID,P.USERID,P.PRODUCTMODEL,P.PRODUCTION,P.COUNTRY,P.PRICE, P.IMAGEURL,P.DESCRIPTION,P.QUALITY,P.AMOUNT,P.TOTALVIEW,P.DATECREATED,P.ISFORSALE, U.Userid From Products P,Users U Where P.Userid=U.Userid and P.Datecreated >=PrevWeek; End GetHotProduct; Procedure Updateview (iProductid IN Number) As Begin Update Products set totalview= totalview +1 Where ProductId =iProductid; end Updateview; End packproduct; Create or replace package body PackUser As Procedure CheckEmail(iEmailadd in varchar2,U_cursor Out UserCursor) As Begin Open U_cursor for Select Email from Users where Email=iEmailadd; End CheckEmail; Procedure CheckLogin (iadmin In varchar2,iEmailadd In Varchar2,iPassword In varchar2, U_cursor Out UserCursor) As Begin If iadmin ='%normal' then Open U_cursor for Select Userid,UserName,password from Users Where Email=iEmailadd and Password=iPassword; Else Open U_cursor for Select Name,Password from Admins where Name=iEmailadd and password=ipassword; End if; End CheckLogin; Procedure AddUser(USERNAME IN Varchar2,TEL IN Varchar2, ADDRESS IN Varchar2, EMAIL IN Varchar2,PASSWORD In Varchar2) As Begin Insert Into Users Values( (User_seq.Nextval), USERNAME, TEL,ADDRESS, EMAIL,PASSWORD); End AddUser; Procedure GetUserDetails(iuserid In Number, u_cursor out usercursor) As Begin Open u_cursor for Select UserName,Tel,Address,Email from users where userid=iuserid; End GetUserDetails; end packUser; 3.3 Mô hình đa tầng của ứng dụng ứng dụng mà ta sẽ cài đặt được triển khai theo mô hình đa tầng (multi-tier). Đây là mô hình mà các ứng dụng ngày nay đang hướng đến để thay thế cho mô hình client/server truyền thống. .aspx file ProductDB.vb CustomerDB.vb Email.vb Oracle User Service Business Service Data Service Trong mô hình này các nghiệp vụ xử lý logic của ứng dụng được cài đặt thành những đối tượng riêng biệt. Trong tầng dịch vụ người dùng chứa các trang .aspx để định dạng giao diện và triệu gọi đối tượng ở tầng nghiệp vụ. Các đối tượng ở tầng nghiệp vụ thực hiện chức năng chính của chương trình bao gồm mã lệnh tách rời phần định dạng HTML. Việc kết nối và truy xuất dữ liệu thực hiện ở tầng thứ 3. Các chức năng trong tầng xử lý nghiệp vụ có thể dễ dàng chuyển sang môi trường sử dụng khác như desktop, chúng ta có thể sử dụng lại chức năng này mà không cần thay đổi gì thêm. Trong ứng dụng này gồm có 3 đối tượng chính ProductDb phục vụ việc xử lý các vấn đề có liên quan đến mặt hàng và các category, đối tượng Customers quản lý các chức năng có liên quan đến khách hàng, Email là đối tượng dùng để xử lý Email của khách hàng trong Web site. Cài đặt: Thư mục cài đặt Cyber_market: thư mục gốc chứa các trang chính của ứng dụng. Images: chứa ảnh giao diện của ứng dụng. ImagePro : chứa ảnh của các mặt hàng. 3.3.1 Cài đặt đối tượng xử lý trong tầng logic nghiệp vụ. Đối tượng ProductDb.vb Imports System Imports System.Configuration Imports System.Data Imports System.Data.OleDb Namespace Cybermarket ' ProductsDB Class ' ' Business/Data Logic Class that encapsulates all data ' logic necessary to query products within ' the cybermaket Products database. ' '******************************************************* Public Class ProductsDB '******************************************************* ' ' ProductsDB.GetProductCategories() Method ' ' The GetProductCategories method returns a DataReader that exposes all ' product categories (and their CategoryIDs) ' The OleDbDataReaderResult struct also returns the ' OleDb connection, which must be explicitly closed after the ' data from the DataReader is bound into the controls. ' '******************************************************* Public Function GetProductCategories() As OleDbDataReader ' Create Instance of Connection and Command Object Dim cnOra As OleDbConnection = New OleDbConnection( _ "Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=Test02;PLSQLRSet=1;Extended Properties=''") Dim cmdCategories As New OleDbCommand _ ("{call packcategory.getallcategory()}", cnOra) cnOra.Open() Dim result As OleDbDataReader result = cmdCategories.ExecuteReader() Return result End Function '******************************************************* ' ' ProductsDB.GetProductsbycat() Method ' ' The GetProducts method returns a struct containing a forward-only, ' read-only DataReader. This displays all products within a specified ' product category. The OleDbDataReaderResult struct also returns the ' OleDb connection, which must be explicitly closed after the ' data from the DataReader is bound into the controls. ' ' Other relevant sources: ' '******************************************************* Public Overloads Function GetProductsbyCat(ByVal categoryID As Integer, ByVal isforsale As String) As DataSet ' Create Instance of Connection and Command Object Dim myConnection As OleDbConnection = New OleDbConnection("Provider=MSDAORA.1;Password=tiger;User ID=scott;Data Source=test02") Dim myCommand As OleDbDataAdapter = New OleDbDataAdapter("{call PackProduct.GetProductbyCat(?,?)}", myConnection) ' Mark the Command as a SPROC ' myCommand.CommandType = CommandType.StoredProcedure ' Add Parameters to SPROC Dim parameterCategoryID As OleDbParameter = New OleDbParameter("ICategoryID", OleDbType.Numeric, 10) parameterCategoryID.Value = categoryID myCommand.SelectCommand.Parameters.Add(parameterCategoryID) Dim parameterisforsale As OleDbParameter = New OleDbParameter("i_isforsale", OleDbType.LongVarChar) parameterisforsale.Value = isforsale myCommand.SelectCommand.Parameters.Add(parameterisforsale) ' Execute the command myConnection.Open() Dim result As New DataSet() myCommand.Fill(result, "Products") Return result myConnection.Close() End Function Public Overloads Function GetProductsbySubCat(ByVal subcategoryid As Integer, ByVal pageindex As Integer, ByVal pagesize As Integer) As OleDbDataReader ' Create Instance of Connection and Command Object Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=Test02;PLSQLRSet=1;Extended Properties=''") Dim myCommand As OleDbCommand = New OleDbCommand("{call PackProduct.GetProductbysubCat(?)}", myConnection) Dim parameterCategoryID As OleDbParameter = New OleDbParameter("IsubCategoryID", OleDbType.Numeric, 10) parameterCategoryID.Value = subcategoryid myCommand.Parameters.Add(parameterCategoryID) ' Execute the command myConnection.Open() Dim result As OleDbDataReader result = myCommand.ExecuteReader Return result myConnection.Close() End Function Public Function GetsubCategoryProducts(ByVal categoryID As Integer) As OleDbDataReader ' Create Instance of Connection and Command Object Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=Test02;PLSQLRSet=1;Extended Properties=''") Dim myCommand As OleDbCommand = New OleDbCommand("{call packcategory.Getsubcategoriesbycat(?)}", myConnection) ' Mark the Command as a SPROC ' myCommand.CommandType = CommandType.StoredProcedure ' Add Parameters to SPROC Dim parameterCategoryID As OleDbParameter = New OleDbParameter("ICategoryID", OleDbType.Numeric, 10) parameterCategoryID.Value = categoryID myCommand.Parameters.Add(parameterCategoryID) ' Execute the command myConnection.Open() Dim result As OleDbDataReader result = myCommand.ExecuteReader() ' Return the datareader result Return result myConnection.Close() End Function Public Function GetProductdetails(ByVal ProductID As Integer) As OleDbDataReader ' Create Instance of Connection and Command Object Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=Test02;PLSQLRSet=1;Extended Properties=''") Dim myCommand As OleDbCommand = New OleDbCommand("{call packproduct.Getproductdetails(?)}", myConnection) ' Mark the Command as a SPROC ' myCommand.CommandType = CommandType.StoredProcedure ' Add Parameters to SPROC Dim parameterProductID As OleDbParameter = New OleDbParameter("i_ProductID", OleDbType.Numeric, 10) parameterProductID.Value = ProductID myCommand.Parameters.Add(parameterProductID) ' Execute the command myConnection.Open() Dim result As OleDbDataReader result = myCommand.ExecuteReader() ' Return the datareader result Return result myConnection.Close() End Function Public Sub Postproduct(ByVal SUBCATEGORYID As Integer, ByVal USERID As Integer, _ ByVal PRODUCTMODEL As String, ByVal PRODUCTION As String, ByVal COUNTRY As String, ByVal PRICE As Double, ByVal QUALITY As Integer, ByVal AMOUNT As Integer, _ ByVal IMAGEURL As String, ByVal ISFORSALE As String, ByVal DESCRIPTION As String, ByVal TOTALVIEW As Integer, ByVal DATECREATED As Date) ' Create Instance of Connection and Command Object Dim myConnection As OleDbConnection = New OleDbConnection( _ "Provider=MSDAORA;Password=tiger;User ID=scott;Data Source=Test02") Dim myCommand As OleDbCommand = New OleDbCommand("{call packproduct.PostNewProduct(?,?,?,?,?,?,?,?,?,?,?,?,?)}", myConnection) ' Mark the Command as a SPROC ' myCommand.CommandType = CommandType.StoredProcedure ' Add Parameters to SPROC Dim parameterSUBCATEGORYID As OleDbParameter = New OleDbParameter("iSUBCATEGORYID", OleDbType.Numeric, ParameterDirection.Input) parameterSUBCATEGORYID.Value = SUBCATEGORYID myCommand.Parameters.Add(parameterSUBCATEGORYID) Dim parameterUSERID As OleDbParameter = New OleDbParameter("iUSERID", OleDbType.Numeric, ParameterDirection.Input) parameterUSERID.Value = USERID myCommand.Parameters.Add(parameterUSERID) Dim parameterProductModel As OleDbParameter = New OleDbParameter("iProductModel", OleDbType.LongVarChar, ParameterDirection.Input) parameterProductModel.Value = PRODUCTMODEL myCommand.Parameters.Add(parameterProductModel) Dim parameterProduction As OleDbParameter = New OleDbParameter("iProduction", OleDbType.LongVarChar, ParameterDirection.Input) parameterProduction.Value = PRODUCTION myCommand.Parameters.Add(parameterProduction) Dim parameterCountry As OleDbParameter = New OleDbParameter("iCountry", OleDbType.LongVarChar, ParameterDirection.Input) parameterCountry.Value = COUNTRY myCommand.Parameters.Add(parameterCountry) Dim parameterPrice As OleDbParameter = New OleDbParameter("iPrice", OleDbType.Double, ParameterDirection.Input) parameterPrice.Value = PRICE myCommand.Parameters.Add(parameterPrice) Dim parameterProductIMAGEURL As OleDbParameter = New OleDbParameter("iIMAGEURL", OleDbType.LongVarChar, ParameterDirection.Input) parameterProductIMAGEURL.Value = IMAGEURL myCommand.Parameters.Add(parameterProductIMAGEURL) Dim parameterProductDescription As OleDbParameter = New OleDbParameter("Description", OleDbType.LongVarChar, ParameterDirection.Input) parameterProductDescription.Value = DESCRIPTION myCommand.Parameters.Add(parameterProductDescription) Dim parameterQuality As OleDbParameter = New OleDbParameter("iQuality", OleDbType.Numeric, ParameterDirection.Input) parameterQuality.Value = QUALITY myCommand.Parameters.Add(parameterQuality) Dim parameterAmount As OleDbParameter = New OleDbParameter("iAmount", OleDbType.Numeric, ParameterDirection.Input) parameterAmount.Value = AMOUNT myCommand.Parameters.Add(parameterAmount) Dim parameterTotalview As OleDbParameter = New OleDbParameter("iTotalview", OleDbType.Numeric, ParameterDirection.Input) parameterTotalview.Value = TOTALVIEW Dim parameterDate As OleDbParameter = New OleDbParameter("iDate", OleDbType.Date, ParameterDirection.Input) parameterDate.Value = DATECREATED myCommand.Parameters.Add(parameterDate) myCommand.Parameters.Add(parameterTotalview) Dim parameterIsforsale As OleDbParameter = New OleDbParameter("iIsforsale", OleDbType.LongVarChar, ParameterDirection.Input) parameterIsforsale.Value = ISFORSALE myCommand.Parameters.Add(parameterIsforsale) ' Execute the command myConnection.Open() myCommand.ExecuteNonQuery() myConnection.Close() End Sub Public Sub AddNewCategory(ByVal CategoryName As String) Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=Test02;PLSQLRSet=1;Extended Properties=''") Dim myCommand As OleDbCommand = New OleDbCommand("{call packcategory.AddCat(?)}", myConnection) Dim parameterCategoryName As OleDbParameter = New OleDbParameter("CategoryName", OleDbType.LongVarChar, ParameterDirection.Input) parameterCategoryName.Value = CategoryName myCommand.Parameters.Add(parameterCategoryName) myConnection.Open() myCommand.ExecuteNonQuery() myConnection.Close() End Sub Public Sub Updateview(ByVal Productid As Integer) Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=Test02;PLSQLRSet=1;Extended Properties=''") Dim myCommand As OleDbCommand = New OleDbCommand("{call PackProduct.UpdateView(?)}", myConnection) Dim parameterView As OleDbParameter = New OleDbParameter("CategoryName", OleDbType.LongVarChar, ParameterDirection.Input) parameterView.Value = Productid myCommand.Parameters.Add(parameterView) myConnection.Open() myCommand.ExecuteNonQuery() myConnection.Close() End Sub End Class End Namespace Các phương thức có trong đối tượng này là lấy các thông tin về category, subcategory, lấy thông tin về mặt hàng theo category và subcategory, thông tin chi tiết về mặt hàng, thêm vào thuộc tính của mặt hàng số lượt người xem. Đối tương Customers Imports System Imports System.Web Imports System.Data Imports System.Data.OleDb Namespace Cybermarket Public Class Customers Public Sub AddUser(ByVal Username As String, ByVal Tel As String, ByVal address As String, ByVal emailadd As String, ByVal password As String) Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=test02;PLSQLRSet=1;Extended Properties=''") Dim myCommand As OleDbCommand = New OleDbCommand("{call PackUser.AddUser(?,?,?,?,?)}", myConnection) Dim parameterUserName As OleDbParameter = New OleDbParameter("UserName", OleDbType.LongVarChar, ParameterDirection.Input) parameterUserName.Value = Username myCommand.Parameters.Add(parameterUserName) Dim parameterUserTel As OleDbParameter = New OleDbParameter("Tel", OleDbType.LongVarChar, ParameterDirection.Input) parameterUserTel.Value = Tel myCommand.Parameters.Add(parameterUserTel) Dim parameterUseraddress As OleDbParameter = New OleDbParameter("Address", OleDbType.LongVarChar, ParameterDirection.Input) parameterUseraddress.Value = address myCommand.Parameters.Add(parameterUseraddress) Dim parameterEmailaddress As OleDbParameter = New OleDbParameter("Email", OleDbType.LongVarChar, ParameterDirection.Input) parameterEmailaddress.Value = emailadd myCommand.Parameters.Add(parameterEmailaddress) Dim parameterpassword As OleDbParameter = New OleDbParameter("Password", OleDbType.LongVarChar, ParameterDirection.Input) parameterpassword.Value = password myCommand.Parameters.Add(parameterpassword) myConnection.Open() myCommand.ExecuteNonQuery() myConnection.Close() End Sub Public Function CheckLogin(ByVal emailadd As String, ByVal password As String) As OleDbDataReader Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=test02;PLSQLRSet=1;Extended Properties=''") Dim myCommand As OleDbCommand = New OleDbCommand("{call PackUser.CheckLogin(?,?)}", myConnection) Dim parameterEmailaddress As OleDbParameter = New OleDbParameter("iEmailadd", OleDbType.LongVarChar, ParameterDirection.Input) parameterEmailaddress.Value = emailadd myCommand.Parameters.Add(parameterEmailaddress) Dim parameterpassword As OleDbParameter = New OleDbParameter("iPassword", OleDbType.LongVarChar, ParameterDirection.Input) parameterpassword.Value = password myCommand.Parameters.Add(parameterpassword) myConnection.Open() Dim result As OleDbDataReader result = myCommand.ExecuteReader() Return result myConnection.Close() End Function Public Function checkEmail(ByVal emailadd As String) As Boolean Dim myConnection As OleDbConnection = New OleDbConnection("Provider=MSDAORA.1;Password=tiger;User ID=scott;Data Source=test02") Dim myCommand As OleDbCommand = New OleDbCommand("{call PACKUSER.CHECKEMAIL(?)}", myConnection) Dim parameterEmailaddress As OleDbParameter = New OleDbParameter("IEmailadd", OleDbType.VarChar, 50, ParameterDirection.Input) parameterEmailaddress.Value = emailadd myCommand.Parameters.Add(parameterEmailaddress) myConnection.Open() Dim result As OleDbDataReader result = myCommand.ExecuteReader() If result.Read Then Return True Else Return False End If myConnection.Close() End Function Public Function GetUserdetails(ByVal UserID As Integer) As OleDbDataReader ' Create Instance of Connection and Command Object Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=Test02;PLSQLRSet=1;Extended Properties=''") Dim myCommand As OleDbCommand = New OleDbCommand("{call packuser.GetUserDetails(?)}", myConnection) ' Mark the Command as a SPROC ' myCommand.CommandType = CommandType.StoredProcedure ' Add Parameters to SPROC Dim parameterUser As OleDbParameter = New OleDbParameter("iuserid", OleDbType.Numeric, 10) parameterUser.Value = UserID myCommand.Parameters.Add(parameterUser) ' Execute the command myConnection.Open() Dim result As OleDbDataReader result = myCommand.ExecuteReader() ' Return the datareader result Return result myConnection.Close() End Function End Class End Namespace Đối tượng này cung cấp các phương thức để kiểm tra quá trình đăng nhập của người dùng, kiểm ta tính hợp lệ của địa chỉ Email khi đăng ký mới, thêm một khách hàng vào cơ sở dữ liệu và lấy thông tin chi tiết về khách hàng đó. Đối tượng Email Imports System.Web.Mail Imports System Imports System.Data Imports System.Data.OleDb Namespace Cybermarket Public Class Email Public Function Getmailtemplate(ByVal mailtype As Integer) As OleDbDataReader ' Create Instance of Connection and Command Object Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=Test02;PLSQLRSet=1;Extended Properties=''") Dim myCommand As OleDbCommand = New OleDbCommand("{call packmails.Getmailtype(?)}", myConnection) ' Mark the Command as a SPROC ' myCommand.CommandType = CommandType.StoredProcedure ' Add Parameters to SPROC Dim parametermailtype As OleDbParameter = New OleDbParameter("imailtype", OleDbType.Numeric, 10) parametermailtype.Value = mailtype myCommand.Parameters.Add(parametermailtype) ' Execute the command myConnection.Open() Dim result As OleDbDataReader result = myCommand.ExecuteReader() ' Return the datareader result Return result myConnection.Close() End Function Public Function sent(ByVal from As String, ByVal sender As String, ByVal mailto As String, ByVal RCPT As String, ByVal subject As String, ByVal Body As String) As Boolean Dim msg As New MailMessage() msg.From = from msg.Subject = subject 'Formatmail(result("subject"), mailto, productmodel) msg.Body = Body 'Formatmail(result("body"), mailto, productmodel) msg.To = RCPT SmtpMail.SmtpServer = "localhost" Try SmtpMail.Send(msg) Catch Return False End Try Return True End Function Public Function Formatmail(ByVal msgtoformat As String, ByVal Username As String, ByVal Productmodel As String) As String msgtoformat = msgtoformat.Replace("", Username) msgtoformat = msgtoformat.Replace("", Productmodel) Return msgtoformat.ToString End Function Public Sub Addmail(ByVal productid As String, ByVal sender As String, ByVal RCPT As String, ByVal subject As String, ByVal body As String) Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=test02;PLSQLRSet=1;Extended Properties=''") Dim myCommand As OleDbCommand = New OleDbCommand("{call Packmails.Addmail(?,?,?,?,?)}", myConnection) Dim parameterproduct As OleDbParameter = New OleDbParameter("iproduct", OleDbType.Numeric, ParameterDirection.Input) parameterproduct.Value = productid myCommand.Parameters.Add(parameterproduct) Dim parametersender As OleDbParameter = New OleDbParameter("isender", OleDbType.LongVarChar, ParameterDirection.Input) parametersender.Value = sender myCommand.Parameters.Add(parametersender) Dim parameterRCPT As OleDbParameter = New OleDbParameter("iRCPT", OleDbType.LongVarChar, ParameterDirection.Input) parameterRCPT.Value = sender myCommand.Parameters.Add(parameterRCPT) Dim parametersubject As OleDbParameter = New OleDbParameter("isubject", OleDbType.LongVarChar, ParameterDirection.Input) parametersubject.Value = subject myCommand.Parameters.Add(parametersubject) Dim parameterbody As OleDbParameter = New OleDbParameter("ibody", OleDbType.LongVarChar, ParameterDirection.Input) parameterbody.Value = body myCommand.Parameters.Add(parameterbody) myConnection.Open() myCommand.ExecuteNonQuery() myConnection.Close() End Sub Public Function Getmailbyproduct(ByVal productid As Integer) As OleDbDataReader ' Create Instance of Connection and Command Object Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=Test02;PLSQLRSet=1;Extended Properties=''") Dim myCommand As OleDbCommand = New OleDbCommand("{call packmail.getmailbyproduct(?)}", myConnection) ' Mark the Command as a SPROC ' myCommand.CommandType = CommandType.StoredProcedure ' Add Parameters to SPROC Dim parameterProduct As OleDbParameter = New OleDbParameter("iuserid", OleDbType.Numeric, 10) parameterProduct.Value = productid myCommand.Parameters.Add(parameterProduct) ' Execute the command myConnection.Open() Dim result As OleDbDataReader result = myCommand.ExecuteReader() ' Return the datareader result Return result myConnection.Close() End Function Public Function Getmailbycustomer(ByVal Userid As Integer) As OleDbDataReader ' Create Instance of Connection and Command Object Dim myConnection As OleDbConnection = New OleDbConnection("Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=scott;Password=tiger;Data Source=Test02;PLSQLRSet=1;Extended Properties=''") Dim myCommand As OleDbCommand = New OleDbCommand("{call Packmail.Getmailbyuser(?)}", myConnection) ' Mark the Command as a SPROC ' myCommand.CommandType = CommandType.StoredProcedure ' Add Parameters to SPROC Dim parameterUser As OleDbParameter = New OleDbParameter("iuserid", OleDbType.Numeric, 10) parameterUser.Value = Userid myCommand.Parameters.Add(parameterUser) ' Execute the command myConnection.Open() Dim result As OleDbDataReader result = myCommand.ExecuteReader() ' Return the datareader result Return result myConnection.Close() End Function End Class End Namespace Cung cấp các phương thức dùng để thêm mới một email khi có một khách hàng sử dụng chức năng gửi thư trong Web site, lấy các email theo sản phẩm hay theo id của khách hàng đó. Trong đối tượng này còn có phương thức để định dạng lại bức thư theo từng chủ để có trong bảng Emailtemplate của CSDL và phương thức để gửi đi một bức thư. Các đối tượng khác Đối tượng cmenu Trong ứng dụng có sử dụng một menu để tạo giao diện khi lựa chọn các category việc xây dựng menu này để có thể đọc dữ liệu từ nguồn dữ liệu XML tương đối phức tạp và dài dòng nên không được trình bày ở đây. cmenu là đối tượng đã được biên dịch và đặt trong thư mục /BIN của ứng dụng. Đối tượng menuDb Imports System Imports System.Text Imports System.Configuration Imports System.Data Imports System.Data.OleDb Imports Cyber_market.Cybermarket Namespace Cybermarket Public Class MenuDb Public Function CreatMenu() As StringBuilder Dim ProductCategory As ProductsDB = New Cybermarket.ProductsDB() Dim Categories As OleDbDataReader Categories = ProductCategory.GetProductCategories() Dim strXml As StringBuilder = New StringBuilder() strXml.Append(" ") strXml.Append("") strXml.Append("") 'Dim i As string=0 Dim PRoductCatelo As Cybermarket.ProductsDB = New Cybermarket.ProductsDB() Dim ProductList As OleDbDataReader 'Dim categoryId As Integer While Categories.Read() strXml.Append("") strXml.Append("") ProductList = PRoductCatelo.GetsubCategoryProducts(Categories("CategoryID")) While ProductList.Read() strXml.Append("") End While strXml.Append("") strXml.Append("") End While strXml.Append("") strXml.Append("") Return strXml End Function End Class End Namespace Phương thức createmenu trong đối tượng này chỉ để tạo một chuỗi dữ liệu XML để định dạng menu cho đối tượng cmenu. Đối tượng uploadpro là đối tương thêm vào để thực hiện việc upload file ảnh lên server. 3.3.2 Cài đặt trang ASP.NET Một số trang chính trong ứng dụng Trang default Gồm có phần tiêu đề của trang là một web user control “_header.ascx” được dưa vào trang bằng chỉ thị , phần menu hiển thị danh mục mặt hàng cũng là một User control. Phần định dạng này xuyên suốt trong toàn bộ Web site Default <td style="HEIGHT: 324px" vAlign=top width=120 colSpan=1 height=324 > <td vAlign=top align=middle width=335 height=336 rowSpan=2 style="HEIGHT: 336px"> <DIV style="DISPLAY: inline; WIDTH: 325px; HEIGHT: 55px" ms_positioning="FlowLayout">This is hottest Products in Week   <td vAlign=top align=middle width=120 colSpan=1 height=12 style="HEIGHT: 12px"> Type something <img height=19 src="file:///C:/CTK_CU~1.GIF" width=10 border=0 ><img style="HEIGHT: 19px" height=19 width=470 border=0 > Mã ẩn trong trang default thực hiện việc request cookies để kiểm tra xem người dùng đó có save lại thông tin của họ trên trình khách không. Trang login Imports System Imports System.Data Imports System.Data.OleDb Imports System.Web.Security Public Class Login Inherits System.Web.UI.Page Protected WithEvents CheckBox1 As System.Web.UI.WebControls.CheckBox Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox Protected WithEvents TextBox2 As System.Web.UI.WebControls.TextBox Protected WithEvents Button1 As System.Web.UI.WebControls.Button Protected WithEvents Label2 As System.Web.UI.WebControls.Label Protected WithEvents TextBox3 As System.Web.UI.WebControls.TextBox #Region " Web Form Designer Generated Code " 'This call is required by the Web Form Designer. Private Sub InitializeComponent() End Sub Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init 'CODEGEN: This method call is required by the Web Form Designer 'Do not modify it using the code editor. InitializeComponent() End Sub #End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Put user code to initialize the page here End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Customer As Cybermarket.Customers = New Cybermarket.Customers() Dim drcustomer As OleDbDataReader drcustomer = Customer.CheckLogin(TextBox1.Text, TextBox2.Text) If Not drcustomer.Read Then Label2.Text = "Invalid Password" Else Label2.Text = "Login successful!" ' Store the user's fullname in a cookie for personalization purposes Response.Cookies("Cybermarket_customerid").Value = drcustomer("UserId").ToString() Response.Cookies("Cybermarket_fullname").Value = drcustomer("UserName").ToString() ' Make the cookie persistent only if the user selects "persistent" login checkbox If CheckBox1.Checked = True Then Response.Cookies("Cybermarket_customerid").Expires = DateTime.Now.AddMonths(1) Response.Cookies("Cybermarket_fullname").Expires = DateTime.Now.AddMonths(1) End If End If End Sub End Class Kiểm tra và ghi lại thông tin của người dùng trong mỗi lần đăng nhập Nội dung trang Productlist.aspx Trang này được goi từ trang default.aspx qua các link trong menu. Trang này được gọi với một hoặc hai giá trị gán vào điạ chỉ URL, các giá trị này là category và subcategory. Ta sẽ lấy các thông tin này để hiển thị mặt hàng theo chủng loại. Imports System Imports System.Data Imports System.Data.OleDb Public Class ProductsList Inherits System.Web.UI.Page Protected WithEvents LinkButton1 As System.Web.UI.WebControls.LinkButton Protected WithEvents LinkButton2 As System.Web.UI.WebControls.LinkButton Protected WithEvents LinkButton3 As System.Web.UI.WebControls.LinkButton Protected WithEvents LinkButton4 As System.Web.UI.WebControls.LinkButton Protected WithEvents LinkButton5 As System.Web.UI.WebControls.LinkButton Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox Protected WithEvents Button1 As System.Web.UI.WebControls.Button Protected WithEvents Label2 As System.Web.UI.WebControls.Label Protected WithEvents MyList As System.Web.UI.WebControls.DataList Protected WithEvents Label1 As System.Web.UI.WebControls.Label Dim PageDS As PagedDataSource Dim seltab As String Dim i As Integer #Region " Web Form Designer Generated Code " 'This call is required by the Web Form Designer. Private Sub InitializeComponent() End Sub Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init 'CODEGEN: This method call is required by the Web Form Designer 'Do not modify it using the code editor. InitializeComponent() End Sub #End Region Private Sub pagestart(ByVal pageindex As Integer) ' i = CInt(Label1.Text) Dim ds As DataSet PageDS = New PagedDataSource() Dim dv As DataView If Request.Params("subCategoryId") Is Nothing Then seltab = Label2.Text Dim categoryId As Integer = CInt(Request.Params("CategoryID")) Dim productCatalogue As Cybermarket.ProductsDB = New Cybermarket.ProductsDB() If seltab = "For sale only" Then ds = productCatalogue.GetProductsbyCat(categoryId, "sale") Else If seltab = "Wanted" Then ds = productCatalogue.GetProductsbyCat(categoryId, "wanted") Else 'Get Products by Categories ds = productCatalogue.GetProductsbyCat(categoryId, "both") End If End If dv = ds.Tables("Products").DefaultView PageDS.DataSource = dv PageDS.AllowPaging = True PageDS.PageSize = 2 PageDS.CurrentPageIndex = pageindex MyList.DataSource = PageDS MyList.DataBind() Else Dim subcategoryId As Integer = CInt(Request.Params("SubCategoryID")) 'Get Products by subCategories Dim productsubCatalogue As Cybermarket.ProductsDB = New Cybermarket.ProductsDB() 'ds = productsubCatalogue.GetProductsbySubCat(subcategoryId, i, 2) 'MyList.DataSource = ds 'MyList.DataBind() End If End Sub Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Put user code to initialize the page here If Not Page.IsPostBack Then pagestart(0) End If End Sub Private Sub LinkButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton1.Click Label2.Text = "For sale only" Label1.Text = 0 pagestart(0) End Sub Private Sub LinkButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton3.Click Label2.Text = "Both" pagestart(0) End Sub Private Sub LinkButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton2.Click Label2.Text = "Wanted" pagestart(0) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Response.Redirect("search.aspx?query=" & TextBox1.Text) End Sub Private Sub LinkButton4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton4.Click Label1.Text = CInt(Label1.Text) + 1 pagestart(CInt(Label1.Text)) End Sub Private Sub LinkButton5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton5.Click Label1.Text = CInt(Label1.Text) - 1 pagestart(CInt(Label1.Text)) End Sub Private Sub MyList_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) End Sub Private Sub DataGrid1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) End Sub End Class Trang ProductList Trang này được yêu cầu khi người dùng chọn ảnh của mặt hàng trong ProductList thông tin về mặt hàng được lấy từ URL khi gọi trang với id của mặt hàng Imports System Imports System.Data Imports System.Data.OleDb Public Class Productdetails Inherits System.Web.UI.Page Protected WithEvents Image1 As System.Web.UI.WebControls.Image Protected WithEvents Label1 As System.Web.UI.WebControls.Label Protected WithEvents Label2 As System.Web.UI.WebControls.Label Protected WithEvents Label3 As System.Web.UI.WebControls.Label Protected WithEvents Label4 As System.Web.UI.WebControls.Label Protected WithEvents Label5 As System.Web.UI.WebControls.Label Protected WithEvents Label6 As System.Web.UI.WebControls.Label Protected WithEvents Label7 As System.Web.UI.WebControls.Label Protected WithEvents Label8 As System.Web.UI.WebControls.Label Protected WithEvents HyperLink1 As System.Web.UI.WebControls.HyperLink Protected WithEvents Label10 As System.Web.UI.WebControls.Label Protected WithEvents Label9 As System.Web.UI.WebControls.Label #Region " Web Form Designer Generated Code " 'This call is required by the Web Form Designer. Private Sub InitializeComponent() End Sub Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init 'CODEGEN: This method call is required by the Web Form Designer 'Do not modify it using the code editor. InitializeComponent() End Sub #End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Put user code to initialize the page here Dim ProductId As Integer = CInt(Request.Params("ProductID")) Dim productdetail As Cybermarket.ProductsDB = New Cybermarket.ProductsDB() Dim dr As OleDbDataReader dr = productdetail.GetProductdetails(ProductId) dr.Read() Label1.Text += dr("ProductModel").ToString() Label2.Text += dr("Production").ToString() Label3.Text += dr("Country").ToString() Label4.Text += dr("Price").ToString() Label5.Text += dr("quality").ToString Label6.Text += dr("amount").ToString() Label7.Text += dr("totalview").ToString() Label8.Text += dr("datecreated").ToString() Label9.Text += dr("description").ToString() Dim userdetails As Cybermarket.Customers = New Cybermarket.Customers() Dim druser As OleDbDataReader druser = userdetails.GetUserdetails(CInt(dr("userid").ToString)) druser.Read() HyperLink1.Text = druser("Email").ToString Label10.Text = druser("UserName").ToString & vbCrLf & _ druser("Tel").ToString & vbCrLf & _ druser("Address").ToString Image1.ImageUrl = "Images\ProductImages\" & dr("ImageUrl").ToString dr.Close() productdetail.Updateview(ProductId) End Sub End Class Trang sendmail Imports System.Data Imports System.Data.OleDb Public Class sendmail Inherits System.Web.UI.Page Protected WithEvents TextBox2 As System.Web.UI.WebControls.TextBox Protected WithEvents TextBox3 As System.Web.UI.WebControls.TextBox Protected WithEvents TextBox4 As System.Web.UI.WebControls.TextBox Protected WithEvents TextBox5 As System.Web.UI.WebControls.TextBox Protected WithEvents Button2 As System.Web.UI.WebControls.Button Protected WithEvents Label1 As System.Web.UI.WebControls.Label Protected WithEvents Label2 As System.Web.UI.WebControls.Label Protected WithEvents search As System.Web.UI.HtmlControls.HtmlForm #Region " Web Form Designer Generated Code " 'This call is required by the Web Form Designer. Private Sub InitializeComponent() End Sub Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init 'CODEGEN: This method call is required by the Web Form Designer 'Do not modify it using the code editor. InitializeComponent() End Sub #End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Put user code to initialize the page here If Not Page.IsPostBack Then If Request.Params("productid") "" Then Dim ProductId As Integer = CInt(Request.Params("ProductID")) Dim UserId As Integer = CInt(Request.Params("UserID")) 'Ok! now get some information about product and user Dim Getinfouser As New Cybermarket.Customers() Dim dr As OleDbDataReader dr = Getinfouser.GetUserdetails(UserId) dr.Read() TextBox3.Text = dr("Email").ToString Dim drp As OleDbDataReader Dim Getinfopro As New Cybermarket.ProductsDB() drp = Getinfopro.GetProductdetails(ProductId) drp.Read() Label2.Text += " You can contact to " & dr("UserName") & vbCrLf & _ "at" & dr("Tel") & vbCrLf & dr("address") Dim drm As OleDbDataReader Dim Gettmp As New Cybermarket.Email() drm = Gettmp.Getmailtemplate(1) drm.Read() TextBox4.Text = Gettmp.Formatmail(drm("Subject").ToString, dr("UserName").ToString, drp("ProductModel").ToString) TextBox5.Text = Gettmp.Formatmail(drm("Body").ToString, dr("UserName").ToString, drp("ProductModel").ToString) dr.Close() drp.Close() drm.Close() End If End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim sendmail As New Cybermarket.Email() Dim result As Boolean result = sendmail.sent(TextBox2.Text, "Hatung", TextBox3.Text, TextBox3.Text, TextBox4.Text, TextBox5.Text) If result Then Label1.Text = "Successful" Else Label1.Text = "Fail" End If End Sub End Class Trên đây chúng ta đã xem qua một cách ngắn gọn nội dung của và cùng một phần của mã nguồn ở phía người dùng, còn đơn thể để quản trị mạng chưa được thiết kế do thời gian hạn hẹp. Phần đơn thể quản trị này sẽ có nội dung như sau: Liệt kê toàn bộ mặt hàng có trong bảng POST cho người quản trị,sửa đổi hay xóa khi thông tin không hợp lệ, hay chèn thêm vào bảng PRODUCTS để thông tin được đưa đến mọi người. Liệt kê các category để sửa đổi hay mở rộng chủng loại mặt hàng. Danh mục tài liệu tham khảo [1] Introduction to Microsoft ASP.NET. (Course Number: 2063C). [2] ASP 3.0 ASP.NET – Nhà xuất bản giáo dục. [3] Microsoft .NET Framework SDK Documentation. [4] Giáo trình lý thuyết và thực hành Oracle 8i. [5] PL/SQL Fundamental. Kết luận Với sự phát triển nhanh chóng của Internet và thương mại điện tử như hiện nay. Việc lựa ASP.NET được coi như là giải pháp hữu hiệu nhất. Với ASP.NET thiết kế Web giờ đây trở nên dễ dàng hơn bao giờ hết do được hỗ trợ nhiều thành phần phong phú, có khả năng vượt qua mọi trình duyệt, thiết bị mà ta không cần quan tâm đến việc định dạng các trang tài liệu cho mỗi trình duyệt, mỗi thiết bị, ASP.NET kết thúc những tranh luận về ngôn ngữ lập trình khi hỗ trợ trên 25 ngôn ngữ khác nhau. Khi kết hợp với ADO+ với ASP.NET ta dễ dàng triển khai được các ứng dụng với mô hình N-tier, tạo ra được nguồn dữ liệu không kết nối từ nhiều nguồn dữ liệu khác nhau Hơn nữa, ASP.NET mở ra nhiều cơ hội cho các nhà phát triển với các ứng dụng phân tán cung cấp dữ liệu cho khách hàng thông qua Internet cho phép họ tạo ra một dòng phần mềm mới với dữ liệu XML. Em đã cố gắng khi xây dựng một ứng dụng với ASP.NET sử dụng cơ sở dữ liệu Oracle, kết hợp hai công cụ sức mạnh nhất trên Internet. Nhưng do thời gian tìm hiểu về hai công cụ này quá ít nên chưa phát huy được nhiều lợi ích do chúng đem lại. Cuối cùng, em xin cảm ơn TS. Cao Kim ánh là người trực tiếp hướng dẫn em hoàn thành đồ án này, anh Tuấn giám đốc Trung tâm và các anh, chị ở phòng nghiên cứu và phát triển Trung tâm CNTT – Ngân hàng công thương Việt Nam (ITC-ICB) đã khuyến khích và tạo điều kiện thuận lợi cho em hoàn thành đồ án đúng thời hạn.

Các file đính kèm theo tài liệu này:

  • docP0029.doc