Adodb.Command 平时很少注意到的一个参数

ado|command

我们在 ASP 中调用 SQL Server 的存储过程时,如果使用 Adodb.Command 对象,通常使用如下的代码:

dim cmd, rs

set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = conn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "TestProc"
cmd.Parameters.Append cmd.CreateParameter("@a" , adInteger, adParamInput, 4, 1)
cmd.Parameters.Append cmd.CreateParameter("@b" , adVarChar, adParamInput, 50, 'b')
...
set rs = cmd.Execute

今天我在调试一个程序的时候发现, ASP 页面上提示某个参数没有赋值, 而实际上我没赋值的却是另一个参数。 于是我打开 Sql Server 的事件探察器, 执行了一遍程序, 捕捉到实际上 ASP 发送给 Sql Server 的 SQL 语句实际上是如下的形式:

execute TestProc 1, 'b', ....

原因现在很明显了,ADO 引擎没有把对存储过程的调用翻译为完整的语法, 而是采用了上述简写方式, 这样,当中间某个参数丢失的时候, 就有可能因为错位而误判为另一个参数丢失。
然后我查了一下 Command 对象的属性, 加了如下一句:

cmd.NamedParameters = true

也就是说指定要使用显式命名的变量形式, 然后再执行一边程序, 发现事件探察器中捕捉到的语句变成了:

exec TestProc @a = 1, @b = 'b', ...

报错的参数也是正确的。

时间: 2024-10-26 02:17:25

Adodb.Command 平时很少注意到的一个参数的相关文章

linux 内存-centos,1g内存,只有100多M可用,catched和buffers加一起很少,内存哪去了?

问题描述 centos,1g内存,只有100多M可用,catched和buffers加一起很少,内存哪去了? top - 22:48:08 up 2:26 1 user load average: 0.00 0.03 0.27Tasks: 89 total 1 running 88 sleeping 0 stopped 0 zombieCpu(s): 1.4%us 0.6%sy 0.0%ni 75.2%id 22.8%wa 0.0%hi 0.0%si 0.0%stMem: 1018600k to

胡士泰为防偷听很少用手机

今年46岁的胡士泰无论如何也想象不到,一夜之间,他的名字在中国家喻户晓.而在此之前,这已经是一个在中国钢铁厂原料部门无人不知的人物. 随着震惊海内外的力拓"间谍门"事件公布,力拓.必和必拓.淡水河谷三大矿山驻华机构以及那里的员工,一时成为漩涡中心. 胡士泰们出自何方?国际矿业巨头又如何在中国网络和物色到这些重量级人物?他们在铁矿石较量中,又扮演着什么样的角色? 原籍天津 北大毕业 1963年出生的胡士泰,原籍天津,初中毕业后在天津一个机械工业学校学习两年车工专业.高考恢复后,他于197

互联网的市场很少存在竞争?

鲜果上线了有段时间了,前两天还和他们的市场人员简单的聊了聊,看看他们让我想起了1年前的抓虾. 抓虾2006年大概也是5月份左右的样子正式诞生的,小于10人的团队,专注于产品,一套漂亮的FACE,第一个进入在线RSS阅读领域,获得了不少关注.那时候RSS阅读都是离线的,Greader那时候还是相当难用,市场氛围也还算好,几点因素,抓虾被推上了焦点,迅速抢占了大半的市场,模式的改变,或者说更符合用户习惯,从前的竞争者一个一个销声匿迹. 抓虾以产品获得了用户的认可,但也随着产品的调整又逐渐失去了部分市

(ADODB.Command)对象的用法,用CASE调用的REM/DEL/UPDATE/

ado|command|对象|ado <!--#include file="conn.asp"--><%set rs=server.createobject("adodb.recordset")sql="select * from jtopic order by j_id desc"rs.open sql,conn,1,1%> <script language="javascript">fu

为什么CPU很少会坏?

  从两千年左右接触计算机到现在似乎没有听说过CPU坏掉.CPU是不是真的很少会坏?是品控严格还是这类产品结构上就不容易损坏?或者其他? CPU还是会坏的. 虽然层层封装的保护加上生产工厂的良品控制,CPU很难因为外界原因造成芯片的物理损坏,但是断针.超频或雷击造成电压过高烧毁.遇水短路等等原因还是会让CPU变得不可用. 那一直正常使用,CPU是不是就是一个可以永久工作的元器件呢?其实也不是,它也会在使用中损耗,正常使用中也有它自己的寿命.CPU的正常损坏,最主要的原因是电子迁移.现代CPU使用

电脑本地连接为何会出现收到数据包字节很少的问题

  相信每一个电脑用户都知道,电脑连接了网络后,本地连接要连接上,且发送数据包字节和收到数据包字节两者都要正常,网络才能够正常使用,否则就会出现这样或是那样的问题.不过有的时候,人们会碰到本地连接收到数据包字节很少的情况,碰到这种情况时,要怎么解决呢? 我们先来看看,正确情况下网络连接的数据包显示情况,如下图: 电脑网络本地连接发送数据包字节和收到数据包字节的情况,一般应是收到字节大于发送字节,电脑在发送东西时除外. 有时上网,会发现这样一种情况:网络已经连接上,但是收到数据包字节比发送的数据包

11 个很少人知道但很有用的 Linux 命令

Linux命令行吸引了大多数Linux爱好者.一个正常的Linux用户一般掌握大约50-60个命令来处理每日的任务.Linux命令和它们的转换对于Linux用户.Shell脚本程序员和管理员来说是最有价值的宝藏.有些Linux命令很少人知道,但不管你是新手还是高级用户,它们都非常方便有用. 少有人知道的Linux命令 这篇文章的目的是介绍一些少有人知的Linux命令,它们一定会高效地帮你管理你的桌面/服务器. 1. sudo !!命令 没有特定输入sudo命令而运行,将给出没有权限的错误.那么,

sql-频繁查询一张不会变(很少变)的表,有什么办法提高效率,表中数据较多,大约千万条以上

问题描述 频繁查询一张不会变(很少变)的表,有什么办法提高效率,表中数据较多,大约千万条以上 如题,对于频繁查询一张不会变(很少变)的表,有什么办法提高效率,即使变了,也不需要即时数据,就像缓存一样定期更新一下都行,表中数据较多,大约千万条级别,求思路,对SQL只了解皮毛 解决方案 看你怎么查询,是统计还是取得某个条件的数据,还是根据id找某个数据. 可以采用的方式,索引,创建冗余的临时表和临时字段,存储过程 解决方案二: 另外,sql server 2014/2016数据库,支持内存表,只要你

openstack ceilometer 采集的数据很少

问题描述 openstack ceilometer 采集的数据很少 ceilometer 采集的数据很少,需要在哪里配置meter的信息吗?