刚学ADO,帮忙解释几个疑问吧

rcom10002 2005-11-13 08:48:35
两帖一起结,分数累加,请答完的到
http://community.csdn.net/Expert/topic/4389/4389175.xml?temp=.8172876 领附加分

1.Command是不是最好只用于数据操作啊,而且比Connection和Recordset的好处在于可以使用参数,这样理解对吗?

2.Command可以用来SELECT,可Set rsTarget = cmd.Execute后,还有很多限制
限制:本教程将不使用参数化命令,因为需要使用 Command.Execute 方法以参数替代占位符‘?’,但该方法不允许指定 Recordset 游标类型和锁定选项(ADO2.1的参考手册)。
这样的话我连RecordCount都不能用了,我想问的是,Command返回记录集的功能是不是摆设,不是很实用的啊,Connection跟Recordset做的比它都好。

3.当查询的时候,Set rs = Command.Execute(AffectedCount)执行完,怎么不能返回记录条数啊,而Call conn.Execute(sqlForExecute, affectedCount)就能返回
...全文
126 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
saiko 2005-11-14
  • 打赏
  • 举报
回复

1.Command是不是最好只用于数据操作啊,而且比Connection和Recordset的好处在于可以使用参数,这样理解对吗?
>> 它只是执行某一个SQL语句,不用它还好,通过是通过
Connection.excute "你的SQL语句"


2.Command可以用来SELECT,可Set rsTarget = cmd.Execute后,还有很多限制
限制:本教程将不使用参数化命令,因为需要使用 Command.Execute 方法以参数替代占位符‘?’,但该方法不允许指定 Recordset 游标类型和锁定选项(ADO2.1的参考手册)。
这样的话我连RecordCount都不能用了,我想问的是,Command返回记录集的功能是不是摆设,不是很实用的啊,Connection跟Recordset做的比它都好。
>> 返回的记录集可以输出到 xxgird控件里


3.当查询的时候,Set rs = Command.Execute(AffectedCount)执行完,怎么不能返回记录条数啊,而Call conn.Execute(sqlForExecute, affectedCount)就能返回
>> 在执行前将Conn.CursorLocation = adUseClient

4.Connection我还用关闭吗,我就让它一直开着,等到程序终止不可以吗
>> 在整个程序中可以定义为一个全局的,可以一直开着。经常 连接/关闭 耗资源
rcom10002 2005-11-13
  • 打赏
  • 举报
回复
TO: cuilei197979(风) "我没有用过你的什么Command"

ADO 对象总结

对象 说明
Connection 启用数据的交换。
Command 体现 SQL 语句。
Parameter 体现 SQL 语句参数。
Recordset 启用数据的定位和操作。
Field 体现 Recordset 对象列。
Error 体现连接错误。
Property 体现 ADO 对象特性。
上官云峰 2005-11-13
  • 打赏
  • 举报
回复
我没有用过你的什么Command
我只是用connection,recordset
给你个例子吧
你试试这样做,引用ado
Dim Con As ADODB.Connection
Dim rs As ADODB.Recordset
Set Con = New ADODB.Connection
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\计划管理系统.mdb;Persist Security Info=False"
Con.Open strCon
Set rs = New ADODB.Recordset
'添加记录
strsql="select * from table"
rs.Open strsql, Con, adOpenKeyset, adLockOptimistic
rs.addnew
rs!字段1=text1.text
rs!字段2=text2.text
........
rs.update
rs.close
set rs=nothing
'修改记录
strsql="select * from table where id=1"
rs.Open strsql, Con, adOpenKeyset, adLockOptimistic
rs!字段1=text1.text
rs!字段2=text2.text
........
rs.update
rs.close
set rs=nothing

'删除记录
strsql="delete from table where id=1"
rs.Open strsql, Con, adOpenKeyset, adLockOptimistic

rcom10002 2005-11-13
  • 打赏
  • 举报
回复
4.Connection我还用关闭吗,我就让它一直开着,等到程序终止不可以吗

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧