直播中
方法2(RecordSet)
const adCmdTable=&H0002
set conn=Server.CreateObject("ADODB.Connection")
set rs=Server.Createobject("ADODB.RecordSet")
conn.open "Driver={Microsoft Access Driver (*.mdb)};DBQ="& _
Server.Mappath("/source_asp")&"/property/employee.mdb;"
rs.ActiveConnection=conn
rs.open "employee",,,adCmdTable
rs.addnew
rs("Job_ID")=4
rs("Fri_Name")="bill"
rs("Last_Name")="Gates"
rs.update
rs.close
conn.close
從上面的例子就可以看出來了,這兩個對象在處理一些問題上所用的不同的方法.RecordSet對象似乎更加好理解一些,因為它加入了一些在ANSI SQL中沒有的元素,它其實是用 SQL在數(shù)據(jù)庫上產(chǎn)生一個記錄集,然后用一個游標(biāo)來指向這個記錄集,超作該游標(biāo)來遍歷這個記錄集。但在性能上來講的話Command的性能也相對要優(yōu)越些.其可重應(yīng)用性也非常的好。而且如果你是批量的加入記錄的話,你也能體會到第一種方案的好處了,因為Command對象就是將SQL產(chǎn)生的記錄集作為整體來處理。下面詳細(xì)介紹Command對象的屬性、方法和集合。
1、 CreateParameter方法:用來產(chǎn)生一個Parameter對象,常用的寫法為Set param=comm.CreateParameter(name,type,direction,size,value),其中name為參數(shù)的引用名,在后面引用參數(shù)的值時會有用;type為指定參數(shù)的類型,例如整數(shù)為adInteger;direction指定參數(shù)是輸入還是輸出,相應(yīng)的值為adParamInput和adParamOutput;size指定參數(shù)的最大長度或最大的值;value指定參數(shù)的值??梢詫⒏鱾€選項分開來寫,下面的兩種寫法是等價的:
Set param= comm.CreateParameter(name,type,direction,size,value)
和
set param= comm.CreateParameter(name,type,direction,size)
param.value=value
下面的方法其靈活性更大。大家請注意,在使用了CreateParameter方法后只是建立了新的 parameter對象,還需使用Parameter對象的append方法將該參數(shù)傳遞給Command對象。
2、 Execute方法:在指定了CommandText后,并將參數(shù)傳遞出去后,用Execute方法來完成執(zhí)行。
3、 ActiveConnection屬性:用來指定與Connection對象的連接,這里的一個技巧就是不同的Command對象指向同一個Connection連接。
4、 CommandText屬性:其值可以是一條SQL命令句,可以是一個表名,也可以是一個StoredProcedure名。
5、 CommandType屬性:它的值由CommandText相應(yīng)值的給出,分別為adCmdText,adCmdTable,adCmdStoredProc。與前面在講Connection對象的Execute方法中的相應(yīng)的選項的含義相同。
6、 CommandTimeOut屬性:設(shè)定命令執(zhí)行的超時的值。
7、 Properties集合:我們不多講了,與Connection對象的Property集合相差不多。
8、 Parameters集合:也就是參數(shù)對象的集合了,他有主要Item方法、Append方法,和Count屬性,用法與Property對象及Error對象的相應(yīng)屬性和方法類似,下面給出一個示例:
const adCmdText=&H0001
const adInteger=3
const adVarChar=200
Const adParamInput = &H0001
set conn=Server.CreateObject("ADODB.Connection")
set comm=Server.Createobject("ADODB.Command")
conn.open "Driver={Microsoft Access Driver (*.mdb)};DBQ="& _
Server.Mappath("/source_asp")&"/property/employee.mdb;"
comm.ActiveConnection=conn
comm.CommandType=adCmdText
comm.CommandText="Insert Into employee (Job_ID,Fri_Name,Last_Name)"& _
"Values(?,?,?);"
set param=comm.CreateParameter("ID",adInteger,adParamInput,3)
param.value=14
comm.Parameters.Append param
set param=comm.CreateParameter("FN",adVarChar,adParamInput,255,"bill")
comm.Parameters.Append param
set param=comm.CreateParameter("LN",adVarChar,adParamInput,255,"Gates")
comm.Parameters.Append param
comm.Execute
conn.close
"The folowing statments show the value of parametrs
dim i
for i=0 to comm.parameters.count-1
response.write comm.parameters.item(i)&"
"
next
當(dāng)然,我們在引用參數(shù)時也可以不用數(shù)字,而用前面在CreateParameter時定義的名字,例如:FN、ID等等。另外我們可以將上面的程序的顯示部分改為
dim key
for each key in comm.parameters
response.write key&"
"
next
下面我想重點講一講StoredProcedure,它的強大足以讓我們對它關(guān)注,當(dāng)然這其中會涉及到一些SQLServer的知識