小弟我用vc的ado对数据库进行操作,在记录集中对记录的选择和删除都可以,但是不能往数据库里插入数据
sql_="insert into teller (tel_id,telnam,telgrp,telpwd) values ('"+m_sTelNo+"','"+m_sTelNm+"','"+m_sTelTyp+"','000000')";
m_pRs->Open(sql_, m_pLConn.GetInterfacePtr(),adOpenDynamic, adLockPessimistic,adCmdText);
跟踪调试发现
inline HRESULT Recordset15::Open ( const _variant_t & Source, const _variant_t & ActiveConnection, enum CursorTypeEnum CursorType, enum newLockTypeEnum LockType, long Options ) {
HRESULT _hr = raw_Open(Source, ActiveConnection, CursorType, LockType, Options);
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return _hr;
执行到此步时出错,_hr的值非零。我得connection的打开方式是adModeUnknown.我把打开方式改成adModeReadWrite,系统却提示“变量或者类型不对,或者不在可以接受的范围之内,要不就是与其他数据冲突”。请高手指教,我那里错了!!!
sql_="insert into teller (tel_id,telnam,telgrp,telpwd) values ('"+m_sTelNo+"','"+m_sTelNm+"','"+m_sTelTyp+"','000000')";
m_pRs->Open(sql_, m_pLConn.GetInterfacePtr(),adOpenDynamic, adLockPessimistic,adCmdText);
跟踪调试发现
inline HRESULT Recordset15::Open ( const _variant_t & Source, const _variant_t & ActiveConnection, enum CursorTypeEnum CursorType, enum newLockTypeEnum LockType, long Options ) {
HRESULT _hr = raw_Open(Source, ActiveConnection, CursorType, LockType, Options);
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return _hr;
执行到此步时出错,_hr的值非零。我得connection的打开方式是adModeUnknown.我把打开方式改成adModeReadWrite,系统却提示“变量或者类型不对,或者不在可以接受的范围之内,要不就是与其他数据冲突”。请高手指教,我那里错了!!!
比如当m_StemNo是整形的时候有_variant_t((Long)(m_sTelNo))
同时注意如果插入的不是字符型的话要把''去掉
以前是这样:
strConnect = "DRIVER={Oracle ODBC Driver};DBQ=pg; \
SERVER=pg;UID=pg;PWD=root3221";
Conn->Open(( _bstr_t )strConnect, "", "",adModeUnknown);
无法更新和新增记录
后来我有改成:
strConnect= "Provider=OraOLEDB.Oracle.1;Password=root3221; \
Persist Security Info=True;User ID=pg;Data Source=pg";
Conn->Open(( _bstr_t )strConnect, "", "",adModeUnknown);
就可以更新和新增记录了,请教高手!!!!