关于连续使用Command对象进行数据库读写的奇怪问题……

sinzy 2003-06-29 02:37:41
例如:
Set cmd = Server.CreateObject("ADODB.Command")
With cmd
.ActiveConnection = conn 'conn已经存在
.CommandText = "select * from tablename where id = ?"
Set rs = .Execute(, Array(1))
End With

以上代码用Command对象(带参数)获取数据……接下来,就继续使用这个cmd进行数据写入:
cmd.CommandText = "insert into tablename (seg1, seg2) values (?, ?)"
cmd.Execute , Array("seg1_value", "seg2_value"), adExecuteNoRecords

此时报错,说什么参数类型错误,或者冲突。
我初步断定是因为对Command对象进行“连续”地读写造成的,因为命令是同步执行,可能读取的命令还没有执行完毕,因此阻止了写入命令。
不知道我是否判断正确,恳请大虾指点!
谢谢!
...全文
56 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinzy 2003-06-29
  • 打赏
  • 举报
回复
我也很疑惑。
其实就是用同一个Command对象,先后执行以数组形式提供参数的SQL语句(数据库是Access),一个是SELECT读数据,一个是INSERT INTO写数据。
若我首先执行写入操作,后执行读取操作,则一切OK,而当先读取再写入时,就报错了,错误信息是:
ADODB.Command error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

/Try/adodbCommand.asp, line 38

已经试了saucer老大的办法:关闭Execute返回的记录集,but it doesn't help...
sinzy 2003-06-29
  • 打赏
  • 举报
回复
嘻嘻,我是想模仿ASP.NET中的一些操作:)
再说,要调用带参数的存储过程,Command对象是最好选择啊~
saucer 2003-06-29
  • 打赏
  • 举报
回复
i doubt, try to call
rs.Close()

before you call
cmd.Execute
again

also try
cmd.Execute , Array("seg1_value", "seg2_value"), adCmdText + adExecuteNoRecords
hb2005 2003-06-29
  • 打赏
  • 举报
回复
一般都不用comand对象,你为什么不试着用ado的connection对象啊

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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