向大家请教个问题,弄了很久还是解决不了我想用ADO方法使用Oracle数据库,连接字符串中Provider=MSDASQL.1,数据源用的是Oracle in OraHome92在对表进行访问时出现了如下错误正确连接到数据库后
//SQL
_bstr_t strSQL("SELECT * FROM XD_DOT WHERE DDT = :v1 ORDER BY SEQUENCE");//初始化CommandPtr
_CommandPtr pAdoCmd;
pAdoCmd.CreateInstance(__uuidof(Command));
pAdoCmd->ActiveConnection = m_pConnection;
pAdoCmd->CommandType = adCmdText;
pAdoCmd->CommandText = strSQL;
_ParameterPtr pParam;//往CommandPtr里加参数
VARIANT vtRoyalty;
vtRoyalty.vt = VT_BSTR;
vtRoyalty.bstrVal = (_bstr_t)ddtCode;
pParam = pAdoCmd->CreateParameter("v1", adBSTR, adParamInput, 5, vtRoyalty);
pAdoCmd->Parameters->Append(pParam);//执行
m_pRecordset = pAdoCmd->Execute(NULL, NULL, adCmdText);
异常就在执行那里抛出了。具体的错误记录是:
IDispatch error #3088
[Microsoft][ODBC driver for Oracle][Oracle]ORA-01008: 并非所有变量都已关联我在网上查了半天,有人说如果把SQL语句里的“:v1”换成“?”就可以。可如果有:v2,v3,v4...怎么办?
是不是连接字符串中的Provider或数据源配置时就弄错了,向我这样配置是用的ADO方式吗?希望大家能帮忙,十分感谢!!!
//SQL
_bstr_t strSQL("SELECT * FROM XD_DOT WHERE DDT = :v1 ORDER BY SEQUENCE");//初始化CommandPtr
_CommandPtr pAdoCmd;
pAdoCmd.CreateInstance(__uuidof(Command));
pAdoCmd->ActiveConnection = m_pConnection;
pAdoCmd->CommandType = adCmdText;
pAdoCmd->CommandText = strSQL;
_ParameterPtr pParam;//往CommandPtr里加参数
VARIANT vtRoyalty;
vtRoyalty.vt = VT_BSTR;
vtRoyalty.bstrVal = (_bstr_t)ddtCode;
pParam = pAdoCmd->CreateParameter("v1", adBSTR, adParamInput, 5, vtRoyalty);
pAdoCmd->Parameters->Append(pParam);//执行
m_pRecordset = pAdoCmd->Execute(NULL, NULL, adCmdText);
异常就在执行那里抛出了。具体的错误记录是:
IDispatch error #3088
[Microsoft][ODBC driver for Oracle][Oracle]ORA-01008: 并非所有变量都已关联我在网上查了半天,有人说如果把SQL语句里的“:v1”换成“?”就可以。可如果有:v2,v3,v4...怎么办?
是不是连接字符串中的Provider或数据源配置时就弄错了,向我这样配置是用的ADO方式吗?希望大家能帮忙,十分感谢!!!
解决方案 »
- 创建用户
- ldap 的plsql 方法 DBMS_LDAP.search_s 中文参数问题
- TNSPING 通 SQLPLUS 通 应用程序连接失败!!是怎么会事啊?
- SQL 错误: ORA-01858: 在要求输入数字处找到非数字字符
- SQL查询 会的人应该很简单 在线等
- 请问sql的select语句如何显示最后的10条记录?
- 出血本啦!!!200分求一存储过程!好难呀!
- 关于oracle与VB的问题
- 教教小弟该怎么做啊各位大哥!!!!!!!!急啊!!!!
- ALTER SESSION SET SQL_TRACE TRUE'的若干问题
- 问各位大侠一个数据库查询问题?
- 在存储过程中使用sequence的问题
pParam = pAdoCmd->CreateParameter(2, adBSTR, adParamInput, 5, vtRoyalty);试试看?good luck