有大量用户对同一数据表进行写操作,每个用户的数据量不大听说用户提交一次就用insert的话,就是要写一次盘,大量用户的话就不停的写盘,这样太慢了。是不是有一种操作可以收集到一定数据才写一次盘.
就如ADO 用多次AddNew才Updata一次如果用存储过程又怎样实现???

解决方案 »

  1.   

    why not use Ado itself function? just you said using Update()
      

  2.   

    使用Ado的批更新功能,将游标设为adClient,添加完记录后,调用批更新函数参考Ado参考手册(chm)版
      

  3.   

    #include "comdef.h"
    #import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "EndOfFile")
    _ConnectionPtr   pCon;
    _RecordsetPtr    pRs;
    _variant_t       vpRsAffected,RecordsAffected;
    BOOL FConnected;
    BSTR bstrSQL;
    CString StrSql;
    HRESULT Flag;
    try
    {
    Flag = pCon.CreateInstance("ADODB.Connection");//创建Connection对象
    if(SUCCEEDED(Flag))
    Flag=pCon->Open((_bstr_t)"driver={SQL Server};Server=服务器名;DATABASE=数据库名;UID=数据库登录名;PWD=数据库口令","","",adModeUnknown);//连接数据库
    if(SUCCEEDED(Flag))
    Flag=pRs.CreateInstance("ADODB.Recordset");
    if(SUCCEEDED(Flag))
    FConnected=TRUE;
    else
    FConnected=FALSE;
    }
    catch(_com_error&err)
    {
    FConnected=FALSE;
    }
    if(!FConnected)
    AfxMessageBox("连接服务器的数据库失败!请检查网络正常!或其它!");StrSql="Insert into (ID,Name,Sex) values('001','BB',1); Insert into (ID,Name,Sex) values('002','CC',1);";    //也可以用存储过程名称
    bstrSQL=LDB_User->RunSql.AllocSysString(); 
    pRs->Open(bstrSQL,(IDispatch*)pCon,adOpenDynamic,adLockOptimistic,adCmdText);
    //driver={SQL Server};Server=服务器名;DATABASE=数据库名;UID=数据库登录名;PWD=数据库口令