和数据库建立连接后,往某个表中写数据,必须先打开这个表,打开语句的第一个参数是SQL语句,用"Select * from 表名",如果这个表数据很多,会不会影响速度?有没有直接往表中写新记录的办法?

解决方案 »

  1.   

    BOOL XXX::WriteData()
    {
    _RecordsetPtr pRecordset;    //用于创建一个记录集
    CString strSQL;
    strSQL="INSERT INTO Table (a,b) VALUES ('123','456')";
            //其中Table为表名,a,b为表的字段名,123,456为对a,b赋值
    _variant_t var;
    try
    {
    HRESULT hTRes;
    hTRes = pRecordset.CreateInstance("ADODB.Recordset");
    if (SUCCEEDED(hTRes))
    {

        hTRes = pRecordset->Open(strSQL.AllocSysString(),
    theApp.m_pConnection.GetInterfacePtr(),
    adOpenDynamic,adLockPessimistic,adCmdText);
            if(SUCCEEDED(hTRes))
        {
    //AfxMessageBox("chenggong");
    TRACE(_T("连接成功!\n"));

        }

    }
    }
    catch(_com_error e)///捕捉异常
    {
    CString errormessage;
    ::MessageBox(theApp.GetMainWnd()->m_hWnd, e.ErrorMessage(), "失败!", MB_OK);
    }

    return TRUE;
    }//记录要一条一条的加,多条可用循环
      

  2.   

    如果只是往里面写数据,为什么一定要用RecordSet呢?用ADO的Command或者就用Connection不是更好吗?反正你得用Connection连接数据库,你就用这个往里面写数据好了。
    _ConnectionPtr m_pConnection;....m_pConnection->Execute("INSERT INTO users(ID,username,old,birthday) VALUES (1, 'Washington',25,'1970/1/1')",&RecordsAffected,adCmdText);只要建立了与数据库的连接后就可以用了。_CommandPtr也差不多。如果一定要用Recordset那SQL语句邮何必用 * 号啊,随便检索一个字段不就得了吗?^_^
      

  3.   

    如果你不要得到里面的数据的话  select 1 from table 就行了
      

  4.   

    nestlia(蹦蹦) :DBlibaray 是什么东东?怎么用?