求助:关于AddNew()的问题

fj_jiangqi 2004-06-07 04:58:39
_ConnectionPtr pCn;
_RecordsetPtr pRs;
char szSqlbuff[100]="select * from test_table";
try{
pCn.CreateInstance(_uuidof(Connection));
pRs.CreateInstance(_uuidof(Recordset));
pCn->Open(myadoCONNECTIONSTRING,myadoUSER,myadoPASSWORD,adModeUnknown);
pRs->Open(szSqlbuff,_variant_t((IDispatch*)pCn,true),adOpenStatic,adLockOptimistic,adCmdText);
pRs->AddNew(); //运行到此出错,错误提示:对象或提供者不能提供所需的操作
....
}catch(_com_error &e){
MessageBox(NULL,(TCHAR *)e.Description(),TEXT("error!"),MB_OK);
}
数据库用的是oracle8i,ado为1.5,数据库连接正常,读取数据正常,用_CommandPtr.Execute执行sql语句写入数据正常。由于写入的字段和数

据都比较多,所以想用AddNew()来添加数据,用put_Collect()写入数据。可总不能成功,无奈之中,有请高人指点迷津。先谢谢了。
...全文
377 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
gooyan 2004-09-16
  • 打赏
  • 举报
回复
1.stdafx.h中加入
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
2。app文件的InitInstance中加入
if(S_OK!=OleInitialize(NULL))
{
AfxMessageBox("初始化COM组件库错误");
}


下面就是数据库操作
_ConnectionPtr pConn;
_RecordsetPtr pRs;
CString strSQL;
pConn.CreateInstance(__uuidof(Connection));
pConn->CursorLocation=adUseClient;
strSQL="Provider=SQLOLEDB;Server=Gooyan;DataBase=SkillsBox;UID=sa;PWD=aaaaaaaa";
pConn->Open(_bstr_t(strSQL),"","",-1);

pRs.CreateInstance(__uuidof(Recordset));
pRs->CursorLocation=adUseClient;
pRs->PutActiveConnection(pConn.GetInterfacePtr());

pRs1.CreateInstance(__uuidof(Recordset));
pRs1->CursorLocation=adUseClient;
pRs1->PutActiveConnection(pConn.GetInterfacePtr());

strSQL="select * from catalog order by cataid";
pRs->Open(_bstr_t(strSQL),vtMissing,adOpenDynamic,adLockBatchOptimistic,adCmdText);

zcpingx 2004-09-16
  • 打赏
  • 举报
回复
郁闷:问题终于解决了。
在 连接数据库 的 hr=m_pConnection->Open((_bstr_t)strConnection,"","",-1);前加上
m_pConnection->CursorLocation = adUseClient; 要不然 使用AddNew()函数总出错。你试试看吧。
zcpingx 2004-09-16
  • 打赏
  • 举报
回复
连接部分:
AfxOleInit();//必须要有。
strConnection = "Provider=msdaora;Data Source=sfdb_10.0.0.254;User ID=pe; Password=express";
try
{
HRESULT hr = m_pConnection.CreateInstance(__uuidof(Connection));
if(SUCCEEDED(hr))
{
hr=m_pConnection->Open((_bstr_t)strConnection,"","",-1);

}
}
catch(_com_error e)
{

AfxMessageBox("连接数据库失败!");
return FALSE;
}
return TRUE;
zcpingx 2004-09-16
  • 打赏
  • 举报
回复
请问你的问题解决了没有呀,我也遇到这样的问题。一起寻找答案吧,若解决了请相告一声!谢谢!
sony19791015 2004-09-14
  • 打赏
  • 举报
回复
gz
marcopolo 2004-09-13
  • 打赏
  • 举报
回复
关注
lzf8977 2004-09-11
  • 打赏
  • 举报
回复
以前碰到这个问题:
将pRs->Open(szSqlbuff,_variant_t((IDispatch*)pCn,true),adOpenStatic,adLockOptimistic,adCmdText); 中的 adLockOptimistic 改为adLockPessimistic 试试!!
内存泄漏 2004-09-08
  • 打赏
  • 举报
回复
pRs->Open(szSqlbuff,_variant_t((IDispatch*)pCn,true),adOpenStatic,adLockOptimistic,adCmdText);

在上面这条语句前面加上下面这条语句:
pRs->PutRefActiveConnection(pCn);
fj_jiangqi 2004-09-08
  • 打赏
  • 举报
回复
谁可以帮我?
fj_jiangqi 2004-06-07
  • 打赏
  • 举报
回复
用户,口令非要写在连接串中吗?我是分开来写的。
目前虽是本机运行,但日后便要在多台机子上运行,连接串中是一定要用到ip地址的。
除了AddNew(),put_Collect()还没正常过,其它读限数据包括执行update的SQL语句都是正常的。唉!不知道连接时或取记录时那没设置好?
Kudeet 2004-06-07
  • 打赏
  • 举报
回复
呵呵!

"Provider=MSDAORA.1;Data Source=servername;UserID=...;Password=..;"
fj_jiangqi 2004-06-07
  • 打赏
  • 举报
回复
laiyiling(最熟悉的陌生人)谢谢你对我的问题一直的关注,谢谢!
我的数据服务器是装在本机上的,因此使用127.0.0.1的地址。
Kudeet 2004-06-07
  • 打赏
  • 举报
回复
不是本地连接吗?
fj_jiangqi 2004-06-07
  • 打赏
  • 举报
回复
不对,上面我自己说错了,那个连接串好象是我从一个叫resin的jsp服务软件中仿造出来的。
fj_jiangqi 2004-06-07
  • 打赏
  • 举报
回复
char *myadoCONNECTIONSTRING="Provider=MSDAORA.1;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=linepic)))";
char *myadoUSER="linepic";
char *myadoPASSWORD="linepic";
这是我的连接串用户名与口令。连接串是从tnsnames.ora文件中拷出来的。
以上为pCn->Open(myadoCONNECTIONSTRING,myadoUSER,myadoPASSWORD,adModeUnknown);的打开语句的参数内容。
也不知是否有问题?唉!
还望高人指点!谢谢!
Kudeet 2004-06-07
  • 打赏
  • 举报
回复
pCn->Open(myadoCONNECTIONSTRING,myadoUSER,myadoPASSWORD,adModeUnknown);的打开语句??
yuaner1978 2004-06-07
  • 打赏
  • 举报
回复
我也有这个问题,困惑我好几天了。一起关注。谢谢
Kudeet 2004-06-07
  • 打赏
  • 举报
回复
char szSqlbuff[100]="select * from test_table";

改为

CString str="select * from test_table";

4,017

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧