asp Command 参数 ?_1 没有默认值
在asp程序中,通过Command对象和Parameters容器,实现对数据库的带参数查询。用这个方法替代管用的组合查询语句方法。
在asp中,我企图通过Command对象,使用Parameters容器实现数据库查询参数化,以避免注入问题,并且使程序更具可读性和便于修改。
默认情况下,Parameters容器使用队列性参数,参数不具名(可以具名,不过在传入数据库时是不具名的),所有参数在查询语句中,都是用问号(?)来表示。这样做的优点是不需要给每一个参数起名,只需要严格按照次序提供参数就可以了。
缺点更明显,一是参数的次序要准确无误,二是如果提供的参数有错误,比较难调试。错误提示只会这样提示:
参数?_1没有默认值
这个错误到底是指第一个参数呢,还是指第二个参数?还是其它参数?按照实践经验来说,是指第一个参数。不过我不敢确定。
更好的做法是给Command对象指定一下NamedParameters属性,像这样:
Cmd.NamedParameters = True
这样就可以像asp.net一样,使用具名参数了。当参数有错误的时候,系统也能够准确无误的给出提示,告诉你是哪个参数出问题了。
这个问题话了我很长了时间来解决。引发这个错误的,是一个低级错误(传错了参数)。不过我要感谢这个低级错误,是它引导我去深入理解Command对象及其参数的传递、赋值。
至于使用Command加Parameters容器的做法是否能够为asp提高安全性,还有待进一步验证。敬请期待。
参考链接:http://www.z6688.com/info/34808-1.htm