counter.aspx

来自「《ASP.NET C#程序设计案例教程》」· ASPX 代码 · 共 65 行

ASPX
65
字号
<%@ Page ContentType="Image/Gif"%>
<%@ Import Namespace="System.Drawing"%>
<%@ Import Namespace="System.Drawing.Imaging"%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<Script Language="VB" Runat="Server">
Sub Page_Load(Sender As Object,E as Eventargs)
	'首先获取传递过来的UserId
	Dim UserId As String=Request.QueryString("UserId")
	Dim VisitNum As Long=GetVisitNum(UserId)+1						'读取原有访问次数并加1
	Call AddVisitNum(UserId)										'调用过程,令访问次数加1
	'下面根据访问次数生成一个图片
	Dim intWidth As Integer=Len(VisitNum.ToString)*14				'计算要生成的图片的宽度
	Dim bmp As New Bitmap(intWidth,19,PixelFormat.Format32bppArgb)	'建立Bitmap对象
	Dim grh As Graphics = Graphics.FromImage(bmp)					'建立Graphics对象	
	'下面在图片上绘制已有的图片
	Dim I As Integer
	For I=1 To Len(CStr(VisitNum))
		Dim bmp2 As New Bitmap(Server.MapPath(Mid(CStr(VisitNum),I,1) & ".gif"))	'创建Bitmap对象
		grh.DrawImage(bmp2,(I-1)*14,0)												'将该对象绘制在图片上
	Next
	'将生成图片以gif格式显示在页面上
	bmp.Save(Response.OutputStream,ImageFormat.gif)
End Sub


'该函数用来读取原有访问次数
Function GetVisitNum(UserId As String) As Long
	Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("temp.mdb"))	
	Dim strSql As String = "Select * From counters Where UserId='" & UserId & "'"
	Dim cmd As New OleDbCommand(strSql, conn)							'建立Command对象
	conn.Open
	Dim dr As OleDbDataReader = cmd.ExecuteReader()						'建立DataReader对象
	'下面判断数据库中是否已经有记录,如有,则读取记录;如没有,则添加一条记录
	If dr.HasRows Then 
		dr.Read()
		GetVisitNum=dr.Item("VisitNum")									'返回原有访问次数
	Else
		GetVisitNum=0													'返回原有访问次数
		Call InitialVisitNum(UserId)									'调用过程添加一条记录
	End If
	conn.Close
End Function

'该过程用来添加一条记录
Sub InitialVisitNum(UserId As String)
	Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("temp.mdb"))	
	Dim strSql As String = "Insert Into counters(VisitNum,UserId) Values(0,'" & UserId & "')"
	Dim cmd As New OleDbCommand(strSql, conn)							
	conn.Open
	cmd.ExecuteNonQuery()
	conn.Close
End Sub

'该过程用来给访问次数加1
Sub AddVisitNum(UserId As String)
	Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("temp.mdb"))	
	Dim strSql As String = "Update counters Set VisitNum = VisitNum + 1 Where UserId='" & UserId & "'"
	Dim cmd As New OleDbCommand(strSql, conn)							
	conn.Open
	cmd.ExecuteNonQuery()
	conn.Close
End Sub
</Script>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?