C++用ado插数据,插入的字段中文是乱码、 80

strConn.Format(_T("driver={SQLServer};Server=%s;DATABASE=test;UID=interview;PWD=vte58... strConn.Format(_T("driver={SQL Server};Server=%s;DATABASE=test;UID=interview;PWD=vte58.ok"),A2W(ip));\\连接字符串

strInsert.Format(_T("insert into Temp values(0,@msg,'%d-%d-%d %d:%d:%d','%s','%s')"),sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute,sys.wSecond,waddress,strName);\\ 插入的语句,调试的时候可以看到这部分(strInsert)不是乱码。

BOOL CDataBaseAccess::Execute(CString sql,CString msg)
{
HRESULT hr;
_bstr_t CommandText(sql);
_variant_t varMsg(msg);
hr=m_pCommand.CreateInstance("ADODB.Command");
m_pCommand->ActiveConnection=m_pConnection;
m_pCommand->CommandText=CommandText;
m_pCommand->CommandType=adCmdText;
ParametersPtr pParams = m_pCommand->CreateParameter("@msg",adVarChar,adParamInput,msg.GetLength() ,varMsg );
m_pCommand->Parameters->Append(pParams);
_variant_t vNULL;
vNULL.vt = VT_ERROR;
vNULL.scode = DISP_E_PARAMNOTFOUND;///定义为无参数

m_pCommand->Execute(&vNULL,&vNULL,adCmdText);
return TRUE;
}
// 插入到数据库中之后,@msg字段就是乱码了。造成这样原因可能是什么?怎样可以解决?
展开
 我来答
intehel
2014-08-30 · TA获得超过1293个赞
知道大有可为答主
回答量:1601
采纳率:100%
帮助的人:1772万
展开全部
还有一个问题,你的m_pCommand是类CDataBaseAccess的成员吧?

那么第二次执行Execute时,再次调用m_pCommand.CreateInstance是不对的。
有两种方式:
1、将CreateInstance移出放到另外一个单独的函数中;
2、在return TRUE之前调用m_pCommand.Release();
芽子你好
2014-08-29 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:84万
展开全部
在连接字串中指定 数据库使用的字符集
追问
设置设置字符集,我试过没有看到效果。
这个问题今天早上搞定了。创建
设置设置字符集,我试过没有看到效果。
这个问题今天早上搞定了。创建parameter指定参数为unicode的宽字符就解决了。而advarchar这个参数所指定的不是unicode,所以才会导致插入的数据显示为乱码。自问自答==
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式