这是我的代码,我发现两种方式都连不上,老是运行的时候报错,当然编译还是可以通过的,我建立了一个数据库school,里面存放了三张表Student,Course,Sc,想把一些属性输出到控件上,可惜老是连不上,下面是代码!
void CLessons_ADODlg::OnBtnQuery() 
{ CoInitialize(NULL);//初始化类库
_ConnectionPtr pConn(__uuidof(Connection));//定义并初始化。 Data Source=MICROSOF-C59AA9;
_RecordsetPtr  pRst(__uuidof(Recordset)); //pConn->ConnectionString="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=pubs";
      pConn->ConnectionString="Provider=SQLOLEDB;Data Source=localhost\SqlExpress;InitialCatalog=school;User ID=sa;Password=123456";
      pConn->Open("ConnectionString","sa","123456",NULL);
//小心啊,注意查看Open(ADO)    pRst=pConn->Execute("select * from Student ",NULL,adCmdText); while(pRst->rsEOF)
{
((CListBox*)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)pRst->
GetCollect("sno"));
pRst->MoveNext();
}
pRst->Close();
pConn->Close();
//pCmd.Release();
pRst.Release();
pConn.Release();    CoUninitialize();
}
后来我又改了一下,还是不行。
HRESULT   hr;
_ConnectionPtr m_pConnection;
hr   =   m_pConnection.CreateInstance("ADODB.Connection");
    hr   =   m_pConnection->Open("Provider=SQLOLEDB;Data  Source=localhost\SqlExpress","sa","123456",adModeUnknown);
    
_RecordsetPtr pRst(__uuidof(Recordset));
pRst=m_pConnection->Execute("select * from Student ",NULL,adCmdText);
while(pRst->rsEOF)
{
((CListBox*)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)pRst->
GetCollect("sno"));
pRst->MoveNext();
}
pRst->Close();
m_pConnection->Close();
pRst.Release();
m_pConnection.Release();高手求救啊!

解决方案 »

  1.   

    建议用access,sql太麻烦了,我对sql很无语,
      

  2.   

    在设置了ConnectionString各属性后。
     pConn->Open("ConnectionString","sa","123456",NULL);这句就可以改成
     pConn->Open("","","",adConnectUnspecified);
    ConnectionString属性中要是要连接本机上的SQL的话就可以把ConnectionString里面的
    Data Source设为:(local)
    Data Source=(local);
    我想就能连接上了。
      

  3.   

    Data Source=localhost\SqlExpress->Data Source=localhost\\SqlExpress
      

  4.   

    故障点在哪里,vc连数据库很简单的,可能是你odbc问题
      

  5.   

    Data Source=localhost\SqlExpress->Data Source=localhost\\SqlExpress正解