BOOL CGetFieldNameDlg::OnInitDialog()
{
。。
// TODO: Add extra initialization here
AfxOleInit(); HRESULT hr = m_pConnection.CreateInstance(__uuidof(Connection));
if(FAILED(hr))
return FALSE; _bstr_t ConString = "Provider = SQLOLEDB; Server = 192.168.0.23; \
Database = testdb; uid = sa; pwd = 1;"; try
{
m_pConnection->Open(ConString, "sa", "1", adModeUnknown); m_pRecordset.CreateInstance(__uuidof(Recordset));
}
catch(_com_error& e)
{
::MessageBox(NULL, e.Description(), "Waring", MB_OK | MB_ICONWARNING); }
return TRUE;  // return TRUE  unless you set the focus to a control
}
void CGetFieldNameDlg::OnButton1() 
{
。。
_bstr_t mStrSQL;
mStrSQL = "select * from student";当运行到这时:
m_pRecordset->Open(mStrSQL, m_pConnection.GetInterfacePtr(), 
adOpenDynamic, adLockOptimistic, adCmdText);。
}出现对象名"student"无效的错误信息!可是在查询分析器中可以执行select * from student
请问是怎么回事啊?

解决方案 »

  1.   

    还看不出有什么问题
    不过
    m_pConnection->Open(ConString, "sa", "1", adModeUnknown);中的"sa", "1", 可以是"",""空的
      

  2.   

    char mStrSQL[200];
    sprintf(mStrSQL,"select * from student");
    m_pRecordset->Open(mStrSQL, _variant_t((IDispatch *)theApp.m_pConnection,true),
    adOpenDynamic,adLockPessimistic,adCmdText);
      

  3.   

    select * from [dbo].[student]SQL Server最好用这样完整的表名,确认有权限。
      

  4.   

    GetInterfacePtr()?
    这个对吗?
      

  5.   

    那应该是什么啊?
    =================================
    GetInterfacePtr()?
    这个对吗?
      

  6.   

    m_pConnection.GetInterfacePtr()可以这样用的
    我觉得不是程序的问题
    你看看数据库名没写错不,可能是student在别的库里,还有你权限够不够