vc++中编译正确,VS2010中出现C2664错误
void CTrainingStudentManage::UpdateData(){ m_listctrlTrainingStudent.DeleteAllItems(); if (!m_database.IsOpen()) { m_database.Open(_T("training")); } CTrainingStudentSet m_recordset(&m_database); CString csSQL = _T(""); csSQL.Format(_T("select * from TRAINING_STUDENT")); if (!m_recordset.IsOpen()) { m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE, csSQL); } CDBVariant varValue; if (m_recordset.GetRecordCount() != 0) { m_recordset.MoveFirst();//移到第一条记录 } char buf[20]; int i = 0; while (!m_recordset.IsEOF())//没到最后一条记录 { int nTmp = 0; m_recordset.GetFieldValue(nTmp, varValue);//学员号 sprintf(buf,"%d", varValue.m_iVal); m_listctrlTrainingStudent.InsertItem(i,buf);/* error C2664: “int CListCtrl::InsertItem(UINT,int,LPCTSTR,UINT,UINT,int,LPARAM)”: 无法将参数 2 从“char [20]”转换为“LPCTSTR”1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换*/ m_recordset.GetFieldValue(1, varValue);//姓名 m_listctrlTrainingStudent.SetItemText(i, 1, varValue.m_pstring->GetBuffer(1)); m_recordset.GetFieldValue(2, varValue);//性别 m_listctrlTrainingStudent.SetItemText(i, 2, varValue.m_pstring->GetBuffer(1)); m_recordset.GetFieldValue(3, varValue);//年龄 sprintf(buf, "%d", varValue.m_iVal); m_listctrlTrainingStudent.SetItemText(i, 3,buf);//同第一个错误 m_recordset.GetFieldValue(4, varValue);//民族 m_listctrlTrainingStudent.SetItemText(i, 4, varValue.m_pstring->GetBuffer(1));m_recordset.GetFieldValue(9, varValue);//开始参加工作时间 sprintf(buf, "%d-%d-%d", varValue.m_iVal); m_listctrlTrainingStudent.SetItemText(i, 9, buf);//同样是上面的错误m_recordset.MoveNext(); i++; }}