读书人

ADO连接SQL SERVER中遇到的有关问题

发布时间: 2012-05-27 05:42:30 作者: rapoo

ADO连接SQL SERVER中遇到的问题
我在学习用C++连SQL SERVER中,遇到了问题
在一个负责连接数据库的类中定义了这个函数
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
if(m_pConnection==NULL) OnInitADOConn();
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open( bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}

catch(_com_error e)
{
AfxMessageBox(e.Description());
}
return m_pRecordset;
}

在另一个类想调用这个函数读出数据库中的函数
void CEmployees::GetData(CString cEmpId)
{
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
_bstr_t vSQL;
vSQL="SELECT * FROM Employees WHERE Emp_id="+cEmpId;

_RecordsetPtr m_pRecordset;
m_pRecordset=m_AdoConn.GetRecordSet(vSQL);//

if(m_pRecordset->adoEOF==1)
CEmployees();
else
{
Emp_id=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("Emp_id");
Emp_name=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("Emp_Name");
Sex=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("Sex");
Title=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("Title");
Wage=(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("Wage");
Dep_id=atoi((LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("Dep_id"));
}

m_AdoConn.ExitConnect();
}

_RecordsetPtr m_pRecordset;
m_pRecordset=m_AdoConn.GetRecordSet(vSQL);//这部分出错,请问原因出在哪里呢?求指点一二,我是初学者,希望解释稍微详细点

[解决办法]
一步步跟进去,看看到哪句话出错,还要就是看看数据库是否连接上
[解决办法]
检查SQL有没错?
表里Emp_id是int还是char?

CString strSQL;
strSQL.Format(_T("SELECT * FROM Employees WHERE Emp_id='%s'"),cEmpId);
[解决办法]
m_pRecordset=m_AdoConn.GetRecordSet(vSQL);
m_AdoConn.GetRecordSet(vSQL)函数调用后返回的是m_pRecordset,然后又赋值给了m_pRecordset,
GetRecordSet(vSQL)函数返回的m_pRecordset你是在哪定义的,尽量别重复定义一个同名变量。

读书人网 >VC/MFC

热点推荐