From:http://blog.csdn.net/okfei/archive/2009/08/14/4446718.aspx
ASP課堂上學到的程序設計,都是按照語法和對象來一點一點的學習的,到最後編程的時候,新手根本想不出來要怎麼來組合才能完成一個模塊,下面把這些語法
按照程序員常用的模塊方式組合起來,請大家按照模塊來記憶,然後按照模塊來應用,不一定要一個一個字母的背下來,關鍵是用到這些模塊的時候能準確的,拿出
來,安上去!
注意下面的標點符號,全部都爲英文中的半角符號,如果寫成了全角的就一定運行不起來了,切忌切忌……
1、常用寫法
(1)ASP開始結束符語法:<% %> 文件後綴.asp
(2)Request.form("title") '獲取表單中的一個輸入框name叫title的值
(3)Request.querystring("title") '獲取連接中的一個參數title=後面的值
(4)dim str
str="我愛你"
response.write(str) '向屏幕輸出
(5) response.write "ok 程序運行到這裏了!"
(6) sql="select * from news"
response.write sql
'調試和查看sql語句寫法是否正確的語句常用到
(7)Response.Redirect("login.asp") '跳轉到另外一個頁面
(8)response.redirect("admin.asp") '轉到後臺
(9)Response.end '程序輸出截至,不顯示該條語句下面的內容了
(10)Response.Write("<script>alert('???!')</script>")'彈出提示窗口
2、判斷語句
(1)判斷表單傳來的用戶名和密碼是否正確,並提示
If request("username")="admin" then
Response.write"恭喜,你已經登錄成功"
Else
Response.write"對不起,您輸入的用戶名錯誤,請返回重輸入"
End if
(2)同時判定用戶名和密碼都正確就轉入到後臺,否則退回到從新輸入頁面
If request("name")="admin" and request("pass")="admin" then
Response.redirect"admin.asp"
Else
Response.redirect"login.asp"
End if
(3)變量值和字符串值合起來用&
a="我"
b="愛"
c="你"
response.write a&b&c&"媽媽"
3、循環語句:循環顯示6條數據庫中的記錄
(1)寫法1:
do while not rs.eof
response.write "<br><font color=#000000>"&rs("title")&"</font><br>"
rs.movenext
loop
(2)寫法二:
for n=1 to 6
response.write rs("title")&"<br>"
if rs.eof then
exit for '跳出for循環
else
rs.movenext '記錄集下移一條
end if
next
4、常用變量轉換函數
Now() 函數返回系統時間
Date() 函數返回當前系統日期.
CStr(int) 函數轉化一個表達式爲字符串
CInt(string) 將一個表達式轉化爲數字類型
Trim(request("username")) 函數去掉字符串左右的空格
Left(rs("title"),10)&"..." 函數返回字符串左邊第10個字符以前的字符(含第length個字符),一般在限制新聞標題的顯示長度的時候用
Len(string) 函數返回字符串的長度. 中文字符長度也計爲一
request.serverVariables("remote_host")'取得來訪問的IP
mid(str,起始字符,[讀取長度]):截取字符串中間子字符串
right(str,nlen):從右邊起截取nlen長度子字符串
Lcase(str):字符串轉成小寫
Ucase(str):字符串轉成大寫
Ltrim(str):去除字符串左側空格
Rtrim(str):去除字符串右側空格
replace(str,查找字符串,替代字符串,[起始字符,替代次數,比較方法]):
替換字符串
注:默認值:起始字符 1;替代次數 不限;比較方法 區分大小寫(0)
InStr([起始字符,]str,查找字符串[,比較方法]):檢測是否包含子字符串 可選參數需同時選 返回起始位置
5、Access數據庫連接代碼
(1)方法一:
db="mydata.mdb" '如果放在目錄中,就要寫明"database/mydata.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
cServer.MapPath(db)
conn.Open connstr
(2)方法二:
'如果你的服務器採用較老版本Access驅動,請用下面連接方法
db="mydata.mdb" '如果放在目錄中,就要寫明"database/mydata.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
c & Server.MapPath(db)
conn.Open connstr
6、標準的用Sql語句和asp操作數據的常用寫法
包括取全部記錄
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="select * from news"
Rs.Open SqlStr,conn,1,1 '運行sql語句,把數據提出到rs對象中
選取幾條數據
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="select top 6 * from news"
Rs.Open SqlStr,conn,1,1 '運行sql語句,把6條數據提出到rs對象中
選取一條指定表中id字段數值的數據
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="select * from news where id="&request("id")
Rs.Open SqlStr,conn,1,1 '運行sql語句,把6條數據提出到rs對象中
獲取一條表單傳過來的數據,然後加入到一個表當中
dim a,b,c,d
a=request.form("a")
b=request("b")
c=request("c")
d=request("d")
sqlstr100000="insert into huiyuanbiao(yonghuming,mima,wenti,daan)
values('"&a&"','"&b&"','"&c&"','"&d&"')"
conn.execute sqlstr100000
response.write"恭喜,新數據加入成功!"
修改一條指定表中id字段數值的數據,用表單傳過來的數據替換
dim a,d,e
a=request("id")
d=request.form("d")
e=request.form("e")
sqlstr="update huiyuanbiao set yonghuming='"&d&"',mima='"&e&"' where id="&a
response.write sqlstr
conn.execute sqlstr
response.write"恭喜,數據修改成功!"
刪除一條指定表中id字段數值的數據
dim a
a=request("delid")
sqlstr="delete from huiyuanbiao where id="&a
conn.execute sqlstr
response.write"恭喜,刪除成功!"
7、用Recordset對象和asp操作數據庫的常用寫法
(1)用sql語句,取出news表中所有的數據放到rs中,按照數據庫默認排序
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="select * from news"
Rs.Open SqlStr,conn,1,1
(2)取出news表中前6條數據放到rs中,按照數據庫默認排序方式
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="select top 6 * from news"
Rs.Open SqlStr,conn,1,1
(3)循環顯示6條rs對象中存在的數據,列表顯示
不帶連接的寫法
for n=1 to 6
response.write rs("title")&"<br>"
if rs.eof then
exit for
else
rs.movenext
end if
next
帶連接的寫法
for n=1 to 6
response.write "<a href=show.asp?id=rs("id")>"& left(rs("title"),20)&"</a><br>"
if rs.eof then
exit for
else
rs.movenext
end if
next
(4)向數據庫添加一條數據代碼
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="select * from news"
Rs.Open SqlStr,conn,1,3'注意這裏的1,3代表可以寫入的打開數據表
Rs.addnew
Rs("title")=trim(request.form("title"))
Rs("neirong")=request.form("neirong")
Rs("date")=now()
rs.update '真正寫入數據庫
(5)修改一條記錄的代碼,通過(2)中的連接傳遞過來了id數值
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="select * from news where id="&request("id")
Rs.Open SqlStr,conn,1,3 '注意這裏的1,3代表可以寫入的打開數據表
Rs("title")=trim(request("title"))
Rs("neirong")=request("neirong")
Rs("date")=now()
rs.update '真正寫入數據庫
(6)刪除數據庫中一條記錄,通過連接傳遞過來了數據得id數值
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="select * from news where id="&request("id")
Rs.Open SqlStr,conn,1,3 '注意這裏的1,3代表可以寫入的打開數據表
rs.delete '刪除該條數據
8、當點擊按鈕時候表單帶着的數據傳送到哪個文件,在哪裏指定?
<form method="post" action="addsave.asp">
<input type="text" name="a">
<input type="text" name="b">
<input type="submit" name="Submit" value="提交">
</form>
9、表單提交來的數據接收並顯示到屏幕上的代碼
response.write request.form("a")
response.write now()
response.write trim(request.form("b"))
10、利用Application對象作計數器的語法
在網頁的頭部加入
Application.Lock
Application("counter") = Application("counter") + 1
Application.UnLock
在需要顯示計數內容的網頁的地方,加入下面的語句
response.write Application("counter")
11、利用Session對象保護後臺管理頁面admin.asp,防止未登陸用戶進入
第一步、在網站後臺網頁需要權限保護的所有網頁的頭部加入下面的代碼,
if session("admin")<>"ok" then
response.redirect"login.asp"
response.end
end if
第二步、在網站後臺登陸頁的檢測表單發來的用戶名和密碼驗證部分標準寫法
AdmName=Request.Form("Name")
AdmPass=Request.Form("Pass")
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="Select * from Admin where name='"&AdmName&"' and pass='"&AdmPass&"'"
Rs.Open SqlStr,conn,1,3
if Rs.EOF AND RS.BOF then
Response.Redirect("login.asp")
response.end
else
session("admin")="ok"
Response.Redirect("admin.asp")
response.end
end if
12、分頁代碼
sql = "select……………………省略了你的從表中取出所有數據的sql語句寫法
Set rs=Server.Createobject("ADODB.RECORDSET")
rs.Open sql, conn, 1, 1
if not rs.eof then
pages = 30 '定義每頁顯示的記錄數
rs.pageSize = pages '定義每頁顯示的記錄數
allPages = rs.pageCount '計算一共能分多少頁
page = Request.QueryString("page")'通過瀏覽器傳遞的頁數
'if語句屬於基本的排錯處理
if isEmpty(page) or Cint(page) < 1 then
page = 1
elseif Cint(page) > allPages then
page = allPages
end if
rs.AbsolutePage = page
Do while not rs.eof and pages > 0
'這裏輸出你要的內容………………
pages = pages - 1
rs.MoveNext
Loop
else
Response.Write("數據庫暫無內容!")
End if
rs.Close
Set rs = Nothing
'分頁頁碼連接和跳轉頁碼程序
<form Action="" Method="GET">
<%
If Page <> 1 Then
Response.Write "<A HREF=?Page=1>第一頁</A>”
Response.Write "<A HREF=?Page=" & (Page-1) & ">上一頁</A>“
End If
If Page <> allPages Then
Response.Write "<A HREF=?Page=" & (Page+1) & ">下一頁</A>"
Response.Write "<A HREF=?Page=" & allPages & ">最後一頁</A>"
End If
%>
輸入頁數:<input TYPE="TEXT" Name="Page" SIZE="3"> 頁數:<font
COLOR="Red"><%=Page%>/<%=allPages %></font>
</form>
13、分行列顯示圖片和產品名稱的代碼(4列x3行=12個)
<%
Set Rs=Server.CreateObject("ADODB.RecordSet")
SqlStr="select top 12 * from myproduct"
Rs.Open SqlStr,conn,1,1
i=1
%>
<table width="90%" border="1" cellspacing="0" sellpadding="0">
<tr>
<%
do while not rs.eof
%>
<td align="center">
<img src="<%=rs("imgurl")%>" width="52" height="120"><br>
<%=rs("productname")%>
</td>
<% if i mod 4=0 then response.write"</tr><tr>"
i=i+1
rs.movenext
loop
rs.close
%>
</tr>
</table>
十四、ASP數據庫連接之ACCESS-SQLSERVER
<%
IsSqlData=0 ‘定義數據庫類別,0爲Access數據庫,1爲SQL數據庫
If IsSqlData=0 Then
Access數據庫
datapath ="data/" 數據庫目錄的相對路徑
datafile ="data.mdb" 數據庫的文件名
c&Server.MapPath(""&datapath&""&datafile&"")
C&server.mappath(""&datapath&""&datafile&"")&";DRIVER={Microsoft Access Driver (*.mdb)};"
Else
SQL數據庫
SqlLocalName ="(local)" 連接IP [ 本地用 (local) 外地用IP ]
SqlUsername ="sa" 用戶名
SqlPassword ="1" 用戶密碼
SqlDatabaseName="data" 數據庫名
C & SqlUsername & "; Password=" & SqlPassword & ";
Initial Catalog = " & SqlDatabaseName & "; Data Source=" &
SqlLocalName & ";"
END IF
On Error Resume Next
Set conn=Server.CreateObject("ADODB.Connection")
conn.open ConnStr
If Err Then
err.Clear
Set Conn = Nothing
Response.Write "數據庫連接出錯,請檢查連接字串。"
Response.End
End If
%>
<!-- 判斷網址是否合格並處理 -->
<%
url=trim(request.form("url"))
if left(url,7)<>"http://" then
url="http://"&url
end if
%>
<!-- 顯示時間爲幾月幾日並處理 -->
<%
y=Month(date())
r=Day(date())
if len(y)=1 then y="0" & y
if len(r)=1 then r="0" & r
Response.Write y & "月" & r & "日"
%>
<!-- 限制某些IP訪問網站 -->
<%
url_str=Request.ServerVariables("REMOTE_ADDR")
url=split(url_str,".")
if url(0)=127 and url(1)=0 and url(2)=0 and url(3)>0 and url(3)<256 then
else
response.Write(url_str)
end if
%>
<!-- 設置文章顯示格式 -->
<%
function HTMLEncode(fString)
if not isnull(fString) then
fString = replace(fString, ">", ">")
fString = replace(fString, "<", "<")
fString = Replace(fString, CHR(32), " ")
fString = Replace(fString, CHR(9), " ")
fString = Replace(fString, CHR(34), """)
fString = Replace(fString, CHR(39), "'")
fString = Replace(fString, CHR(13), "")
fString = Replace(fString, CHR(10) & CHR(10), "</P><P> ")
fString = Replace(fString, CHR(10), "<BR> ")
HTMLEncode = fString
end if
end function
%>
1. ASP與Access數據庫連接:
<%
dim conn,mdbfile
mdbfile=server.mappath("數據庫名稱.mdb")
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver
(*.mdb)};uid=admin;pwd=數據庫密碼;dbq="&mdbfile
%>
2. ASP與SQL數據庫連接:
<%
dim conn
set conn=server.createobject("ADODB.connection")
con.open "PROVIDER=SQLOLEDB;DATA
SOURCE=SQL服務器名稱或IP地址;UID=sa;PWD=數據庫密碼;DATABASE=數據庫名稱
%>
建立記錄集對象:
set rs=server.createobject("adodb.recordset")
rs.open SQL語句,conn,3,2
3. SQL常用命令使用方法:
(1) 數據記錄篩選:
sql="select * from 數據表 where 字段名=字段值 order by 字段名 [desc]"
sql="select * from 數據表 where 字段名 like '%字段值%' order by 字段名 [desc]"
sql="select top 10 * from 數據表 where 字段名 order by 字段名 [desc]"
sql="select * from 數據表 where 字段名 in ('值1','值2','值3')"
sql="select * from 數據表 where 字段名 between 值1 and 值2"
(2) 更新數據記錄:
sql="update 數據表 set 字段名=字段值 where 條件表達式"
sql="update 數據表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達式"
(3) 刪除數據記錄:
sql="delete from 數據表 where 條件表達式"
sql="delete from 數據表" (將數據表所有記錄刪除)
(4) 添加數據記錄:
sql="insert into 數據表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)"
sql="insert into 目標數據表 select * from 源數據表" (把源數據表的記錄添加到目標數據表)
(5) 數據記錄統計函數:
AVG(字段名) 得出一個表格欄平均值
COUNT(*|字段名) 對數據行數的統計或對某一欄有值的數據行數統計
MAX(字段名) 取得一個表格欄最大的值
MIN(字段名) 取得一個表格欄最小的值
SUM(字段名) 把數據欄的值相加
引用以上函數的方法:
sql="select sum(字段名) as 別名 from 數據表 where 條件表達式"
set rs=conn.excute(sql)
用 rs("別名") 獲取統的計值,其它函數運用同上。
(6) 數據表的建立和刪除:
Create TABLE 數據表名稱(字段1 類型1(長度),字段2 類型2(長度) …… )