采用ado连接数据库SQL Server,当某一字段(例如newzdm)为空
采用
strcpy(zmTmp[0],(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("newzdm"));
获得内容,时候就会报“类型不匹配” 错!请问如何修改??
谢谢!!
代码片断
/*------------------------------------------------------
GetCwdbm() : Get cwdbm from databse to array
--------------------------------------------------------*/
int GetCwdbm()
{ char zmTmp[10][20];
memset ( zmTmp, 0, sizeof(zmTmp) );/*-----------------数据库操作----------------------------*/
CString sql;
sql.Format("SELECT newzdm, oldzm, olddbm FROM cwdbm");
try
{
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
if(m_pRecordset->adoEOF)
{
AfxMessageBox("注意:数据库cwdbm为空!");
return 1;
}
else
{
while(!m_pRecordset->adoEOF)
{
strcpy(zmTmp[0],(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("newzdm"));
strcpy(zmTmp[1],(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("oldzm"));
strcpy(zmTmp[2],(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("olddbm"));
strcpy( cwdbm[cwdbmNum].zdm, zmTmp[0] );
strcpy( cwdbm[cwdbmNum].zm, zmTmp[1] );
strcpy( cwdbm[cwdbmNum].cwdbm, zmTmp[2] );
cwdbmNum++;
memset(zmTmp, 0, sizeof(zmTmp));
m_pRecordset->MoveNext();
}
}
m_pRecordset->Close();
}
catch(_com_error e)///捕捉异常
{
CString temp;
temp.Format("连接数据库(cwdbm)错误信息:%s",e.ErrorMessage());
AfxMessageBox(temp);
return -1;
}
/*-------------------------------------------------------*/
return 0;
}
采用
strcpy(zmTmp[0],(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("newzdm"));
获得内容,时候就会报“类型不匹配” 错!请问如何修改??
谢谢!!
代码片断
/*------------------------------------------------------
GetCwdbm() : Get cwdbm from databse to array
--------------------------------------------------------*/
int GetCwdbm()
{ char zmTmp[10][20];
memset ( zmTmp, 0, sizeof(zmTmp) );/*-----------------数据库操作----------------------------*/
CString sql;
sql.Format("SELECT newzdm, oldzm, olddbm FROM cwdbm");
try
{
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
if(m_pRecordset->adoEOF)
{
AfxMessageBox("注意:数据库cwdbm为空!");
return 1;
}
else
{
while(!m_pRecordset->adoEOF)
{
strcpy(zmTmp[0],(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("newzdm"));
strcpy(zmTmp[1],(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("oldzm"));
strcpy(zmTmp[2],(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("olddbm"));
strcpy( cwdbm[cwdbmNum].zdm, zmTmp[0] );
strcpy( cwdbm[cwdbmNum].zm, zmTmp[1] );
strcpy( cwdbm[cwdbmNum].cwdbm, zmTmp[2] );
cwdbmNum++;
memset(zmTmp, 0, sizeof(zmTmp));
m_pRecordset->MoveNext();
}
}
m_pRecordset->Close();
}
catch(_com_error e)///捕捉异常
{
CString temp;
temp.Format("连接数据库(cwdbm)错误信息:%s",e.ErrorMessage());
AfxMessageBox(temp);
return -1;
}
/*-------------------------------------------------------*/
return 0;
}
CString CMyDatabase::VariantToCString(VARIANT var)
{
CString strValue;
_variant_t var_t;
_bstr_t bst_t;
time_t cur_time;
CTime time_value;
COleCurrency var_currency;
switch(var.vt)
{
case VT_EMPTY:strValue=_T("");break;
case VT_UI1:strValue.Format ("%d",var.bVal);break;
case VT_I2:strValue.Format ("%d",var.iVal );break;
case VT_I4:strValue.Format ("%d",var.lVal);break;
case VT_R4:strValue.Format ("%f",var.fltVal);break;
case VT_R8:strValue.Format ("%f",var.dblVal);break;
case VT_CY:
var_currency=var;
strValue=var_currency.Format(0);
break;
case VT_BSTR:
var_t=var;
bst_t=var_t;
strValue.Format ("%s",(const char*)bst_t);
break;
case VT_NULL: strValue=_T(""); break;
case VT_DATE:
cur_time=var.date;
time_value=cur_time;
strValue=time_value.Format("%A,%B%d,%Y");
break;
case VT_BOOL: strValue.Format ("%d",var.boolVal ); break;
default: strValue=_T(""); break;
}
return strValue;
}然后直接zmTmp[0]=strValue
strcpy(&zmTmp,.........);char *zmTmp=new char[100];
strcpy(zmTmp,........);