home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Internet Business Development Kit / PRODUCT_CD.iso / sqlsvr / odbcsdk / samples / smpldrvr / connect.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-12-07  |  4.1 KB  |  204 lines

  1. /*
  2. ** CONNECT.C - This is the ODBC sample driver code for
  3. ** allocation and connection.
  4. **
  5. **    This code is furnished on an as-is basis as part of the ODBC SDK and is
  6. **    intended for example purposes only.
  7. **
  8. */
  9.  
  10. //    -    -    -    -    -    -    -    -    -
  11.  
  12. #include "sample.h"
  13. #include "ctl3d.h"
  14.  
  15. //    -    -    -    -    -    -    -    -    -
  16.  
  17. //    CONNECT.C
  18. //
  19. //    SQLC connection functions.
  20.  
  21. //    -    -    -    -    -    -    -    -    -
  22.  
  23. //    Allocate an environment (ENV) block.
  24.  
  25. RETCODE SQL_API SQLAllocEnv(
  26.     HENV FAR *phenv)
  27. {
  28.  
  29.     *phenv = (HENV FAR *)NULL;
  30.     return SQL_SUCCESS;
  31. }
  32.  
  33. //    -    -    -    -    -    -    -    -    -
  34.  
  35. //    Allocate a DBC block.
  36.  
  37. RETCODE SQL_API SQLAllocConnect(
  38.     HENV     henv,
  39.     HDBC FAR *phdbc)
  40. {
  41.     HGLOBAL    hdbc;
  42.  
  43.     hdbc = GlobalAlloc (GMEM_MOVEABLE | GMEM_ZEROINIT, sizeof (DBC));
  44.     if (!hdbc || (*phdbc = (HDBC)GlobalLock (hdbc)) == SQL_NULL_HDBC)
  45.     {
  46.         GlobalFree (hdbc);    //    Free it if lock fails
  47.         return SQL_ERROR;
  48.     }
  49.     return SQL_SUCCESS;
  50. }
  51.  
  52. //    -    -    -    -    -    -    -    -    -
  53.  
  54. RETCODE SQL_API SQLConnect(
  55.     HDBC      hdbc,
  56.     UCHAR FAR *szDSN,
  57.     SWORD      cbDSN,
  58.     UCHAR FAR *szUID,
  59.     SWORD      cbUID,
  60.     UCHAR FAR *szAuthStr,
  61.     SWORD      cbAuthStr)
  62. {
  63.     return SQL_SUCCESS;
  64. }
  65.  
  66. //    -    -    -    -    -    -    -    -    -
  67.  
  68. //    Sample Dialog Proc for SQLDriverConnect.
  69. //    This has to be exported or subtle, yet very rude, things will happen.
  70.  
  71. BOOL FAR PASCAL FDriverConnectProc(
  72.     HWND    hdlg,
  73.     WORD    wMsg,
  74.     WPARAM  wParam,
  75.     LPARAM  lParam)
  76. {
  77.     switch (wMsg) {
  78.     case WM_INITDIALOG:
  79.         Ctl3dRegister (s_hModule);
  80. #ifdef WIN32
  81.         Ctl3dSubclassDlg(hdlg, CTL3D_ALL);
  82. #else
  83.         Ctl3dSubclassDlgEx(hdlg, CTL3D_ALL);
  84. #endif
  85.         return TRUE;
  86.  
  87. #ifdef WIN32
  88.     case WM_CTLCOLORBTN:
  89.     case WM_CTLCOLORDLG:
  90.     case WM_CTLCOLOREDIT:
  91.     case WM_CTLCOLORLISTBOX:
  92.     case WM_CTLCOLORMSGBOX:
  93.     case WM_CTLCOLORSCROLLBAR:    
  94.     case WM_CTLCOLORSTATIC:
  95.         return (BOOL)Ctl3dCtlColorEx(wMsg, wParam, lParam);
  96.  
  97.     case WM_SETTEXT:
  98.     case WM_NCPAINT:
  99.     case WM_NCACTIVATE:
  100.         SetWindowLong(hdlg, DWL_MSGRESULT,
  101.             Ctl3dDlgFramePaint(hdlg, wMsg, wParam, lParam));
  102.         return TRUE;
  103. #endif
  104.  
  105.     case WM_SYSCOLORCHANGE:
  106.         return Ctl3dColorChange();
  107.  
  108.     case WM_COMMAND:
  109.         switch (GET_WM_COMMAND_ID(wParam, lParam)) {
  110.         case IDOK:
  111.  
  112.         case IDCANCEL:
  113.             Ctl3dUnregister (s_hModule);
  114.             EndDialog(hdlg, GET_WM_COMMAND_ID(wParam, lParam) == IDOK);
  115.             return TRUE;
  116.         }
  117.     }
  118.     return FALSE;
  119. }
  120.  
  121. //    -    -    -    -    -    -    -    -    -
  122.  
  123. //    This function as its "normal" behavior is supposed to bring up a
  124. //    dialog box if it isn't given enough information via "szConnStrIn".  If
  125. //    it is given enough information, it's supposed to use "szConnStrIn" to
  126. //    establish a database connection.  In either case, it returns a
  127. //    string to the user that is the string that was eventually used to
  128. //    establish the connection.
  129.  
  130. RETCODE SQL_API SQLDriverConnect(
  131.     HDBC      hdbc,
  132.     HWND      hwnd,
  133.     UCHAR FAR *szConnStrIn,
  134.     SWORD      cbConnStrIn,
  135.     UCHAR FAR *szConnStrOut,
  136.     SWORD      cbConnStrOutMax,
  137.     SWORD FAR *pcbConnStrOut,
  138.     UWORD      fDriverCompletion)
  139. {
  140.     short    iRet;
  141.     BOOL    fPrompt = FALSE;
  142.  
  143.     if ((szConnStrIn == NULL) || (!cbConnStrIn) ||
  144.         ((cbConnStrIn == SQL_NTS) && (!szConnStrIn[0])))
  145.         fPrompt = TRUE;
  146.     else {
  147.         //    Check connection string for completeness
  148.         if (fDriverCompletion == SQL_DRIVER_COMPLETE ||
  149.             fDriverCompletion == SQL_DRIVER_PROMPT)
  150.             fPrompt = TRUE;
  151.     }
  152.     if (fPrompt) {
  153.         //
  154.         //    It is not necessary to call "MakeProcInstance" if you
  155.         //    generate a dialog box from a DLL.
  156.         //
  157.         iRet = DialogBox(s_hModule, MAKEINTRESOURCE(EDRIVERCONNECT), hwnd,
  158.             FDriverConnectProc);
  159.         if ((!iRet) || (iRet == -1))
  160.             return SQL_NO_DATA_FOUND;
  161.     }
  162.     return SQL_SUCCESS;
  163. }
  164.  
  165. //    -    -    -    -    -    -    -    -    -
  166.  
  167. RETCODE SQL_API SQLBrowseConnect(
  168.     HDBC      hdbc,
  169.     UCHAR FAR *szConnStrIn,
  170.     SWORD      cbConnStrIn,
  171.     UCHAR FAR *szConnStrOut,
  172.     SWORD      cbConnStrOutMax,
  173.     SWORD FAR *pcbConnStrOut)
  174. {
  175.     return SQL_SUCCESS;
  176. }
  177.  
  178. //    -    -    -    -    -    -    -    -    -
  179.  
  180. RETCODE SQL_API SQLDisconnect(
  181.     HDBC      hdbc)
  182. {
  183.     return SQL_SUCCESS;
  184. }
  185.  
  186. //    -    -    -    -    -    -    -    -    -
  187.  
  188. RETCODE SQL_API SQLFreeConnect(
  189.     HDBC      hdbc)
  190. {
  191.     GlobalUnlock (GlobalPtrHandle(hdbc));
  192.     GlobalFree (GlobalPtrHandle(hdbc));
  193.     return SQL_SUCCESS;
  194. }
  195.  
  196. //    -    -    -    -    -    -    -    -    -
  197.  
  198. RETCODE SQL_API SQLFreeEnv(
  199.     HENV      henv)
  200. {
  201.  
  202.     return SQL_SUCCESS;
  203. }
  204.