WebComputing━ADO總結報告4

來源:互聯網
上載者:User
ado|web 四、Command對象:
  從英語字面的意思就可以看出,Command是用來做命令執行和參數傳遞的。而Command對象的批量參數傳遞,StoredProcude執行等等靈活而強大的功能也是它受到青睞的原因。Command對象主要是向SQL語句、StoredProcude傳遞參數,依靠SQL Server的強大功能來完成資料庫的操作;而RecordSet對象可以說是微軟從新封裝了資料對象,並提供了一系列的方法和屬性來簡化資料庫的編程。我們看下面的一個例子,它用了兩種不同的方法實現了向資料庫中增加一新的記錄條。從中可以清楚的看到Command對象與RecordSet對象的不同點。
方法1(Command)
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};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,4)
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

方法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在資料庫上產生一個記錄集,然後用一個遊標來指向這個記錄集,超作該遊標來遍曆這個記錄集。但在效能上來講的話Command的效能也相對要優越些.其可重應用性也非常的好。而且如果你是批量的加入記錄的話,你也能體會到第一種方案的好處了,因為Command對象就是將SQL產生的記錄集作為整體來處理。下面詳細介紹Command對象的屬性、方法和集合。

   1、 CreateParameter方法:用來產生一個Parameter對象,常用的寫法為Set param=comm.CreateParameter(name,type,direction,size,value),其中name為參數的引用名,在後面引用參數的值時會有用;type為指定參數的類型,例如整數為adInteger;direction指定參數是輸入還是輸出,相應的值為adParamInput和adParamOutput;size指定參數的最大長度或最大的值;value指定參數的值。可以將各個選項分開來寫,下面的兩種寫法是等價的:
Set param= comm.CreateParameter(name,type,direction,size,value)

set param= comm.CreateParameter(name,type,direction,size)
param.value=value
  下面的方法其靈活性更大。大家請注意,在使用了CreateParameter方法後只是建立了新的 parameter對象,還需使用Parameter對象的append方法將該參數傳遞給Command對象。
  2、 Execute方法:在指定了CommandText後,並將參數傳遞出去後,用Execute方法來完成執行。
  3、 ActiveConnection屬性:用來指定與Connection對象的串連,這裡的一個技巧就是不同的Command對象指向同一個Connection串連。
  4、 CommandText屬性:其值可以是一條SQL命令句,可以是一個表名,也可以是一個StoredProcedure名。
  5、 CommandType屬性:它的值由CommandText相應值的給出,分別為adCmdText,adCmdTable,adCmdStoredProc。與前面在講Connection對象的Execute方法中的相應的選項的含義相同。
  6、 CommandTimeOut屬性:設定命令執行的逾時的值。
  7、 Properties集合:我們不多講了,與Connection對象的Property集合相差不多。
  8、 Parameters集合:也就是參數對象的集合了,他有主要Item方法、Append方法,和Count屬性,用法與Property對象及Error對象的相應屬性和方法類似,下面給出一個樣本:
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)&"<br>"
next
  當然,我們在引用參數時也可以不用數字,而用前面在CreateParameter時定義的名字,例如:FN、ID等等。另外我們可以將上面的程式的顯示部分改為
dim key
for each key in comm.parameters
response.write key&"<br>"
next
  下面我想重點講一講StoredProcedure,它的強大足以讓我們對它關注,當然這其中會涉及到一些SQLServer的知識



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。