CDatabase * db;
db=new CDatabase();
    if(db->Open(_T("stu"),false,false,_T("ODBC;UID=stu;PWD=stu")))
{
    PersonRecord->Open();
while(!PersonRecord->IsEOF())
{
    str.Format("%s", PersonRecord->m_A);
pDC->TextOut(20,iIndex,str);
iIndex=iIndex+30;
PersonRecord->MoveNext();
}
}
else AfxMessageBox("Can't open Database");
PersonRecord->Close();
db->Close();
delete db;
"stu"是我配置的odbc,为什么我执行的时候,还要显示 odbc连接数据库的对话框,要求我输入密码

解决方案 »

  1.   

    BOOL CManagerInfo::OpenDatabase(LPCTSTR lpszDBName)
    { TRY
    {
    if(m_pDB!=NULL)
    {
    if(m_pDB->IsOpen())
    m_pDB->Close();
    }
    else
    m_pDB = new CDatabase;
    m_pDB->OpenEx(lpszDBName,CDatabase::noOdbcDialog);
    TRACE("CLOSE Database %s ...OK\n",lpszDBName);
    }
    CATCH_ALL(e)
    {
    e->Delete();
    OprMesLog("数据库打开故障!:");
    TRACE("CLOSE Database %s ...ERR\n",lpszDBName);
    return FALSE;
    }
    END_CATCH_ALL return TRUE;
    }
    例子:
    m_strDB_Name=_T("DSN=Security_SQL;UID=st3000;PWD=st3000");

    OpenDatabase(m_strDB_Name);
      

  2.   

    用CDatabase::OpenEx函数
         OpenEx(LPCTSTR lpszConnectString, DWORD dwOptions )
    第2个参数用CDatabase::noOdbcDialogCString szSysOdbcConn;
    szSysOdbcConn.Format("DSN=%s;UID=%s;PWD=%s", g_OdbName, g_OUser, g_OPassword );
    CDatabase m_db;
    try
    {
    m_db->OpenEx(szSysOdbcConn, CDatabase::noOdbcDialog);
    }
    catch ( CDBException* e )
      

  3.   

    OpenEx( _T( "DSN=YourDataSource;UID=YourLoginName;PWD=YourPassword" ),
                     CDatabase::noOdbcDialog );