在Excute函数中执行带有中文的Insert语句,结果到数据库中的是"??".
经过检查,在传输的数据包中,语句中的汉字就已经变成"??"了.
那位大侠能解释这种现象,并提出解决方案.
给分!!!!!!

解决方案 »

  1.   

    用AddNew可以让这样的情况消失!
      

  2.   

    我用ADO就没出现过,
    代码贴出来
      

  3.   

    int MsgDbTool::InsertOneRow(const char *cUid, const tagUserInfo strUserInfo, const char *cPasswd)
    {
    CString csSQL,csDateTime;
    _variant_t RecordsAffected;


    //获取时间
    SYSTEMTIME tTime;
    GetLocalTime(&tTime);
    csDateTime.Format("%d%d%d%d%d%d",tTime.wYear,tTime.wMonth,tTime.wDay,
    tTime.wHour,tTime.wMinute,tTime.wSecond);
    //组织数据
    csSQL.Format("%s%s%s%s%s%s%s%s%s%s%s%s%s%d%s%c%s%d%s%s%s%s%s%s%s",
    "INSERT INTO MSG_USERINFO(USERID,PASSWD,MARK,LOGINDATE,LOGUSERTYPE,",
    "LOGGRP,LOGUSERID,MSGGATEID,SMSCOUNT,BYTECOUNT,USERNAME,",
    "USEROTHERNAME,HEADIMAGEID,SEX,AGE,EMAIL,IDCARD,HOMEADDRESS) VALUES('",
    cUid,
    "','",
    cPasswd,
    "','0','",
    (LPCSTR)csDateTime,
    "',NULL,NULL,NULL,NULL,0,0,'",
    strUserInfo.UserName,
    "','",
    strUserInfo.UserOtherName,
    "',",
    strUserInfo.HeadImageId,
    ",'",
    strUserInfo.Sex,
    "',",
    strUserInfo.Age,
    ",'",
    strUserInfo.Email,
    "','",
    strUserInfo.IdCard,
    "','",
    strUserInfo.HomeAddress,
    "')"
    );
    try
    {
    m_DbCon->Execute((LPCSTR)csSQL,&RecordsAffected,adCmdText);
    //m_DbCon->Execute((_bstr_t)(LPCSTR)csSQL,&RecordsAffected,adCmdText);
    }
    catch(_com_error e)///捕捉异常
    {
    return -1;
    }
    return 0;
    }其中Name和HomeAdress含中文
    AddNew的用法不熟悉
      

  4.   

    用AddNew()好像存在类型转换的问题
      

  5.   

    addnew 
    putcollect
    update
      

  6.   

    有没有例程,我用AddNew()时产生了例外
      

  7.   

    这个好像不是ado的问题
    我遇到过
    是不是你写入库那台机器不支持中文
    或其他原因建议使用装中文系统的机器试试
      

  8.   

    肯定不是装中文系统的问题,估计AddNew()可以解决但是,谁有AddNew的完整例程
    因为我在试的时候Open(...)方法的调用总是产生例外。
    有这么多回应非常高兴,谢谢各位大侠了先!
    问题解决了一定送分。
      

  9.   

    问题已经解决了
    在连接字符串中有一个AOTU Translate的字段
    该值为FALSE时,中文正常
      

  10.   

    to herohetao(金橙子) :
       在连接字符串中有一个AOTU Translate的字段,连接字符串是指哪的字符串啊。给个例子,谢啦!
      

  11.   

    HRESULT hr;m_csConnectStr.Format("Provider=SQLOLEDB; Data Source=%s; Initial Catalog=%s;\
    User Id=%s;Password=%s;Auto Translate=False",cIP,cDbName,cDBO,cPasswd);
    try
    {
    hr =m_DbCon.CreateInstance(__uuidof(Connection));
    }
      

  12.   

    少了赋值语句:
    m_DbCon->ConnectionString = (LPCSTR)m_csConnectStr;