Command的用法问题
研究Command的用法,发现有许多不明白的问题,麻烦大侠们指导一下 :)
1 Command和Connection都可以执行非动态sql,两者有何区别?
2 Command在调用存储过程的时候,可以调用Refresh自动生成Parameter参数
在调用动态sql时有没有类似的函数呢。 我试过以下代码,执行时总是出错,
Error
Code = 80040e51
Code meaning = IDispatch error #3153
Source = (null)
Description = (null)
_CommandPtr Cmd1;
Cmd1.CreateInstance( __uuidof( Command ) );
Cmd1->ActiveConnection = pConnection;
Cmd1->CommandType = adCmdText;
Cmd1->CommandText = _bstr_t("SELECT taskid FROM sr_gl_task2 WHERE taskid = ?");
//下面语句出错
Cmd1->Parameters->Refresh();
3 我曾经想过自己写一个Refresh,但是有个问题没想明白。Refresh是如何知道参数的类型的(个数可以通过分析sql文本),但是类型不知道如何处理。不知道把类型全部设置成adVarChar是否可行,会不会影响执行效率?当我给一个adVarChar型参数传进一个long的变量时会出现什么情况?
[解决办法]
帮顶一下,等高手
[解决办法]
在客户端应该是不能确定参数类型的。
有可办法可以了解ado做了什么。就是通过sql server事件探查器来查看具体传到数据库的sql语法。