请问CDatabase类里面的Open方法如何传入连接数据库的用户名和密码?

解决方案 »

  1.   

    virtual BOOL Open(LPCTSTR lpszDSN,BOOL bExclusive=FALSE,BOOL bReadOly=FALSE,LPCTSTR lpszConnect="ODBC;",BOOL bUseCursorLib=TRUE);
    其中,lpszConnect包含连接信息,如数据源名称、用户ID、用户密码等信息。这个字符串可以在代码中指定,也可根据用户输入获取。
      

  2.   

    现在就是怎样把用户名和密码传进去阿
    比如说:用户:sa 密码:sa
    这样因该怎么写啊?
      

  3.   

    //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();