ado.net总结:WebComputing━ADO总结报告(2)



3、Error对象:
  前面讲到了Connection对象是用于和各类数据库进行挂接但在此过程中将会出现些不可预测因而有了Error这个对象首先要清楚个概念Error对象是在连接数据库时产生而并非那些运行时实时也就是我们常用 _disibledevent=>conn.ConnectionString=\"Driver={Microsoft Access Driver (*.mdb)};DBQ=\" _
&Server.Mappath(\"/source_asp\")&\"/property/employee.mdb;\"
conn.open
conn.errors.count>0 then
response.write \"connection to database cause problem!\"&\"<br>\"
for i =0 to conn.errors.count-1
response.write conn.errors.item(i)&\"<br>\"
next

response.write \"connection to database successfully!\"
end
conn.close
%>
  对于Err对象通用模板处理我将在讨论RecordSet对象时给出
  下面我们将讨论ADO第 2个大对象━Command对象个做网站WebSite朋友告诉我他在平时使用ASP挂接数据库时很少使用Command对象原因是Command对象不好使用而喜欢用RecordSet对象可以这么说Command对象是整个ADO模型中最难掌握但也是功能和性能最好特别是它StoredProcedue它将处理过程大部分都使用了在SQL Server上已经编译和优化了存储过程用过SQL Server朋友都会明白下面就让我们来看Command对象

4、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
conn=Server.CreateObject(\"ADODB.Connection\")
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 o employee (Job_ID,Fri_Name,Last_Name)\"& _
&\"values(?,?,?)\"
param=comm.CreateParameter(\"ID\",adInteger,adParamInput,3,4)
comm.Parameters.Append param
param=comm.CreateParameter(\"FN\",adVarChar,adParamInput,255,\"bill\")
comm.Parameters.Append param
param=comm.CreateParameter(\"LN\",adVarChar,adParamInput,255,\"Gates\")
comm.Parameters.Append param
comm.Execute
conn.close

思路方法2(RecordSet)
const adCmdTable=&H0002
conn=Server.CreateObject(\"ADODB.Connection\")
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.add
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)

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
conn=Server.CreateObject(\"ADODB.Connection\")
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(?,?,?);\"
param=comm.CreateParameter(\"ID\",adInteger,adParamInput,3)
param.value=14
comm.Parameters.Append param
param=comm.CreateParameter(\"FN\",adVarChar,adParamInput,255,\"bill\")
comm.Parameters.Append param
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知识


Tags:  ado2.5 ado2.8 ado2.7 ado.net总结

延伸阅读

最新评论

发表评论