CDatabase::Open()的参数为空时,为打开连接数据源的对话框选择数据源。
MSDN上说Open() 中的参数lpszConnect可以描述连接的数据源,但是怎么用呢?
格式是什么?
比如E:\Doc\ShowAudio.mdb配置的文件DSN为ShowAudio。
我应该怎么传递参数?

解决方案 »

  1.   

    //ODBC open SQL server database
    CDatabase db;
    db.OpenEx("DRIVER={SQL Server};Server=Cell;DATABASE=zhg;UID=sa;PWD=;");//change Cell to your computer name
    //change zhg to your database name
    CRecordset rs(&db);
    rs.Open(AFX_DB_USE_DEFAULT_TYPE,"select type,AVG(price)'average price' From title  where type<>'business' group by type");
    while(rs.IsEOF()==false)
    {
    CString str;
    CString strtype;
    rs.GetFieldValue((short)0,strtype);
    CDBVariant varprice;
    rs.GetFieldValue(1,varprice);
    str.Format("type:%s,avg(price):%f",strtype,varprice.m_dblVal);
    AfxMessageBox(str);
    rs.MoveNext();
    }
    rs.Close();
    db.Close();
    //Open ms access database
    CDatabase db;
    db.OpenEx("Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\temp\\db1.mdb;");
    CRecordset rs(&db);
    rs.Open(AFX_DB_USE_DEFAULT_TYPE,"select * From table1");
    int nfieldcount=rs.GetODBCFieldCount();
    CString msg;
    msg.Format("There are %d fields in table1",nfieldcount);
    AfxMessageBox(msg);
    //field 0 is int field,name "intfield",retrieve by field index
    CDBVariant dbvar;
    rs.GetFieldValue((short)0,dbvar);
    //field 1 is string field,name "strfield",retrieve by field name
    CString dbstrvar;
    rs.GetFieldValue("strfield",dbstrvar);
    msg.Format("field 0 value:%d,field name strfield value=%s",dbvar.m_iVal,dbstrvar);
    AfxMessageBox(msg);
    rs.Close();
    db.Close();