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.
108 trang |
Chia sẻ: oanh_nt | Lượt xem: 1275 | Lượt tải: 0
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:
- P0029.doc