我用ADO   开发平台为VS2005 C++语言  在数据操作的时候,有进行字符串的插入操作.....因为要插入的字符串里面是ASCII码里面的字符,都有可能出现,但这些都是信息,不想过滤掉,过滤也要花时间.请问该怎么解决.

解决方案 »

  1.   

    ADO插入记录时最好不要用insert into的SQL语句,如果字段值里有保留字很容易出错,最好用AddNew()添加一条新记录,再用PutCollect写入某一字段的值,再Update()更新记录。
      

  2.   

    我用ADO  开发平台为VS2005 C++语言 因为我是刚学的,我不知道怎么操作AddNew()    代码差不多是怎么样了,能不能给个实例或者样式
      

  3.   

    给你个示例代码吧,以Access为例:
    //****************************************************************************************//
    //函数 GetConnSrc
    //主要功能: 得到连接Access数据库的ADO连接字符串
    //参数列表: 
    //         1、CString strPath:路径名
    //         2、CString strFn:Access文件名
    //返回值: 
    //备注: 
    //****************************************************************************************//
    CString GetConnSrc(CString strPath, CString strFn)
    { CString strRet = "DRIVER=Microsoft Access Driver (*.mdb);UID=admin;UserCommitSync=Yes;";
    strRet += "Threads=3;SafeTransactions=0;PageTimeout=5;MaxScanRows=8;MaxBufferSize=2048;";
    strRet += "FIL=MS Access;DriverId=25;DefaultDir=";
    strRet += strPath;
    strRet += ";DBQ=";
    strRet += strPath;
    strRet += strFn; return strRet;
    }
    //下面是添加数据的示例代码
    _RecordsetPtr pRs; if (FAILED(m_pRs.CreateInstance("ADODB.Recordset")))
    {
    AfxMessageBox("Create Instance failed!");
    return;
    } CString strSRC = GetConnSrc(szPath, strFn);
    CString strSQL = "select * from 表名";
    try
    {
    if(FAILED(m_pRs->Open(_bstr_t(strSQL), _bstr_t(strSRC), adOpenStatic, adLockOptimistic, adCmdText)))
    {
    AfxMessageBox("Open table failed!");
    pRs.Release();
    return;
    }
    } catch(...)
    {
    AfxMessageBox("打开数据库出错!");
    pRs->Close();
    return;
    }
    //添加记录并写值
    pRs->AddNew();
    pRs->PutCollect("字段名1", _variant_t("字段值"));
    pRs->PutCollect("字段名2", _variant_t("字段值"));
    pRs->Update(); //关闭记录集
    pRs->Close();
    pRs.Release();
      

  4.   

    你可以将_RecordsetPtr    pRs;定义成一个成员变量,只打开一次,反复调用
    pRs->AddNew();
    pRs->PutCollect("字段名1", _variant_t("字段值"));
    pRs->PutCollect("字段名2", _variant_t("字段值"));
    pRs->Update();
    在不需要再写数据的时候再关闭,这样不用每次都去打开记录集,