摘 要
该系统以Microsoft Visual Studio 2003作为开发工具,选用SQL Server 2000数据库来实现数据存储,并设计开发了一种基于B/S模式的数据存储与交换系统。该系统完成了用户注册管理、后台管理和用户空间管理功能;为每个用户提供了个人的存储空间;用户可以通过浏览器实现文件的上传、下载和资源的共享;根据用户空间等级限制用户存储空间的大小;为用户共享文件提供积分制;通过积分制来对用户空间升级实行优惠。最后通过测试,基本满足了用户的需求,但还需要进一步完善,才可以应用于实际中。
关键词 **:**网络存储;上传下载;资源共享
2****系统需求分析
该系统功能要求如下:
(1) 用户管理:用户注册、注册审核、用户存储空间限定管理、用户积分、用户等级
(2) 存储管理:为用户提供基于B/S模式的上传和下载数据,数据为现有的个人用户文件,为用户提供存储文件的添加、修改、删除操作。
(3) 收费管理:按照空间大小收费、根据用户的积分、等级实施优惠收费,为用户提供共享的文件提供积分累计。
(4) 数据共享管理:数据共享文件管理。
5****系统模块 代码实现
根据系统功能设计,将整个系统划分为以下几个功能模块。
5.1****用户登录模块
用户登录界面(Default.aspx)是起始界面,必须登录后才可以进行其他的操作。首先通过输入用户名和密码,然后在用户信息表Users中查询输入的用户名和密码两个字段是否有相匹配的数组,如果没有则提示"用户不存在或密码错误!",返回登录界面;如果登录成功则将用户名赋给Session,然后自动跳转到用户主界面。其中登录Button的触发主要代码如下:
conn.ConnectionString = "Data Source=86BC14A814F7477;Initial Catalog=NWMS;User ID=sa;Password=123"
conn.Open()
cmd.Connection = conn '连接数据库
cmd.CommandText = "Select * From Users"
objReader = cmd.ExecuteReader()
Do While objReader.Read()
If UserId.Text = objReader.Item("UserId") And UserPwd.Text = objReader.Item("UserPwd") Then
'在数据库Users表中搜寻与输入的用户名和密码相匹配的数组
Session("UserId") = UserId.Text'将用户名赋给Session
Response.Redirect("User0.aspx") '登录成功跳转页面
Exit Do
End If
Loop
Response.Write("<script>alert('用户不存在或密码错误!')</script>")
objReader.Close()
conn.Close()'断开数据库连接
5.2****用户注册模块
用户注册页面(Reg.aspx),文本框后带**的为必填,其他选填,用户注册时必须输入用户名、密码、密码确认、密码提示问题、密码提示答案和电子邮箱,否则不能注册。当这些都满足后点击注册,触发事件代码开始搜索用户信息表(Users),检验是否存在相同用户名,如存在,那么提示"该用户已经注册!",退回注册页面,主要代码如下:
cmd.CommandText = "Select UserId From Users"
objReader = cmd.ExecuteReader()
Do While objReader.Read()
If UserIdBox.Text = objReader.Item("UserId") Then
Response.Write("<script>alert('该用户已经注册!')</script>") '验证用户名
i = 1
Exit Do
End If
Loop
objReader.Close()
如果未发现相同用户名,则用SQL语句INSERT将新用户信息写入用户信息表Users,同时运用MkDir( )在服务器系统目录的myfile文件夹内新建一个文件夹,用户名即为文件夹名。同时将用户等级类型设定为"1",即普通用户,享有空间大小为50MB;将用户锁定类型设为空,即默认未锁;将用户积分等级设为0,刚注册用户对未共享过任何文件,未为资源共享做贡献,所以不具有收费优惠。主要代码如下:
cmd.CommandText = "INSERT INTO Users(UserId,UserPwd,PwdQuestion,PwdAnwser,Email,Ser,QQ,UserName,Telephone,vUserRank,vRegDate,vUserLock,vContrbRank,UserIn,vUserSore) VALUES('" & UserIdBox.Text & "','" & UserPwdBox.Text & "','" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "','" & ser & "','" & TextBox4.Text & "','" & TextBox5.Text & "','" & TextBox6.Text & "' ,'" & 1 & "','" & Today & "' ,'" & "" & "','" & "" & "','" & "" & "','" & "" & "')"
If cmd.ExecuteNonQuery > 0 Then
Dim filepath As String = Path.Combine(Server.MapPath(".") & "\myfile", UserIdBox.Text)
MkDir(filepath) '新建个人文件夹,文件名为用户名
Response.Write("<script language=javascript>alert('注册成功!');window.location='Default.aspx';</script>")
End If
5.3****用户主界面模块
用户主界面(User0.aspx)采用分页技术显示,主要有上和左、右3部分。左边固定显示LeftTree.aspx页面,主要给用户提供操作链接,通过点击左边的链接(包括有:文件管理、文件上传、我的共享、公共共享、空间升级、空间信息、个人资料和退出系统),将相应的操作页面在右边显示出来,右边的初始页面为用户个人空间信息页面(Spatial_inon.aspx),具体界面如图2。
图2 用户主界面操作图
5.4****文件存储管理模块
在主界面左边的链接中点击"文件管理"连接到文件管理页面(File_mgt.aspx),该页面利用DataGrid的强大显示功能为用户显示了当前用户所上传的所有文件,并可以对任何一个文件通过"编辑"超链接到编辑页面(File_edit.aspx)进行共享和文件名的修改;还可以通过点击文件名下载当前文件,还可以通过点击删除,删除相应行文件信息和文件(删除文件运用的是Kill( ))。主要代码如下:
(1) 初始化页面和声明绑定数据过程Bind()主要代码如下:
If Not (Me.IsPostBack) Then
Me.Bind()
End If
Sub Bind()
Dim userid As String = Session("UserId")
Sql = "Select * From UserFiles WHERE UserId='" & userid & "'"
cnSqlServer = "Data Source=86BC14A814F7477;Initial Catalog=NWMS;User ID=sa;Password=123"
Dim objAdapter As New SqlDataAdapter(Sql, cnSqlServer)
objAdapter.Fill(ds, "UserFiles")
DataGrid.DataSource = ds
DataGrid.DataBind()
conn.Close()
conn.Dispose()
End Sub
(2) 点击文件名触发下载文件事件的主要代码如下:
Dim fileW As String = e.Item.Cells(0).Text
Dim filepath As String = Server.MapPath(fileW)
Dim filename As String = System.IO.Path.GetFileName(filepath)
Response.Clear()
Response.ContentType = "application/octet-stream"
Response.AppendHeader("Content-Disposition", "attachment;filename=" + filename)
Response.Flush()
Response.WriteFile(filepath)
(3) 点击删除时,删除当前行文件和文件信息,主要代码如下:
Dim Sql As String = "Delete UserFiles WHERE vWay=@vWay"
Dim cmd As New SqlCommand(Sql, conn)
cmd.Parameters.Add(New SqlParameter("@vWay", SqlDbType.VarChar, 50))
cmd.Parameters("@vWay").Value = e.Item.Cells(0).Text
conn.Open()
cmd.ExecuteNonQuery()
Dim pathname As String = Path.Combine(Server.MapPath("."), e.Item.Cells(0).Text)
Kill(pathname)
conn.Close()
cmd.Dispose()
conn.Dispose()
Me.Bind()
(4) 点击datagrid控件中的超链接列"编辑",连接到相应文件编辑页面(File_edit.aspx=?file={0}),通过file将相应行的文件路径值传给文件编辑页面,文件编辑主要代码如下:
- 初始化页的代码如下:
Way = Request.QueryString("file") '获取传值
If Not (Me.IsPostBack) Then
FileName.Text = Path.GetFileNameWithoutExtension(Way) '从路径中获取不含扩展名的用户名
End If
- 修改Button触发的事件主要代码如下:
Dim FileNameW As String = FileName.Text '获取TextBox的控件中的用户名
Dim FileNameE As String = Path.GetExtension(Way)'从路径中提取文件扩展名
Dim FileNameA As String = FileNameW & FileNameE '合并两字符串
Dim FilenewWay As String = Path.Combine(Path.GetDirectoryName(Way), FileNameA) '合并两路径字符串,合并成新路径
Dim pathnameO As String = Path.Combine(Server.MapPath("."), Way)
Dim pathnameN As String = Path.Combine(Server.MapPath("."), FilenewWay)
'更新数据库数据表中的文件信息
cmd.CommandText = "UPDATE UserFiles SET vWay='" & FilenewWay & "', vUpDate='" & Now & "',vFileName='" & FileNameA & "',vSharType='" & type & "' WHERE vWay='" & Way & "'"
n = cmd.ExecuteNonQuery()
Rename(pathnameO, pathnameN)'修改相对应的文件的文件名
5.5****文件上传模块
在主界面左边的链接中或文件管理页面的右上角点击"文件上传"就链接到文件上传页面(upload.aspx),该页面用File Field控件完成文件上传,通过上传代码"FileUpload.PostedFile.SaveAs( )"将文件上传保存到用户个人文件夹下面,并将文件信息写如数据库UserFiles表。上传之前判定控件内是否存在上传文件地址,如果没有则提示"未发现文件。",如果有则继续下步,搜索用户已经上传文件的总大小,加上当前将要上传的文件大小之和,判断其是否超过用户等级限定的空间大小,如果超过,则弹出对话框"你的空间不足!";如果未超过,表示还可以上传,再检测上传空间内是否存在相同文件名(包括扩展名),如果有则将文件覆盖,修改文件保存相关信息提示"XX文件被覆盖",如果没有则提示"XX文件成功上传到服务器",保存文件相关信息和文件。主要代码如下:
Dim userid As String = Session("UserId")
FileNname = Path.GetFileName(FileUpload.Value) '提取控件路径中的文件名
FileUname1 = Path.Combine("myfile", userid)
FileUname = Path.Combine(Server.MapPath("."), FileUname1) '获得了文件上传目录
FileNewW = Path.Combine(FileUname1, FileNname)
Filepath = Path.Combine(FileUname, FileNname)
FileNewl = FileUpload.PostedFile.ContentLength
FileNewlB = ConvertBytes(FileNewl)
(1) 统计已用空间大小主要代码如下:
cmd.CommandText = "Select UserId From UserFiles"
objReader = cmd.ExecuteReader()
Do While objReader.Read()
If userid = objReader.Item("UserId") Then
objReader.Close()
cmd.CommandText = "Select SUM(vFileSb) From UserFiles WHERE UserId='" & userid & "'"
objReader = cmd.ExecuteReader()
objReader.Read()
FileOldl = objReader.Item(0) '统计用户空间文件大小
Exit Do
End If
Loop
(2) 获得用户空间大小主要代码如下:
cmd.CommandText = "SELECT vUserRank From Users WHERE UserId= '" & userid & "'"
objReader = cmd.ExecuteReader
objReader.Read()
UserRank = objReader.Item(0) '获得用户等级
objReader.Close()
cmd.CommandText = "SELECT vSpaceSb From UsersRank WHERE vIserRank='" & UserRank & "'"
objReader = cmd.ExecuteReader
objReader.Read()
SpaceSb = objReader.Item(0) '获得用户相应等级空间
objReader.Close()
If FileSuml < SpaceSb Then
cmd.CommandText = "SELECT vWay FROM UserFiles"
objReader = cmd.ExecuteReader()
Do While objReader.Read()
If FileNewW = objReader.Item("vWay") Then
I = 1 '搜寻用户空间中是否存在相同文件名
Exit Do
End If
Loop
(3) 如空间内没有相同文件,则主要代码如下:
cmd.CommandText = "INSERT INTO UserFiles(UserId,vFileSize,vFileSb,vFileName,vWay,vSharType,vUpDate,vDownCount,vFileLock,vFileUp) VALUES('" & userid & "','" & FileNewlB & "','" & FileNewl & "','" & FileNname & "','" & FileNewW & "','" & "不共享" & "','" & Now & "','" & "" & "','" & "" & "','" & "" & "')"
n = cmd.ExecuteNonQuery
FileUpload.PostedFile.SaveAs(Filepath) '上传文件到指定目录
lblMessage.InnerHtml = "文件 <b>" & FileNname & "</b>成功上传到服务器,大小为" & FileNewlB
(4) 如空间有相同文件,则主要代码如下:
cmd.CommandText = "UPDATE UserFiles SET vFileSize='" & FileNewlB & "',vFileSb='" & FileNewl & "',vUpDate='" & Now & "',vDownCount='" & "" & "',vFileLock='" & "" & "',vFileUp='" & "" & "' WHERE vWay='" & FileNewW & "'"
n = cmd.ExecuteNonQuery
FileUpload.PostedFile.SaveAs(Filepath) '上传文件到指定目录
lblMessage.InnerHtml = "文件 <b>" & FileNname & "</b>被覆盖,大小为" & FileNewlB
(5) 自定义一个换算字符长度的Function代码如下:
Public Function ConvertBytes(ByVal Bytes As Long) As String
' 将过大字符长度由Byte转化为GB、MB、KB表示
If Bytes >= 1073741824 Then
Return Format(Bytes / 1024 / 1024 / 1024, "#0.00") & " GB"
ElseIf Bytes >= 1048576 Then
Return Format(Bytes / 1024 / 1024, "#0.00") & " MB"
ElseIf Bytes >= 1024 Then
Return Format(Bytes / 1024, "#0.00") & " KB"
ElseIf Bytes > 0 And Bytes < 1024 Then
Return Fix(Bytes) & " Bytes"
Else
Return "0 Bytes"
End If
End Function
5.6****我的共享查询模块
在主界面左边的链接中点击"我的共享"就链接到我的共享查询页面(Myshar.aspx),该模块也采用DateGrid控件显示个人已经共享的文件的信息,你可以从中看到你所共享的文件被下载次数,是否被管理员锁定,还可点击相应行后边的取消直接取消共享。如果锁定栏下有"√"符号,那么证明你所共享的文件被别人举报,经过管理员核查属于不合适文件,它将不会再被显示到共享区域。主要代码如下:
(1) 绑定数据库主要代码:
Sql = "Select * From UserFiles WHERE UserId='" & userid & "' AND vSharType='" & "共享" & "' ORDER BY vDownCount DESC"
cnSqlServer = "Data Source=86BC14A814F7477;Initial Catalog=NWMS;User ID=sa;Password=123"
Dim objAdapter As New SqlDataAdapter(Sql, cnSqlServer)
objAdapter.Fill(ds, "UserFiles")
DataGrid.DataSource = ds
DataGrid.DataBind()
(2) 取消Button触发事件主要代码:
Dim cmd As New SqlCommand(Sql, conn)
cmd.Parameters.Add(New SqlParameter("@vWay", SqlDbType.VarChar, 50))
cmd.Parameters("@vWay").Value = e.Item.Cells(0).Text
5.7****公共共享查询模块
在主界面左边的链接中点击"公共共享"就链接到公共共享查询页面(Publicshar.aspx),该页面也采用DateGrid控件显示所有人共享的文件的信息,用户可以从表中看到文件名、提供用户、文件大小、更新时间、下载统计,默认是按下载统计次数排列。用户可以点击文件名下载共享文件,如发现共享文件内容属于违法、黄色、反动等不合适信息时可以点击举报举报该文件,以便管理员好根据举报来查看、锁定不合理文件。当用户下载了共享区域的文件后,那么该文件的下载统计次数和提供该文件的用户的积分将自动加1。主要代码如下:
(1) 下载事件的主要代码:
Response.Clear()
Response.ContentType = "application/octet-stream"
Response.AppendHeader("Content-Disposition", "attachment;filename=" + filename)
Response.Flush()
Response.WriteFile(filepath)
(2) 点击文件下载后,文件下载统计和用户积分自动加1,主要代码:
cmd.CommandText = "Select vDownCount,UserId From UserFiles where vWay='" & fileW & "'"
objReader = cmd.ExecuteReader()
objReader.Read()
Dim downcount As Integer = objReader.Item(0)
Dim id As String = objReader.Item(1)
objReader.Close()
cmd.CommandText = "Select vUserSore From Users where UserId='" & id & "'"
objReader = cmd.ExecuteReader
objReader.Read()
Dim usersore As Integer = objReader.Item(0)
objReader.Close()
downcount += 1
usersore += 1
cmd.CommandText = "Update Users set vUserSore='" & usersore & "' where UserId='" & id & "'"
cmd.ExecuteNonQuery()
cmd.CommandText = "Update UserFiles set vDownCount='" & downcount & "' where vWay='" & fileW & "'"
cmd.ExecuteNonQuery()
(3) 点击"举报"触发事件主要代码:
Dim Sql As String = "UPDATE UserFiles SET vFileUp=vFileUp+1 WHERE vWay=@vWay"
Dim cmd As New SqlCommand(Sql, conn)
cmd.Parameters.Add(New SqlParameter("@vWay", SqlDbType.VarChar, 50))
cmd.Parameters("@vWay").Value = e.Item.Cells(0).Text
5.8****用户资料修改模块
在主界面左边的链接中点击"个人资料"就连接到用户资料修改页面(MayRegedit.aspx),该页面主要是用户进行自己除用户名和性别以外的其他信息的修改,包括密码和密码保护材料的修改。在修改密码和密码保护材料时需要旧密码和保护材料,不过就密码和保护资料不符合,那么将不能进行修改。初始化页的主要代码如下:
cmd.CommandText = "Select * From Users where UserId='" & userid & "'"
objReader = cmd.ExecuteReader
objReader.Read()
email.Value = objReader.Item(4)
Label3.Text = objReader.Item(5)
qq.Value = objReader.Item(6)
realname.Value = objReader.Item(7)
phone.Value = objReader.Item(8)
recommend.Value = objReader.Item(9)
5.9****空间升级查询模块
空间升级查询模块Upgrade.aspx,运用两个Datagrid控件将现有用户空间等级和积分等级的相关信息展示给用户,如用户等级划分,相应空间大小、费用,相应积分等级条件、优惠打折。选择想申请用户空间等级,还会查询到实际应该支付费用。其中还用到了DropDownList控件,用于用户现在用户等级。另外在此模块中用到Datagrid控件要注意的是数据绑定的时候注意定义2个不同的DataSet,主要代码如下:
Dim objAdapter As New SqlDataAdapter(Sql, cnSqlServer)
objAdapter.Fill(ds, "IntegralRank")
DataGrid.DataSource = ds
DataGrid.DataBind()
Dim objAdapter1 As New SqlDataAdapter(Sql, cnSqlServer)
objAdapter1.Fill(ds1, "UsersRank")
Datagrid1.DataSource = ds1
Datagrid1.DataBind()
具体页面显示如图3。
图3 空间升级信息查询页面
5.10****后台管理登录模块
由于该系统采用用户和管理员分开登录,管理员所有操作界面模块全包含在系统目录的Admin文件夹下。管理员要进行后台管理必须通过此模块(Admin/Default.aspx)登录到后台管理主界面,在管理员输入ID和密码后,和普通用户登录模块一样查询数据库表Admin表,验证是否存在与之相匹配的ID和密码数组,如果存在则登录成功,将管理员ID值赋给Session,页面跳转到后台管理主界面。
5.11****后台管理主界面模块
通过后台管理登录模块登录到后台管理主界面(Admin/Admin0.aspx),该界面同用户主界面模块类似,作为后台管理的枢纽,也是通过分页技术显示,通过左边的一系列超链接按钮来链接到各个管理界面,在右边分页中显示出来。具体页面如图4。
主界面图
5.12****用户管理模块
管理员通过管理员登录验证后登录到后台管理主界面模块,通过左边的链接在右边分页中显示出来,管理员通过"添加用户"可以对用户进行添加,代码实现类似用户注册模块,只不过没那么详细,在这里只添加了用户信息的用户名、密码、用户等级、锁定状态,其他详细信息需要登录该用户后在个人资料里边完善;通过"管理用户"可以查看所有用户,在通过相应行"编辑"超链接连接到各个用户编辑页面(Admin/Admin_user_edit?username={0}),在此页面管理员可以对用户进行密码、用户等级、锁定状态的修改,可以删除用户,删除用户时候还要用rmdir()删除用户空间文件夹,主要代码如下:
Dim user As String = Request.QueryString("username") '接收传值
cmd.CommandText = "Delete Users WHERE UserId='" & Label1.Text & "'
通过"添加等级"添加用户等级,通过"管理等级"查询所有用户等级,可点击删除删除相应用户等级,还可以通过修改超链接进入等级修改页面(Admin/admin_rank_edit?id={0}),用户等级设定里边包含了相应用户等级空间大小。其中删除代码类似于文件删除代码,修改代码类型于文件编辑代码。
5.13****管理员管理模块
管理员可以通过该模块的"添加管理员"功能添加新的管理员,权限都相同,添加内容有:管理员帐号、密码、信息联系方式,实现代码类似于用户注册。管理管理员,可以查看所有管理员,可以修改管理员密码、信息联系方式和删除管理员。主要代码如下:
Dim user As String = Request.QueryString("username")
Label1.Text = user
cmd.CommandText = "Select vAdminConn From admin where vAdminId='" & user & "'"
objReader = cmd.ExecuteReader
objReader.Read()
adminconn.Text = objReader.Item(0) '根据传值查询显示相应信息
5.14****共享管理模块
(1) 共享文件页面(Admin/Admin_share_file.aspx)通过DataGrid控件显示出所有的所用户共享的非锁定文件,类似于用户公共共享页面(Publicshar.aspx),包括文件名、大小、提供用户、更新时间、下载统计,管理员可以查看、下载任何共享文件;还可以对共享文件进行锁定,被锁定后的文件将不会在共享区域显示出来,主要代码如下:
Dim Sql As String = "UPDATE UserFiles SET vFileLock='√' WHERE vWay=@vWay"
Dim cmd As New SqlCommand(Sql, conn)
cmd.Parameters.Add(New SqlParameter("@vWay", SqlDbType.VarChar, 50))
cmd.Parameters("@vWay").Value = e.Item.Cells(0).Text
(2) 管理员从"举报查看"中查看被用户举报的文件,从中可以看到文件被举报次数统计,并按被举报次数排列,通过查看文件验证共享文件是否不合适,对不合适文件进行锁定。主要代码如下:
Sql = "Select * From UserFiles WHERE vSharType='共享' AND vFileLock='' AND vFileUp>'0' ORDER BY vFileUp DESC"
Dim objAdapter As New SqlDataAdapter(Sql, cnSqlServer)
objAdapter.Fill(ds, "UserFiles")
DataGrid.DataSource = ds
DataGrid.DataBind()
(3) 管理员还可以从"被锁定文件"链接到被锁定文件查看页面,对错判而锁定的文件进行解锁。主要代码如下:
Dim Sql As String = "UPDATE UserFiles SET vFileLock='' WHERE vWay=@vWay"
Dim cmd As New SqlCommand(Sql, conn)
cmd.Parameters.Add(New SqlParameter("@vWay", SqlDbType.VarChar, 50))
cmd.Parameters("@vWay").Value = e.Item.Cells(0).Text
5.15****收费管理模块
管理员可以添加、删除、修改用户积分等级,按照空间大小收费、根据用户的积分级别实施优惠收费。当某用户申请升级时候,可以查询该用户的积分、积分等级,以及升级到相应等级经过优惠折算后应支付的实际费用。
(1) 添加积分等级SQL语句如下:
cmd.CommandText = "INSERT INTO IntegralRank(vIntegralRank,vUserSoreU,vUserSoreD,vContrbRed) VALUES('" & Textbox1.Text & "','" & Textbox2.Text & "','" & Textbox3.Text & "','" & Textbox4.Text & "')"
(2) 查看积分等级页面(Admin/Admin_sore.aspx)用DataGrid显示,主要代码如下:
Sql = "Select * From IntegralRank ORDER BY vIntegralRank"
Dim objAdapter As New SqlDataAdapter(Sql, cnSqlServer)
objAdapter.Fill(ds, "IntegralRank")
DataGrid.DataSource = ds
DataGrid.DataBind()
(3) 通过查看积分等级页面DataGrid显示中各行的修改超链接链接到积分等级修改页面(Admin/Admin_sore_edit.aspx),此页面主要代码如下:
Dim id As String = Request.QueryString("id") '获得传值
cmd.CommandText = "Select * From IntegralRank where vIntegralRank='" & id & "'"
objReader = cmd.ExecuteReader
objReader.Read()
Textbox1.Text = objReader.Item(1)
Textbox2.Text = objReader.Item(2)
Textbox3.Text = objReader.Item(3) '初始化页面
(4) 收费查询页面(Admin/Admin_money.aspx),实现查询某特定用户升级到特定用户等级所需要的实际费用,还显示出了该用户的积分、优惠打折,查询Button触发的主要代码如下:
Dim userrank As Integer = DropDownList1.SelectedValue.Trim()
'查询该用户积分
cmd.CommandText = "Select vUserSore From Users where UserId='" & Textbox1.Text & "'"
objReader = cmd.ExecuteReader
objReader.Read()
Label1.Text = objReader.Item("vUserSore")
objReader.Close()
'根据积分查询出该用户所处积分等级的优惠打折
cmd.CommandText = "Select * From IntegralRank "
objReader = cmd.ExecuteReader
Do While objReader.Read()
If Label1.Text > objReader.Item("vUserSoreU") And Label1.Text < objReader.Item("vUserSoreD") Then
contrbred = objReader.Item("vContrbRed")
Label2.Text = objReader.Item("vContrbRed")
i = 1
Exit Do
End If
Loop
'查询想要获得用户等级的原价
cmd.CommandText = "Select vCharge From UsersRank where vUserRank='" & userrank & "'"
objReader = cmd.ExecuteReader
objReader.Read()
Dim charger As String = objReader.Item(0)
objReader.Close()
Label3.Text = charger
Label4.Text = charger * contrbred / 10 '计算出需要升级所支付的实际费用