① 請教,有人用ASP幫我寫個簡單的查詢sql和修改SQL數據的例子么
加入數據:insert into A(a,b)values("aa","bb")
查詢:select form abc where a="aa"
'資料庫連接
DataFile=Server.MapPath("123.mdb")
Set Conn=Server.CreateObject("Adodb.Connection"陪擾)
Conn.ConnectionString="Driver={Microsoft Access Driver (*.mdb)};DBQ="&DataFile
Conn.Open
'更新
SqlStr="Update abc Set doc_a="&a&",doc_b='"&b&"',doc_c='"&c&"' Where doc_id=1"
Conn.Execute(SqlStr)
'添銀亂橡加
SqlStr="鋒旁insert into A(doc_a,doc_b,doc_c)values("&a&",'"&b&"','"&c&"')"
Conn.Execute(SqlStr)
'查詢
Set Rs=Conn.Execute("Select d_id,d_name From d Where d_fid="&fid&" order by d_order")
② ASP編程實例
ASP編程實例大全
ASP簡單、易於維護 , 是小型頁面應用程序的選擇 ,在使用DCOM (Distributed Component Object Model)和 MTS(Microsoft Transaction Server)的情況下, ASP甚至可以實現中等規模的企業應用程序。那麼asp編程中有哪些實例比較常用呢?下面我為大家匯總ASP編程中慶昌則20個非常有用的例子,一起來學習吧!
1.如何用Asp判斷你的網站的虛擬物理路徑
答:使用Mappath方法
<%= Server.MapPath("")%>
2.我如何知道使用者所用的瀏覽器?
答:使用the Request object方法
strBrowser=Request.ServerVariables("HTTP_USER_AGENT")
If Instr(strBrowser,"MSIE") <> 0 Then
Response.redirect("ForMSIEOnly.htm")
Else
Response.redirect("ForAll.htm")
End If
3.如何計算每天的平均反復訪問人數
答:解決方法
<% startdate=DateDiff("d",Now,"01/01/1990")
if strdate<0 then startdate=startdate*-1
avgvpd=Int((usercnt)/startdate) %>
顯示結果
<% response.write(avgvpd) %>
that is it.this page have been viewed since November 10,1998
4.如何顯示隨機圖象
<% dim p,ppic,dpic
ppic=12
randomize
p=Int((ppic*rnd)+1)
dpic="graphix/randompics/"&p&".gif"
%>
顯示
<img src="<%=dpic%>">
5.如何回到先前的頁面
答:<a href="<譽棚%=request.serverVariables("Http_REFERER")%>">preivous page</a>
或用圖片如:<img src="arrowback.gif" alt="<%=request.serverVariables("HTTP_REFERER")%>">
6.如何確定對方的IP地址
答:<%=Request.serverVariables("REMOTE_ADDR)%>
7.如何鏈結到一副圖片上
答:<% @Languages=vbs cript %>
<% response.expires=0
strimagename="graphix/errors/erroriamge.gif"
response.redirect(strimagename)
%>
8.強迫輸入密碼對話框
答:把這句話放載頁面的開頭
<% response.status="401 not Authorized"
response.end
%>
9.如何傳遞變數從一頁到另一頁
答:用 HIDDEN 類型來傳遞變數
<% form method="post" action="mynextpage.asp">
<% for each item in request.form %>
<input namee="<%=item%>迅悔" type="HIDDEN"
value="<%=server.HTMLEncode(Request.form(item)) %>">
<% next %>
</form>
10.為何我在 asp 程序內使用 msgbox,程序出錯說沒有許可權
答:由於 asp 是伺服器運行的,如果可以在伺服器顯示一個對話框,那麼你只好等有人按了確定之後,你的程序才能繼續執行,而一般伺服器不會有人守著,所以微軟不得不禁止這個函數,並胡亂告訴你 (:) 呵呵) 沒有許可權。但是ASP和客戶端腳本結合倒可以顯示一個對話框,as follows:
<% yourVar="測試對話框"%>
<% script language=javas cript>
alert("<%=yourvar%>")
</script>
11.有沒有辦法保護自己的源代碼,不給人看到
答:可以去下載一個微軟的Windows s cript Encoder,它可以對asp的腳本和客戶端javas cript/vbs cript腳本進行加密。。。不過客戶端加密後,只有ie5才能執行,伺服器端腳本加密後,只有伺服器上安裝有s cript engine 5(裝一個ie5就有了)才能執行。
12.怎樣才能將 query string 從一個 asp 文件傳送到另一個?
答:前者文件加入下句: Response.Redirect("second.asp?" & Request.ServerVariables("QUERY_STRING"))
13.global.asa文件總是不起作用?
答:只有web目錄設置為web application, global.asa才有效,並且一個web application的根目錄下 global.asa才有效。IIS4可以使用Internet Service Manager設置application setting 怎樣才能使得htm文件如同asp文件一樣可以執行腳本代碼?
14.怎樣才能使得htm文件如同asp文件一樣可以執行腳本代碼?
答:Internet Sevices Manager -> 選擇default web site ->右鼠鍵->菜單屬性-〉主目錄-> 應用程序設置(Application Setting)-> 點擊按鈕 "配置"-> app mapping ->點擊按鈕"Add" -> executable browse選擇 WINNTSYSTEM32INETSRVASP.DLL EXTENSION 輸入 htm method exclusions 輸入PUT.DELETE 全部確定即可。但是值得注意的是這樣對htm也要由asp.dll處理,效率將降低。
15.如何注冊組件
答:有兩種方法。
第一種方法:手工注冊 DLL 這種方法從IIs 3.0一直使用到IIs 4.0和其它的Web Server。它需要你在命令行方式下來執行,進入到包含有DLL的目錄,並輸入:regsvr32 component_name.dll 例如 c: emp egsvr32 AspEmail.dll 它會把dll的特定信息注冊入伺服器中的注冊表中。然後這個組件就可以在伺服器上使用了,但是這個方法有一個缺陷。當使用這種方法注冊完畢組件後,該組件必須要相應的設置NT的匿名帳號有許可權執行這個dll。特別是一些組件需要讀取注冊表,所以,這個注冊組件的方法僅僅是使用在伺服器上沒有MTS的情況下,要取消注冊這個dll,使用:regsvr32 /u aspobject.dll example c: emp egsvr32 /u aneiodbc.dll
第二種方法:使用MTS(Microsoft Transaction Server) MTS是IIS 4新增特色,但是它提供了巨大的改進。MTS允許你指定只有有特權的用戶才能夠訪問組件,大大提高了網站伺服器上的安全性設置。在MTS上注冊組件的步驟如下:
1) 打開IIS管理控制台。
2) 展開transaction server,右鍵單擊"pkgs installed"然後選擇"new package"。
3) 單擊"create an empty package"。
4) 給該包命名。
5) 指定administrator帳號或則使用"interactive"(如果伺服器經常是使用administrator 登陸的話)。
6) 現在使用右鍵單擊你剛建立的那個包下面展開後的"components"。選擇 "new then component"。
7) 選擇 "install new component" 。
8) 找到你的`.dll文件然後選擇next到完成。
要刪除這個對象,只要選擇它的圖標,然後選擇delete。
附註:特別要注意第二種方法,它是用來調試自己編寫組件的最好方法,而不必每次都需要重新啟動機器了。
16. ASP與Access資料庫連接:
<%@ language=VBs cript%>
<%
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
%>
17. ASP與SQL資料庫連接:
<%@ language=VBs cript%>
<%
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
18. 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 …) valuess (值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("別名") 獲取統的計值,其它函數運用同上。
(5) 數據表的建立和刪除:
CREATE TABLE 數據表名稱(欄位1 類型1(長度),欄位2 類型2(長度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 數據表名稱 (永久性刪除一個數據表)
19. 記錄集對象的方法:
rs.movenext 將記錄指針從當前的位置向下移一行
rs.moveprevious 將記錄指針從當前的位置向上移一行
rs.movefirst 將記錄指針移到數據表第一行
rs.movelast 將記錄指針移到數據表最後一行
rs.absoluteposition=N 將記錄指針移到數據表第N行
rs.absolutepage=N 將記錄指針移到第N頁的第一行
rs.pagesize=N 設置每頁為N條記錄
rs.pagecount 根據 pagesize 的設置返回總頁數
rs.recordcount 返回記錄總數
rs.bof 返回記錄指針是否超出數據表首端,true表示是,false為否
rs.eof 返回記錄指針是否超出數據表末端,true表示是,false為否
rs.delete 刪除當前記錄,但記錄指針不會向下移動
rs.addnew 添加記錄到數據表末端
rs.update 更新數據表記錄
20、 Recordset對象方法
Open方法
recordset.Open Source,ActiveConnection,CursorType,LockType,Options
Source
Recordset對象可以通過Source屬性來連接Command對象。Source參數可以是一個Command對象名稱、一段SQL命令、一個指定的數據表名稱或是一個Stored Procere。假如省略這個參數,系統則採用Recordset對象的Source屬性。
ActiveConnection
Recordset對象可以通過ActiveConnection屬性來連接Connection對象。這里的ActiveConnection可以是一個Connection對象或是一串包含資料庫連接信息(ConnectionString)的字元串參數。
;③ 急求ASP連接SQL SERVER的例子, 要簡單點的,給個注釋吧, 謝謝了!在線等
set conn=server.createobject("鉛跡帆槐雹ADODB.connection")
conn.open "PROVIDER=SQLOLEDB;DATA SOURCE=127.0.0.1;UID=sa;PWD=123456;DATABASE=myweb"州櫻
④ 求一個asp與sql資料庫連接的應用實例,越簡單越好。
創建資料庫連接對象
<%
set dxm=server.CreateObject("adodb.connection")
blm="driver=sql server;server=你計算機的IP地址;database=web;uid=sa;pwd="
dxm.open blm
%>
uid=sa;pwd= 你可以打開你的查詢分析器看看他是用什麼身份驗證的
如果不是sa和空密碼就自己設置一個用戶.
dxm和blm是自己定的對象名和變數名
添加數據:
<%
set sql=server.CreateObject("adodb.recordset")
sql.open "select * from 表名",dxm,1,3 '這里是全表查詢
sql.addnew
sql("欄位名")=要添加的數據(如果是用表單提交就用 request.form("表單文本框名稱") )
你有幾個欄位就添加幾次(例如:sql("name")=request.from("username"))
sql.update
%>
上面是添加數據的方法,現在該查詢了:
<%
set sql=server.CreateObject("adodb.recordset")
sql.open "select * from 表名",dxm,1,3 '這里是全表查詢
%>
在你想要顯示的地方做上<%=sql("欄位名")%>就可以了.
刪除:
將添加數據那裡的代碼改為:
<%set sql=server.CreateObject("adodb.recordset")
sql.open "select * from 表名 where 條件",dxm,1,3
sql.delete
%>
條件 就是例如name=小張 等等類似的
改:同添加一樣
將添加中的sql.addnew去掉
改為:sql.update
代碼如下:
<%
set sql=server.CreateObject("adodb.recordset")
sql.open "select * from 表名",dxm,1,3 '這里是全表查詢
sql.update
sql("欄位名")=要更改的數據(如果是用表單提交就用 request.form("表單文本框名稱") )
你改幾個欄位就寫幾次(例如:sql("name")=request.from("username")
sql("sex")=request.from("sex"))
%>
這是用sql語句的對象做的,下面給你一些增、刪、改、查 的代碼
增:
全表添加:insert into 表名 values (值1,值2,……值n)
部分欄位添加:
insert into 表名(欄位1,欄位2,……欄位n) values(值1,值2,……值n)
刪:delete from 表名 where 條件
改:update 表名 set 欄位名1=新值1,欄位名2=新值2,……where 條件
查:select * from (全表查詢)
select * from 表名 where 條件 (帶條件查詢)
⑤ Asp.net怎樣把DataList的數據循環添加到sql資料庫 最好有例子
for(int i=0;i<this.DataList.Items.count;i++)
{
Label LbId=(Label)this.DataList.Items[i].FindControl("LbId");
Label LbName=(Label)this.DataList.Items[i].FindControl("戚頃尺LbName");
string sql="insert into tb_name(Id,Name) values('"+LaId.Text+"','"+LbName.Text+"',)";
//在此操乎友作改SQL語句即可高高,有問題HI我
}
⑥ 誰能給我一個ASP+SQL的存儲過程的應用事例感激不盡
一、使用Command對象和Parameter對譽虛御象傳遞參數
本講將主要使用Microsoft SQL Server7.0資料庫,先建立一個連接文件AdoSQL7.asp備用,以後用到時不再特別說明。
<% ''AdoSQL7.asp
Option Explicit
Response.Expires = 0
''第一部分: 建立連接
Dim Cnn, StrCnn
Set Cnn = Server.CreateObject("ADODB.Connection")
StrCnn = "Provider=sqloledb; User ID=sa; Password=; Initial Catalog=pubs; Data Source=ICBCZJP"
Cnn.Open StrCnn
%>
注意:自己使用時要將Data Source設為你的資料庫伺服器所在的機器名。
另外,以前使用Access資料庫時,用Microsoft Access97可以很方便的查看欄位及數據,而使用SQL Server資料庫,尤其是並不在資料庫伺服器,而是在另一台機器上調試ASP腳本時,要查看欄位及數據便需另外安裝工具,這里向你提慶岩供一個工具:Msqry32.exe(Microsoft Query),這個文件隨Office97安裝,一般位於目錄「Microsoft Office\Office」下。
例wuf70.asp:
<%@ LANGUAGE="VBSCRIPT" %>
<!--#include file="AdoSQL7.asp"-->
譽芹<!--#include file="adovbs.inc"-->
<% '' wuf70.asp
Dim cmdTest, prmTest, rsTest
''創建 Command 對象
Set cmdTest = Server.CreateObject("ADODB.Command")
『Recordset、Command對象都可以通過ActiveConnection屬性來連接Connection對象
cmdTest.ActiveConnection = Cnn
''SQL命令 - 含兩個參數, 用 ? 表示
cmdTest.CommandText = "Update jobs Set job_desc = ? Where job_id = ?"
''設命令類型為 SQL 語句
cmdTest.CommandType = adCmdText
''Prepared 屬性決定是否將 SQL 命令先行編譯,將其設為True,可以加快運行
cmdTest.Prepared = True
''創建 Parameter 對象
Set prmTest=cmdTest.CreateParameter("job_desc",adVarChar,adParamInput,50,"網路")
''將數據追加到 Parameters 數據集合中
cmdTest.Parameters.Append prmTest
Set prmTest = cmdTest.CreateParameter("job_id",adSmallInt,adParamInput,,"12")
cmdTest.Parameters.Append prmTest
''執行修改 – 不需要返回結果,簡單的使用cmdTest.Execute 就可以了
cmdTest.Execute
''重新設置參數運行 – 便可修改另一條數據
cmdTest.Parameters("job_id") = "1"
cmdTest.Parameters("job_desc") = "測試"
cmdTest.Execute
''重新設置參數運行
cmdTest("job_id") = "14"
cmdTest("job_desc") = "金融"
cmdTest.Execute
Set rsTest = Cnn.Execute("Select job_id,job_desc From jobs")
While Not rsTest.EOF
Response.Write rsTest(0) & rsTest(1) & "<br>"
rsTest.MoveNext
Wend
Cnn.close : Set prmTest = Nothing
Set cmdTest = Nothing: Set Cnn = Nothing
%>
分析:
1.Command對象的CreateParameter方法用來為SQL命令或存儲過程建立參數對象,共有五個參數(五個參數都是可選項):
第一個參數:參數對象的名稱;
第二個參數:參數對象的數據類型,種類太多,還是參考ADO幫助吧,這里adVarChar(字元串值)、adSmallInt(2 位元組帶符號整型);
第三個參數:參數類型。可以是:adParamInput(指示輸入參數)、adParamOutput( 指示為輸出參數)、adParamReturnValue(指示為返回值)、adParamUnknown(指示參數類型無法確定)、adParamInputOutput(指示為輸入/輸出參數);
第四個參數:參數的數據長度,最好指定為與資料庫中對應欄位長度相等,以免使用時出錯,尤其數據類型為VarChar時,如果是整型或日期型則不必提供該值;
第五個參數:參數的設置初值。
2.cmdTest.Parameters.Append方法增加一個Parameter對象到Parameters數據集合中,從本例中也可看到如何使用多個參數。
3.從本例可以看到,只需要重新設定輸入參數,便可執行對其他數據的修改,非常方便,這一思路在編程時也是最常用的方法之一。
4.重設參數,既可以使用cmdTest.Parameters,也可以省略為cmdTest("job_id")。
二、在ASP中使用存儲過程
什麼是存儲過程(存儲過程位於資料庫伺服器中,是一個SQL語句的集合,可包含一個或多個SQL語句)、怎樣創建存儲過程不屬於本講座的內容,本講座主要是舉例說明在ASP中如何調用存儲過程。
使用存儲過程的好處是大大的,存儲過程比在ASP腳本中運行SQL命令效率更高;可以提高整體性能並減輕網路負載(減少了在網路伺服器和數據伺服器之間的交互);可以優化ASP代碼和增強代碼靈活性等等。
(一)在存儲過程中使用輸入參數
本例中使用的存儲過程為SQL Server7.0自帶的「byroyalty」,裡面的一條SQL語句非常簡單,無非是多了一個CREATE PROCEDURE byroyalty,並且有一個輸入參數為@percentage:
CREATE PROCEDURE byroyalty @percentage int
AS
select au_id from titleauthor
where titleauthor.royaltyper = @percentage
serve by www.ci.net
例wuf71.asp
<% @LANGUAGE = VBScript %>
<!--#include file="AdoSQL7.asp"-->
<!--#include file="adovbs.inc"-->
<% '' wuf71.asp
Dim cmdTest, prmTest, rsTest
Set cmdTest = Server.CreateObject("ADODB.Command")
cmdTest.CommandText = "byroyalty" ''存儲過程名
''設命令類型為 存儲過程
cmdTest.CommandType = adCmdStoredProc
''創建 Parameter 對象
Set prmTest = Server.CreateObject("ADODB.Parameter")
『Type屬性對應wuf70.asp中的第二個參數
prmTest.Type = adInteger ''4 位元組的帶符號整型
『Direction屬性對應wuf70.asp中的第三個參數
prmTest.Direction = adParamInput
『Value屬性對應wuf70.asp中的第五個參數
prmTest.Value = 30
cmdTest.Parameters.Append prmTest
Set cmdTest.ActiveConnection = Cnn
『需要返回一個記錄集,故使用Set rsTest = cmdTest.Execute
Set rsTest = cmdTest.Execute
While Not rsTest.EOF
Response.Write rsTest(0) & "<br>"
rsTest.MoveNext
Wend
Cnn.close
Set rsTest = Nothing : Set prmTest = Nothing
Set cmdTest = Nothing: Set Cnn = Nothing
%>
CommandText屬性既可以指定SQL命令,也可以指定為存儲過程或者是表名稱。
在本例中,創建Parameter對象與wuf70.asp略有不同,其實仔細看看,意思也是差不多的,本例還有兩個屬性未用:prmTest.Name、prmTest.Size,加上Type、Direction和Value,對應於wuf70.asp中的五個參數。
(二)使用輸出參數
從資料庫表中取得一個記錄或計算一個值時,需要使用返回輸出參數的存儲過程。為了舉例,先在SQL Server的pubs庫中新建一存儲過程OUTemploy,該存儲過程需要輸入兩個日期,然後輸出一個最大值。
CREATE PROCEDURE OUTemploy
(
@job_lvl tinyint OUTPUT,
@hire_date1 datetime,
@hire_date2 datetime
)
AS
select @job_lvl = MAX(job_lvl) from employee
where hire_date >= @hire_date1 and hire_date <= @hire_date2
有多種方法可以建立存儲過程:
1.使用Microsoft SQL Server的Enterprise Manager,打開後在左邊的樹目錄中依次打開:Console Root – Microsoft SQL Servers – SQL Server Group – ICBCZJP(Windows NT) – databases – pubs – stored procere – New stored procere,輸入存儲過程後,還可對其進行語法檢測;
2.使用Microsoft SQL Server的Query Analyzer,先連接資料庫伺服器並選擇pubs資料庫。輸入上面的存儲過程並點擊Execute Query(或按F5);
3.使用VB6.0,打開菜單「視圖」/「數據視圖窗口」後,右鍵單擊「數據鏈接」/「新建數據鏈接」;
4.使用ASP腳本創建存儲過程,例wuf75.asp:
<% @LANGUAGE = VBScript %>
<!--#include file="AdoSQL7.asp"-->
<!--#include file="adovbs.inc"-->
<% '' wuf75.asp
Dim StrSQL
''注: & Chr(10) & Chr(13) 完全可以不要, 主要是為了好看
StrSQL="CREATE PROCEDURE OUTemploy ( @job_lvl tinyint OUTPUT, " & Chr(10) & Chr(13) &_
"@hire_date1 datetime, @hire_date2 datetime) AS " & Chr(10) & Chr(13) &_
"select @job_lvl = MAX(job_lvl) from employee " &_
"where hire_date >= @hire_date1 and hire_date <= @hire_date2"
Cnn.Execute StrSQL
Response.Write "創建存儲過程成功"
Cnn.close: Set Cnn = Nothing
%>
存儲過程創建後,除了使用菜單,你還可以使用SQL語句「Drop Procere OUTemploy」刪除它。
例wuf72.asp – 把所需要的輸入參數送入存儲過程並取得輸出結果。
<% @LANGUAGE = VBScript %>
<!--#include file="AdoSQL7.asp"-->
<!--#include file="adovbs.inc"-->
<% '' wuf72.asp
Dim cmdTest, prmTest
Set cmdTest = Server.CreateObject("ADODB.Command")
cmdTest.ActiveConnection = Cnn
cmdTest.CommandText = "OUTemploy" ''存儲過程名
cmdTest.CommandType = adCmdStoredProc
''創建 Parameter 對象
Set prmTest = cmdTest.CreateParameter("job_lvl",adTinyInt,adParamOutput)
cmdTest.Parameters.Append prmTest
''adTinyInt - 1 位元組帶符號整型
''adDbDate - 日期值 (yyyymmdd)
Set prmTest = cmdTest.CreateParameter("hiredate1",adDBDate,adParamInput,,"1993-05-09")
cmdTest.Parameters.Append prmTest
Set prmTest = cmdTest.CreateParameter("hiredate2",adDBDate,adParamInput,,"1994-02-01")
cmdTest.Parameters.Append prmTest
cmdTest.Execute
『下面三種表達方式意思一樣
Response.Write cmdtest("job_lvl") & "<br>"
Response.Write cmdTest.Parameters("job_lvl") & "<br>"
Response.Write cmdTest.Parameters("job_lvl").Value
Cnn.close
Set prmTest = Nothing
Set cmdTest = Nothing: Set Cnn = Nothing
%>
(三)使用返回代碼參數
用Return語句可以從存儲過程返回不同的返回代碼,如下面存儲過程先取得一個記錄集,然後,若有叫Margaret的雇員則返回1,否則返回0。
Create Procere Returnemploy
AS
select emp_id, fname from employee
If Exists(Select fname From employee Where fname=''Margaret'')
Return(1)
Else
Return(0)
例wuf73.asp
<% @LANGUAGE = VBScript %>
<!--#include file="AdoSQL7.asp"-->
<!--#include file="adovbs.inc"-->
<% '' wuf73.asp
Dim cmdTest, prmTest, rsTest
Set cmdTest = Server.CreateObject("ADODB.Command")
cmdTest.ActiveConnection = Cnn
cmdTest.CommandText = "Returnemploy" ''存儲過程名
cmdTest.CommandType = adCmdStoredProc
Set prmTest = cmdTest.CreateParameter("ReturnValue",adInteger,adParamReturnValue)
cmdTest.Parameters.Append prmTest
Set rsTest = cmdTest.Execute()
While Not rsTest.EOF
Response.Write rsTest(0) & " ][ " & rsTest(1) & "<br>"
rsTest.MoveNext
Wend
rsTest.Close: Set rsTest = Nothing
''返回 cmdtest("ReturnValue") 之前,必須先關閉rsTest, 否則結果錯誤
If cmdtest("ReturnValue") = 1 Then
Response.Write "有該雇員"
Else
Response.Write "無該雇員"
End If
Cnn.close
Set prmTest = Nothing
Set cmdTest = Nothing: Set Cnn = Nothing
%>
三、如何處理大數據
這里的「大數據」主要是指Text(大文本)和image(圖像)欄位,採用前面所述的方法無法正確獲取其數據。必須首先使用Size = rsTest(0).ActualSize獲取欄位值的實際長度,然後再使用rsTest(0).GetChunk(Size)取得數據。在實際使用過程中,由於這些欄位都比較大,為了節省、合理使用伺服器資源,一般均採取分段讀取的方法。例wuf74.asp:
<% @LANGUAGE = VBScript %>
<!--#include file="AdoSQL7.asp"-->
<!--#include file="adovbs.inc"-->
<% '' wuf74.asp
Dim StrSQL, rsTest
『pr_info 是一個文本欄位
StrSQL = "Select pr_info,pub_id From pub_info"
Set rsTest = Cnn.Execute(StrSQL)
Dim BasicSize, BeginSize, LText
Do While Not rsTest.EOF
Response.Write rsTest(1) & "<br>"
『每次讀取 1024位元組
BasicSize = 1024
BeginSize = 0
While BeginSize < rsTest(0).ActualSize
LText = rsTest(0).GetChunk(BasicSize)
BeginSize = BeginSize + BasicSize
『逐段輸出到客戶端
Response.Write LText
Wend
Response.Write "<br><br>"
rsTest.MoveNext
Loop
Cnn.close
Set rsTest = Nothing: Set Cnn = Nothing
%>
在本例中,每次最多讀取1024位元組,分多次讀完。反之,如果將大數據寫至資料庫中,方法類似上面,不過不是使用GetChunk方法,而是使用AppendChunk方法:
rsTest(0).AppendChunk Ltext
注意:最後介紹一個關於SQL Server資料庫的小技巧,如果你遇到過這種情況:資料庫的中文數據顯示出來均是亂碼,請不要驚慌。你只要去我的站點下載sqlsrv32.dll覆蓋「C:\Windows\System」下的同名文件就可以了。問題發生的源頭是SQL Server驅動程序,典型的情況發生在Windows98第二版(SQL Server驅動程序的版本號為3.70.06.23)或Windows2000中或者安裝了MDAC2.5(
⑦ conn.Execute,我想在ASP里同時執行多條SQL語句,應該怎麼寫代碼,哪位大俠可以幫幫我,最好給個實例代碼
sql="XXXXXXXX" 查詢sql
rs.open sql,conn,1,1
if not rs.eof then
sql="XXXXX" 這里LZ可以寫你要更新的刪除的sql語句UPDATE Delete 等激困粗
conn.Execute sql
這里可以多條使用的不沖明鎮突
sql="XXXXX" 這里LZ可以寫你要更新的刪除的sql語句UPDATE Delete 等
conn.Execute sql
。
。
。
。尺態
end if
rs.close
⑧ 舉例說明在asp環境下,實現sql注入的一般過程謝謝···
譬如你有一條SQL查詢是
SELECT * FROM 用戶表 WHERE usename = '用戶名' and password = '密碼'
如果要注入,只需要令usernusename = '用戶名' or 1 = 1',密碼我隨意給
這樣,注入後的SQL就變成為
SELECT * FROM 用戶表 WHERE usename = '用戶名' OR 1 = 1 and password = '密碼'
也可以令usename = '用戶名' '--'
--在sql裡面是注釋用的,所以sql變為
SELECT * FROM 用戶表 WHERE usename = '用戶名' -- and password = '密碼'
跳過你的密碼驗證了哦。。
⑨ 舉例說明在asp環境下,實現sql注入的一般過程
譬如你有一條SQL查詢是
SELECT * FROM tab WHERE username = ? AND password = ?目的是要驗證用戶名和密碼都正確,假設zhangsan為合法告寬用戶,但是我不知道密碼
我如果要注入,只需要令username = 'user ''or 1 = 1',密碼我隨意給
這樣,注入後的SQL就變成為
SELECT * FROM tab WHERE usename = 'zhangsan' OR 1 = 1 and password = 'xxx'
看到沒?你後面的密碼驗證沒用了
也可以令username = 'zhangsan''--'
--在sql裡面是注釋用的,所以sql變為
select * from tab where username ='zhangsan'枝隱 -- and password = 'xxx'
跳猛友廳過你的密碼驗證了哦。。
⑩ 在ASP.NET中怎麼調用SQL Server中的函數,請給出具體的例子
public static void exec_proc_1()
{
SqlCommand cmd = new SqlCommand("proc_1", con);//proc_1為存凳鬧敏儲過程名,con為已經建立好的連棗枝接
cmd.CommandType = CommandType.StoredProcere;//設置執行類型為執行存儲過彎返程
cmd.ExecuteNonQuery();
}
具體請參考
http://hi..com/kaixinpengpeng/blog/item/052f590f84f303216059f31d.html/cmtid/7c446ad02bb2a581a1ec9c47