Unix Technical Forum

Connection test button

This is a discussion on Connection test button within the pgsql Interfaces odbc forums, part of the PostgreSQL category; --> Attached a patch that adds a test button to the config dialog to execute a quick connection test based ...


Go Back   Unix Technical Forum > Database Server Software > PostgreSQL > pgsql Interfaces odbc

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-16-2008, 02:09 AM
Andreas Pflug
 
Posts: n/a
Default Connection test button

Attached a patch that adds a test button to the config dialog to execute
a quick connection test based on the current parameters.
Please note that the patch bases on REL-08_01_0200.

Regards,
Andreas


Index: dlg_specific.h
================================================== =================
RCS file: /cvsroot/psqlodbc/psqlodbc/dlg_specific.h,v
retrieving revision 1.46
diff -u -w -b -r1.46 dlg_specific.h
--- dlg_specific.h 26 Jan 2006 18:44:27 -0000 1.46
+++ dlg_specific.h 11 Oct 2006 11:55:58 -0000
@@ -179,6 +179,10 @@
UINT wMsg,
WPARAM wParam,
LPARAM lParam);
+int CALLBACK testProc(HWND hdlg,
+ UINT wMsg,
+ WPARAM wParam,
+ LPARAM lParam);
int CALLBACK ds_options1Proc(HWND hdlg,
UINT wMsg,
WPARAM wParam,
Index: dlg_wingui.c
================================================== =================
RCS file: /cvsroot/psqlodbc/psqlodbc/dlg_wingui.c,v
retrieving revision 1.12
diff -u -w -b -r1.12 dlg_wingui.c
--- dlg_wingui.c 26 Jan 2006 18:44:27 -0000 1.12
+++ dlg_wingui.c 11 Oct 2006 13:58:46 -0000
@@ -264,6 +264,100 @@
return 0;
}

+
+
+#define TM_TEST 42 // what else...
+
+int CALLBACK testProc(HWND hdlg, UINT wMsg, WPARAM wParam, LPARAM lParam)
+{
+ switch (wMsg)
+ {
+ case WM_INITDIALOG:
+ {
+ char buffer[2048]="";
+ ConnectionClass *conn=(ConnectionClass*)lParam;
+ ConnInfo *ci=&conn->connInfo;
+
+ SetWindowLong(hdlg, DWL_USER, lParam); /* save for OK etc */
+
+ if (ci->server[0])
+ sprintf(buffer+strlen(buffer), "Server=%s\r\n", ci->server);
+ if (ci->port[0])
+ sprintf(buffer+strlen(buffer), "Port=%s\r\n", ci->port);
+ if (ci->sslmode[0])
+ sprintf(buffer+strlen(buffer), "SSL-Mode=%s\r\n", ci->sslmode);
+ if (ci->database[0])
+ sprintf(buffer+strlen(buffer), "Database=%s\r\n", ci->database);
+ if (ci->username[0])
+ sprintf(buffer+strlen(buffer), "User=%s\r\n", ci->username);
+
+ strcat(buffer, "Testing connection... ");
+
+ SetDlgItemText(hdlg, IDC_TESTOUTPUT, buffer);
+ EnableWindow(GetDlgItem(hdlg, IDOK), FALSE);
+
+ sprintf(buffer, "Test connection %s", ci->dsn);
+ SetWindowText(hdlg, buffer);
+
+ SetTimer(hdlg, TM_TEST, 10, 0);
+
+ break;
+ }
+ case WM_TIMER:
+ {
+ ConnectionClass *conn=(ConnectionClass*)GetWindowLong(hdlg, DWL_USER);
+ if (conn)
+ {
+ char buffer[2048]="";
+ int rc;
+
+ SetWindowLong(hdlg, DWL_USER, 0);
+ KillTimer(hdlg, TM_TEST);
+ GetDlgItemText(hdlg, IDC_TESTOUTPUT, buffer, sizeof(buffer));
+
+ rc=LIBPQ_connect(conn);
+ if (rc)
+ strcat(buffer, " succeeded.");
+ else
+ {
+ char *src=conn->__error_message;
+ char *dst;
+ strcat(buffer, "failed. libpq reported:\r\n");
+ dst=buffer+strlen(buffer);
+
+ while (*src)
+ {
+ if (*src =='\n')
+ *dst++ = '\r';
+ *dst++ = *src++;
+ }
+ *dst=0;
+ }
+ SetDlgItemText(hdlg, IDC_TESTOUTPUT, buffer);
+
+ CC_Destructor(conn);
+
+ EnableWindow(GetDlgItem(hdlg, IDOK), TRUE);
+ }
+ return TRUE;
+ }
+ case WM_COMMAND:
+ {
+ switch (GET_WM_COMMAND_ID(wParam, lParam))
+ {
+ case IDOK:
+ case IDCANCEL:
+ EndDialog(hdlg, 0);
+ return TRUE;
+ }
+ break;
+ }
+ }
+
+ return FALSE;
+}
+
+
int CALLBACK
driver_optionsProc(HWND hdlg,
UINT wMsg,
Index: psqlodbc.rc
================================================== =================
RCS file: /cvsroot/psqlodbc/psqlodbc/psqlodbc.rc,v
retrieving revision 1.75
diff -u -w -b -r1.75 psqlodbc.rc
--- psqlodbc.rc 31 Jan 2006 13:21:26 -0000 1.75
+++ psqlodbc.rc 11 Oct 2006 13:56:36 -0000
@@ -212,6 +212,15 @@
LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
END

+DLG_TEST DIALOG DISCARDABLE 0, 0, 278, 146
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Test connection"
+FONT 8, "MS Sans Serif"
+BEGIN
+ DEFPUSHBUTTON "OK",IDOK,221,125,50,14
+ EDITTEXT IDC_TESTOUTPUT,7,7,264,114,ES_MULTILINE | ES_AUTOHSCROLL |
+ ES_READONLY | WS_GROUP | NOT WS_TABSTOP
+END

/////////////////////////////////////////////////////////////////////////////
//
@@ -400,14 +409,17 @@
EDITTEXT IDC_USER,57,69,72,12,ES_AUTOHSCROLL
RTEXT "Pass&word",IDC_STATIC,156,72,34,9
EDITTEXT IDC_PASSWORD,192,70,72,12,ES_PASSWORD | ES_AUTOHSCROLL
- DEFPUSHBUTTON "OK",IDOK,12,100,44,15,WS_GROUP
- PUSHBUTTON "Cancel",IDCANCEL,66,100,44,15
- GROUPBOX "Options",IDC_OPTIONS,121,87,177,35,BS_LEFT
- PUSHBUTTON "Datasource",IDC_DATASOURCE,128,101,50,14
- PUSHBUTTON "Global",IDC_DRIVER,184,101,50,14
LTEXT "Please supply any missing information required to connect.",
DRV_MSG_LABEL,12,5,249,10
- PUSHBUTTON "Manage DSN",IDC_MANAGEDSN,240,101,52,14
+
+ GROUPBOX "Options",IDC_OPTIONS,5,86,177,35,BS_LEFT
+ PUSHBUTTON "Datasource",IDC_DATASOURCE,12,100,50,14
+ PUSHBUTTON "Global",IDC_DRIVER,67,100,50,14
+ PUSHBUTTON "Manage DSN",IDC_MANAGEDSN,122,100,52,14
+
+ PUSHBUTTON "Test",IDC_TEST,254,89,44,15
+ DEFPUSHBUTTON "OK",IDOK,203,107,44,15,WS_GROUP
+ PUSHBUTTON "Cancel",IDCANCEL,254,107,44,15
END

DLG_OPTIONS_DRV DIALOGEX 0, 0, 303, 228
Index: resource.h
================================================== =================
RCS file: /cvsroot/psqlodbc/psqlodbc/resource.h,v
retrieving revision 1.36
diff -u -w -b -r1.36 resource.h
--- resource.h 26 Jan 2006 18:44:29 -0000 1.36
+++ resource.h 11 Oct 2006 13:11:34 -0000
@@ -5,7 +5,7 @@
#define IDS_BADDSN 1
#define IDS_MSGTITLE 2
#define IDS_ADVANCE_OPTION_DEF 3
-#define IDOK2 3
+#define IDC_TEST 3
#define IDS_ADVANCE_SAVE 4
#define IDCANCEL2 4
#define IDS_ADVANCE_OPTION_DSN1 5
@@ -20,6 +20,8 @@
#define DLG_OPTIONS_DRV 102
#define DLG_OPTIONS_DS 103
#define DLG_OPTIONS_GLOBAL 104
+#define IDD_DIALOG1 109
+#define DLG_TEST 109
#define IDC_DSNAME 400
#define IDC_DSNAMETEXT 401
#define IDC_DESC 404
@@ -83,14 +85,15 @@
#define IDC_MANAGEDSN 1077
#define IDC_DRIVER_LIST 1078
#define IDC_SSLMODE 1079
+#define IDC_TESTOUTPUT 1082

// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 109
+#define _APS_NEXT_RESOURCE_VALUE 110
#define _APS_NEXT_COMMAND_VALUE 40001
-#define _APS_NEXT_CONTROL_VALUE 1082
+#define _APS_NEXT_CONTROL_VALUE 1083
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
Index: setup.c
================================================== =================
RCS file: /cvsroot/psqlodbc/psqlodbc/setup.c,v
retrieving revision 1.38
diff -u -w -b -r1.38 setup.c
--- setup.c 17 Dec 2005 21:05:44 -0000 1.38
+++ setup.c 11 Oct 2006 14:00:45 -0000
@@ -283,6 +283,19 @@
EndDialog(hdlg, wParam);
return TRUE;

+ case IDC_TEST:
+ {
+ ConnectionClass *conn=CC_Constructor();
+ if (conn)
+ {
+ GetDlgStuff(hdlg, &conn->connInfo);
+ GetDlgItemText(hdlg, IDC_DSNAME, (char*)&conn->connInfo.dsn, sizeof(conn->connInfo.dsn));
+ DialogBoxParam(s_hModule, MAKEINTRESOURCE(DLG_TEST), hdlg, testProc, (LPARAM)conn);
+
+ return TRUE;
+ }
+ break;
+ }
case IDC_DATASOURCE:
lpsetupdlg = (LPSETUPDLG) GetWindowLong(hdlg, DWL_USER);
DialogBoxParam(s_hModule, MAKEINTRESOURCE(DLG_OPTIONS_DRV),




---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql.org so that your
message can get through to the mailing list cleanly

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 08:48 AM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0
www.UnixAdminTalk.com