home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 February / PCWK0296.iso / po7_win / object10 / logedt.cpp < prev    next >
C/C++ Source or Header  |  1994-11-13  |  3KB  |  107 lines

  1. /* Copyright (c) Oracle Corporation 1994.  All Rights Reserved */
  2.  
  3. /*
  4.     Sample database login dialog
  5.     
  6.     implements the logdlg class
  7.     
  8. */
  9.  
  10. #include "stdafx.h"  // standard header for MFC
  11. #include "resource.h" // get resource ids
  12. #include "logdlg.h"  // header for this module
  13.  
  14. #ifdef _DEBUG
  15. #undef THIS_FILE
  16. static char BASED_CODE THIS_FILE[] = __FILE__;
  17. #endif
  18.  
  19. // utility function
  20. static void ErrorMessage(const char *msg)
  21. {
  22.     AfxMessageBox(msg);
  23. }
  24.  
  25. /////////////////////////////////////////////////////////////////////////////
  26. // logdlg dialog
  27.  
  28.  
  29. logdlg::logdlg(CWnd* pParent /*=NULL*/)
  30.     : CDialog(logdlg::IDD, pParent)
  31. {
  32.     //{{AFX_DATA_INIT(logdlg)
  33.         // NOTE: the ClassWizard will add member initialization here
  34.     //}}AFX_DATA_INIT
  35. }
  36.  
  37. void logdlg::DoDataExchange(CDataExchange* pDX)
  38. {
  39.     CDialog::DoDataExchange(pDX);
  40.     //{{AFX_DATA_MAP(logdlg)
  41.         // NOTE: the ClassWizard will add DDX and DDV calls here
  42.     //}}AFX_DATA_MAP
  43. }
  44.  
  45. BEGIN_MESSAGE_MAP(logdlg, CDialog)
  46.     //{{AFX_MSG_MAP(logdlg)
  47.     //}}AFX_MSG_MAP
  48. END_MESSAGE_MAP()
  49.  
  50.  
  51. // Get the database connection
  52. ODatabase logdlg::GetLogin(long dboptions)
  53.     // open the session object as the default (unnamed) session
  54.     if (!m_session.IsOpen())
  55.     {
  56.         if (m_session.Open() != OSUCCESS)
  57.         {
  58.             ErrorMessage("Couldn't get session");
  59.             return(m_database);  // return of unopened ODatabase indicates error
  60.         }
  61.     }
  62.     
  63.     // remember the options we want to use to open the database
  64.     m_options = dboptions;
  65.     
  66.     // run the dialog
  67.     DoModal();
  68.     
  69.     // either OK worked (opened the database) or the user pressed cancel.  In either
  70.     //  case we just have to hand back the database object, opened or not
  71.     return(m_database);
  72. }
  73.  
  74. /////////////////////////////////////////////////////////////////////////////
  75. // logdlg message handlers
  76.  
  77. void logdlg::OnOK()
  78. {
  79.     CString dbname;   // database name string
  80.     CString user;     // user name string
  81.     CString password; // password string
  82.     
  83.     // get the strings the user has entered
  84.     GetDlgItem(IDC_USERNAME)->GetWindowText(user);
  85.     GetDlgItem(IDC_PASSWORD)->GetWindowText(password);
  86.     GetDlgItem(IDC_DATABASE)->GetWindowText(dbname);
  87.     
  88.     // try to open the database
  89.     if (m_database.Open(m_session, dbname, user, password, m_options) != OSUCCESS)
  90.     { // some error
  91.            // get the oracle error number
  92.         long oraerr = m_session.ServerErrorNumber();
  93.  
  94.            // get the oracle error message, to display to the user
  95.         const char *dberrs = m_session.GetServerErrorText();
  96.         ErrorMessage(dberrs); // tell user what went wrong
  97.     }
  98.     else
  99.     {
  100.         // we're done - get out of the dialog    
  101.         CDialog::OnOK();
  102.     } 
  103.     
  104.     return;
  105. }
  106.