项目字符集由多字节改成UNICODE后 写数据库时Update()出错

tymicf 2016-01-07 02:31:23
			m_pRecordset->AddNew();    //添加新记录
m_pRecordset->PutCollect("ORGCODE",_variant_t(m_org_code));
m_pRecordset->PutCollect("SDATE",_variant_t(m_file_date));
m_pRecordset->PutCollect("FINISH",_variant_t((long)1));
m_pRecordset->Update();
...全文
145 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tymicf 2016-01-07
  • 打赏
  • 举报
回复
捕获异常 显示的是 违反了 PRIMARY KEY 约束 'PK_SAVEINFO'。不能在对象 'dbo.SAVEINFO' 中插入重复键。
tymicf 2016-01-07
  • 打赏
  • 举报
回复
m_org_code 是CString 对应字段是nvarchar(50) 用_T()还是出错
oyljerry 2016-01-07
  • 打赏
  • 举报
回复
m_pRecordset->PutCollect(_T("ORGCODE"),_variant_t(m_org_code)); 用_T() 然后就是你的m_org_code也变成unicode了,你的数据库对应字段要能支持
zhouxiaofeng1021 2016-01-07
  • 打赏
  • 举报
回复
	try
{
m_pRecordset->PutCollect(varFieldName,varValue);
m_pRecordset->Update();
return TRUE;
}
catch(_com_error &e)
{
LogProviderError(m_pConnection);
LogComError(e);
}
void CDBAccessWithAdo::LogProviderError(_ConnectionPtr pConnection)
{
TRACE_FUNCTION_DEBUG

// 错误信息
ErrorPtr pErr = NULL;
CString errorStr;
LONG nCount;

// 记录连接错误信息到日志系统
if((nCount = pConnection->Errors->Count) > 0)
{
for(LONG i=0; i<nCount; i++)
{
pErr = pConnection->Errors->GetItem(i);
errorStr.Format(_T("Error number: %x\t%s"), pErr->Number, (const TCHAR*)pErr->Description);

LOG_ERROR(errorStr.GetBuffer());
}
}
}

void CDBAccessWithAdo::LogComError(_com_error &e)
{
TRACE_FUNCTION_DEBUG

// 错误信息
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
CString errorStr;

// 记录COM异常信息到日志系统
errorStr = _T("Error\n");
errorStr.AppendFormat(_T("Code = %08lx\n"), e.Error());
errorStr.AppendFormat(_T("Code meaning = %s\n"), e.ErrorMessage() );
errorStr.AppendFormat(_T("Source = %s\n"), (const TCHAR*) bstrSource );
errorStr.AppendFormat(_T("Description = %s\n"), (const TCHAR*)bstrDescription );

LOG_ERROR(errorStr.GetBuffer());
}

你看看错误是啥
我这个代码可以看到错误详细

4,018

社区成员

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

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