我把SQL Server数据库中的一个表的一个varchar型字段的长度设置成大于256的值,使用ODBC的CRcordset在这个表中添加记录时总是出错。而这个字段的长度设置成小于256的值时则不出错。请问这是我的这个SQL Server数据库的版本问题,还是VC++的版本问题?有什么解决办法?谢谢!

解决方案 »

  1.   

    在映射的CRecordSet类中,系统默认的CString变量的长度都是256。如果长度超过256,则应该在DoFieldExchange函数中的相应位置写明:
    void CNameSet::DoFieldExchange(CFieldExchange* pFX)
    {
    //{{AFX_FIELD_MAP(CNameSet)
    pFX->SetFieldType(CFieldExchange::outputColumn);
    RFX_Text(pFX, _T("[USERMSG]"), m_UserMsg, 3000);   //3000就是该字段可能的最大长度。
    }另外,好像超过256长度的在sql server数据库中应该是用“text”类型的字段
      

  2.   

    varchar在SQL中最大值为8000,估计是你程序写的不对。