仓酷云

标题: MYSQL网站制作之在Recordset工具中查询纪录的办法 [打印本页]

作者: 不帅    时间: 2015-1-16 22:26
标题: MYSQL网站制作之在Recordset工具中查询纪录的办法
尽管DBaaS模式有缺点,但它还是适合某些客户群体,这为解决方案提供商提供了新的商机。鉴于云服务的增长,解决方案提供商除了拥抱这些技术还有什么选择呢?如果他们不这样做,他们就会冒着被竞争对手击败的风险。但他们不能只想到如何把DBaaS的利润率与企业内部系统相比较。不管是DAO仍是ADO都有两种从Recordset工具中查询纪录的办法:Find办法和Seek办法。在这两种办法中可让你指定前提举行查询与其响应的纪录,一样平常而言,在不异前提下,Seek办法供应了比Find办法更好的功能,由于Seek办法是基于索引的。由于这个缘故原由基础供应者必需撑持Recordset工具上的索引,能够用Supports(adSeek)办法断定基础供应者是不是撑持Seek,用Supports(adIndex)办法断定供应者是不是撑持索引。(比方,OLEDBProviderforMicrosoftJet撑持SeekIndex。),请将Seek办法和Index属性分离利用。假如Seek没有找到所需的行,将不会发生毛病,该即将被放在Recordset的开头处。实行此办法前,请先将Index属性设置为所需的索引。此办法只受服务器端游标撑持。假如Recordset工具的CursorLocation属性值为adUseClient,将不撑持Seek。只要当CommandTypeEnum值为adCmdTableDirect时翻开Recordset工具,才可使用此办法。ADOFind办法
DAO包括了四个“Find”办法:FindFirst,FindLast,FindNextFindPrevious.
DAO办法ADOFind办法
上面的一个例子树模了怎样用ADOFind办法查询纪录:
SubFindRecord(strDBPathAsString,_
strTableAsString,_
strCriteriaAsString,_
strDisplayFieldAsString)
Thisprocedurefindsarecordinthespecifiedtableby
usingthespecifiedcriteria.
Forexample,tousethisproceduretofindrecords
intheCustomerstableintheNorthwinddatabase
thathave"USA"intheCountryfield,youcan
usealineofcodelikethis:
FindRecord_
"c:ProgramFilesMicrosoftOfficeOfficeSamplesNorthwind.mdb",_
"Customers","Country=USA","CustomerID"
DimcnnAsADODB.Connection
DimrstAsADODB.Recordset
OpentheConnectionobject.
Setcnn=NewADODB.Connection
Withcnn
.Provider="Microsoft.Jet.OLEDB.4.0"
.OpenstrDBPath
EndWith
Setrst=NewADODB.Recordset
Withrst
Openthetablebyusingascrolling
Recordsetobject.
.OpenSource:=strTable,_
ActiveConnection:=cnn,_
CursorType:=adOpenKeyset,_
LockType:=adLockOptimistic
Findthefirstrecordthatmeetsthecriteria.
.FindCriteria:=strCriteria,SearchDirection:=adSearchForward
Makesurerecordwasfound(notatendoffile).
IfNot.EOFThen
Printthefirstrecordandallremaining
recordsthatmeetthecriteria.
DoWhileNot.EOF
Debug.Print.Fields(strDisplayField).Value
Skipthecurrentrecordandfindnextmatch.
.FindCriteria:=strCriteria,SkipRecords:=1
Loop
Else
MsgBox"Recordnotfound"
EndIf
ClosetheRecordsetobject.
.Close
EndWith
Closeconnectionanddestroyobjectvariables.
cnn.Close
Setrst=Nothing
Setcnn=Nothing
EndSub
比方,用用这个历程查询“罗期文商贸”示例数据库中“客户”表的“国度”即是USA的纪录,可使用上面的代码:
FindRecord“c:ProgramFilesMicrosoftOfficeOfficeSamplesNorthwind.mdb”,_
“Customers”,“Country=USA”,”CustomerID”
(译者注:假如你安装的是简体中文版要将响应的字段名改成中文)
ADOSeek办法
由于ADOSeek办法利用Index,最好是在用这个办法之前指定一个索引,但是,假如你没有指定索引,Jetdatabaseengine将用主键。
假如你必要从多个字段中指定值做为搜刮前提,能够用VBA中的Array函数传送这些值到参数KeyValues中往。假如你只必要从一个字段中指定值做为搜刮前提,则不必要用Array函数传送。
Find办法一样,你能够用BOF大概EOF属性测试是不是查询到纪录。
上面的一个例子显现了怎样用ADOSeek办法查询纪录:
SubSeekRecord(strDBPathAsString,_
strIndexAsString,_
strTableAsString,_
varKeyValuesAsVariant,_
strDisplayFieldAsString)
Thisprocedurefindsarecordbyusing
thespecifiedindexandkeyvalues.
Forexample,tousethePrimaryKeyindexto
findrecordsintheOrderDetailstableinthe
NorthwinddatabasewheretheOrderIDfieldis
10255andProductIDis16,andthendisplaythe
valueintheQuantityfield,youcanusealine
ofcodelikethis:
SeekRecord_
"c:ProgramFilesMicrosoftOfficeOfficeSamplesNorthwind.mdb",_
"PrimaryKey","OrderDetails",Array(10255,16),"Quantity"
DimcnnAsADODB.Connection
DimrstAsADODB.Recordset
OpentheConnectionobject.
Setcnn=NewADODB.Connection
Withcnn
.Provider="Microsoft.Jet.OLEDB.4.0"
.OpenstrDBPath
EndWith
Setrst=NewADODB.Recordset
Withrst
Selecttheindexusedtoorderthe
dataintherecordset.
.Index=strIndex
Openthetablebyusingascrolling
Recordsetobject.
.OpenSource:=strTable,_
ActiveConnection:=cnn,_
CursorType:=adOpenKeyset,_
LockType:=adLockOptimistic,_
Options:=adCmdTableDirect
FindtheorderwhereOrderId=10255and
ProductId=16.
.SeekKeyValues:=varKeyValues,SeekOption:=adSeekFirstEQ
Ifamatchisfound,printthevalueof
thespecifiedfield.
IfNot.EOFThen
Debug.Print.Fields(strDisplayField).Value
EndIf
ClosetheRecordsetobject.
.Close
EndWith
Closeconnectionanddestroyobjectvariables.
cnn.Close
Setrst=Nothing
Setcnn=Nothing
EndSub
比方,用主键索引查询“罗期文商贸”示例数据库中“定单明细”表的“定单编号”即是10255而且产物编号即是16的”数目”的值,可使用上面的代码:
SeekRecord“c:ProgramFilesMicrosoftOfficeOfficeSamplesNorthwind.mdb”,_
“PrimaryKey”,“OrderDetails”,Array(10255,16),”Quantity”
(译者注:假如你安装的是简体中文版要将示例中援用的响应的字段名改成中文)

由于在MySQL中有如此众多的额外功能可选,诸如存储引擎等,你可以选择最适合你公司的一个,或者尝试选用多个引擎。MySQL开始非常小巧,但是可以随着公司的成长而不断地变强大。
作者: 冷月葬花魂    时间: 2015-1-19 12:37
无法深入到数据库系统层面去了解和探究
作者: 老尸    时间: 2015-1-26 13:55
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
作者: 乐观    时间: 2015-2-10 04:36
如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。
作者: 再见西城    时间: 2015-2-28 19:54
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
作者: 蒙在股里    时间: 2015-3-10 07:48
发几份SQL课件,以飨阅者
作者: 若相依    时间: 2015-3-17 05:34
只能告诉你,学好数据库语言和原理,多见识几种数据库软件,比一棵树上吊死要好。
作者: 简单生活    时间: 2015-3-23 22:13
始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2