程序出现c2039错误,求解决啊。。
STDMETHODIMP CQuestion::GetQuestion(int x_nType, int x_nQID, BSTR *x_QInfo)
{
// TODO: Add your implementation code here
try
{
if (FAILED(pConn.CreateInstance(__uuidof(Connection))))
{
*x_QInfo = ::SysAllocString(L"N#Couldn't create connection component!");
return S_OK;
}
if (FAILED(pConn->Open("Provider=MSDASQL.1;Password=;Persist Security Info=True;User ID=SA;Data Source=EXAM;Initial Catalog=EXAM","","",-1)))
{
*x_QInfo = ::SysAllocString(L"N#Couldn't open connection!");
return S_OK;
}
CComBSTR m_bstrSql;
switch(x_nType)
{
case 0:
m_bstrSql.Append("SELECT * FROM LOGIC WHERE QID=");
break;
case 1:
m_bstrSql.Append("SELECT * FROM SINGLE WHERE QID=");
break;
case 2:
m_bstrSql.Append("SELECT * FROM MULTIPLY WHERE QID=");
break;
default:
*x_QInfo = ::SysAllocString(L"N#Type error!");
return S_OK;
break;
}
char m_strBuf[10];
_itoa(x_nQID, m_strBuf, 10);
m_bstrSql.Append(m_strBuf);
_bstr_t m_bstrResult(m_bstrSql,FALSE);
CComVariant m_varNum;
pRs = pConn->Execute(m_bstrResult, &m_varNum, -1);
if (pRs->ADOEOF)//出现error C2039: 'ADOEOF' : is not a member of '_Recordset'
{
*x_QInfo = ::SysAllocString(L"N#Couldn't find records!");
return S_OK;
}
CComVariant m_varData;
CComBSTR m_bstrInfo;
m_bstrInfo.Append("Y#");
char m_strFieldName[20];
pRs->GetFields()->GetItem("CONTENT")->get_Value(&m_varData);
if(m_varData.vt != VT_NULL)
{
m_bstrInfo.AppendBSTR(m_varData.bstrVal);
m_bstrcontent.AppendBSTR(m_varData.bstrVal);
}
m_bstrInfo.Append("#");
if (x_nType >= 1)
{
pRs->GetFields()->GetItem("ANSWERA")->get_Value(&m_varData);
if(m_varData.vt != VT_NULL)
{
m_bstrInfo.AppendBSTR(m_varData.bstrVal);
m_bstrQ1.AppendBSTR(m_varData.bstrVal);
}
m_bstrInfo.Append("#");
pRs->GetFields()->GetItem("ANSWERB")->get_Value(&m_varData);
if(m_varData.vt != VT_NULL)
{
m_bstrInfo.AppendBSTR(m_varData.bstrVal);
m_bstrQ2.AppendBSTR(m_varData.bstrVal);
}
m_bstrInfo.Append("#");
pRs->GetFields()->GetItem("ANSWERC")->get_Value(&m_varData);
if(m_varData.vt != VT_NULL)
{
m_bstrInfo.AppendBSTR(m_varData.bstrVal);
m_bstrQ3.AppendBSTR(m_varData.bstrVal);
}
m_bstrInfo.Append("#");
pRs->GetFields()->GetItem("ANSWERD")->get_Value(&m_varData);
if(m_varData.vt != VT_NULL)
{
m_bstrInfo.AppendBSTR(m_varData.bstrVal);
m_bstrQ4.AppendBSTR(m_varData.bstrVal);
}
}
m_bstrInfo.Append("#");
if (x_nType == 2)
{
pRs->GetFields()->GetItem("ANSWERA")->get_Value(&m_varData);
if(m_varData.vt != VT_NULL)
{
m_bstrInfo.AppendBSTR(m_varData.bstrVal);
m_bstrQ5.AppendBSTR(m_varData.bstrVal);
}
}
pRs->GetFields()->GetItem("ANSWER")->get_Value(&m_varData);
if(m_varData.vt != VT_NULL)
{
m_shortAnswer=m_varData.intVal;
}
*x_QInfo = m_bstrInfo;
}
catch(...)
{
*x_QInfo = ::SysAllocString(L"Error occurs!");
return S_OK;
}
return S_OK;
}
{
// TODO: Add your implementation code here
try
{
if (FAILED(pConn.CreateInstance(__uuidof(Connection))))
{
*x_QInfo = ::SysAllocString(L"N#Couldn't create connection component!");
return S_OK;
}
if (FAILED(pConn->Open("Provider=MSDASQL.1;Password=;Persist Security Info=True;User ID=SA;Data Source=EXAM;Initial Catalog=EXAM","","",-1)))
{
*x_QInfo = ::SysAllocString(L"N#Couldn't open connection!");
return S_OK;
}
CComBSTR m_bstrSql;
switch(x_nType)
{
case 0:
m_bstrSql.Append("SELECT * FROM LOGIC WHERE QID=");
break;
case 1:
m_bstrSql.Append("SELECT * FROM SINGLE WHERE QID=");
break;
case 2:
m_bstrSql.Append("SELECT * FROM MULTIPLY WHERE QID=");
break;
default:
*x_QInfo = ::SysAllocString(L"N#Type error!");
return S_OK;
break;
}
char m_strBuf[10];
_itoa(x_nQID, m_strBuf, 10);
m_bstrSql.Append(m_strBuf);
_bstr_t m_bstrResult(m_bstrSql,FALSE);
CComVariant m_varNum;
pRs = pConn->Execute(m_bstrResult, &m_varNum, -1);
if (pRs->ADOEOF)//出现error C2039: 'ADOEOF' : is not a member of '_Recordset'
{
*x_QInfo = ::SysAllocString(L"N#Couldn't find records!");
return S_OK;
}
CComVariant m_varData;
CComBSTR m_bstrInfo;
m_bstrInfo.Append("Y#");
char m_strFieldName[20];
pRs->GetFields()->GetItem("CONTENT")->get_Value(&m_varData);
if(m_varData.vt != VT_NULL)
{
m_bstrInfo.AppendBSTR(m_varData.bstrVal);
m_bstrcontent.AppendBSTR(m_varData.bstrVal);
}
m_bstrInfo.Append("#");
if (x_nType >= 1)
{
pRs->GetFields()->GetItem("ANSWERA")->get_Value(&m_varData);
if(m_varData.vt != VT_NULL)
{
m_bstrInfo.AppendBSTR(m_varData.bstrVal);
m_bstrQ1.AppendBSTR(m_varData.bstrVal);
}
m_bstrInfo.Append("#");
pRs->GetFields()->GetItem("ANSWERB")->get_Value(&m_varData);
if(m_varData.vt != VT_NULL)
{
m_bstrInfo.AppendBSTR(m_varData.bstrVal);
m_bstrQ2.AppendBSTR(m_varData.bstrVal);
}
m_bstrInfo.Append("#");
pRs->GetFields()->GetItem("ANSWERC")->get_Value(&m_varData);
if(m_varData.vt != VT_NULL)
{
m_bstrInfo.AppendBSTR(m_varData.bstrVal);
m_bstrQ3.AppendBSTR(m_varData.bstrVal);
}
m_bstrInfo.Append("#");
pRs->GetFields()->GetItem("ANSWERD")->get_Value(&m_varData);
if(m_varData.vt != VT_NULL)
{
m_bstrInfo.AppendBSTR(m_varData.bstrVal);
m_bstrQ4.AppendBSTR(m_varData.bstrVal);
}
}
m_bstrInfo.Append("#");
if (x_nType == 2)
{
pRs->GetFields()->GetItem("ANSWERA")->get_Value(&m_varData);
if(m_varData.vt != VT_NULL)
{
m_bstrInfo.AppendBSTR(m_varData.bstrVal);
m_bstrQ5.AppendBSTR(m_varData.bstrVal);
}
}
pRs->GetFields()->GetItem("ANSWER")->get_Value(&m_varData);
if(m_varData.vt != VT_NULL)
{
m_shortAnswer=m_varData.intVal;
}
*x_QInfo = m_bstrInfo;
}
catch(...)
{
*x_QInfo = ::SysAllocString(L"Error occurs!");
return S_OK;
}
return S_OK;
}
...全文
相关推荐
ntwdblib.dll 版本2000.80.2039
在这种情况下,将版本2000.80.2039的ntwdblib.dll文件复制到系统目录(如C:\Windows\System32)下,可以解决此类问题。
解决常见编程错误:C2039的两种修复方法
本篇博客深入分析了C2039错误的成因及其解决方案。详细介绍了如何应对事件处理程序名称更改导致的问题,并提供了两种修复方法:一种是通过在表单中删除按钮并重新生成事件处理器;另一种是直接在Windows表单设计器代码中修正事件处理程序的名称。此外,还讨论了程序重建在解决其他不明错误中的重要性。
C语言编译时常见错误分析
C2019、error C2021、error C2039、error C2048等错误信息的含义和解决方法,以便程序员更好地理解和解决这些错误。
(完整word版)C语言程序编译常见错误对照.doc
C语言程序编译常见错误对照C语言程序编译常见错误对照是指在C语言程序编译过程中可能出现的错误类型及其对照描述。本文将详细介绍C语言程序编译常见错误对照,帮助开发者快速定位和解决编译错误。
c语言常见错误
在C语言编程中,错误是常见的挑战,程序员需要理解和解决这些错误来确保代码的正确运行。


