求助:请求帮助 我用ADO 开发平台为VS2005 C++语言 在数据操作的时候,有进行字符串的插入操作.....因为要插入的字符串里面是ASCII码里面的字符,都有可能出现,但这些都是信息,不想过滤掉,过滤也要花时间.请问该怎么解决. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ADO插入记录时最好不要用insert into的SQL语句,如果字段值里有保留字很容易出错,最好用AddNew()添加一条新记录,再用PutCollect写入某一字段的值,再Update()更新记录。 我用ADO 开发平台为VS2005 C++语言 因为我是刚学的,我不知道怎么操作AddNew() 代码差不多是怎么样了,能不能给个实例或者样式 给你个示例代码吧,以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(); 你可以将_RecordsetPtr pRs;定义成一个成员变量,只打开一次,反复调用pRs->AddNew();pRs->PutCollect("字段名1", _variant_t("字段值"));pRs->PutCollect("字段名2", _variant_t("字段值"));pRs->Update();在不需要再写数据的时候再关闭,这样不用每次都去打开记录集, vc6程序在vista下怎么不弹UAC认证对话框 【求助】初学MFC,遇到个问题未能解决,代码、错误见以下内容 翻页显示小问题 上传文件问题 请问:MFC7.0中的线程池CThreadPool能否限制命令队列大小? 一个很奇怪的问题, 3维数组这样赋值怎么不对啊!? (LPTSTR)(LPCTSTR)(m_pSet->m_clips)看不太懂了! 开心辞典24点程序 使用GetOpenFileName无法打开“打开文件“对话框 高分求助,郁闷了好久!见内容 C++ ADO数据库操作 求助
//****************************************************************************************//
//函数 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();
pRs->AddNew();
pRs->PutCollect("字段名1", _variant_t("字段值"));
pRs->PutCollect("字段名2", _variant_t("字段值"));
pRs->Update();
在不需要再写数据的时候再关闭,这样不用每次都去打开记录集,