Pantek Library
Hosting Provided By
CybrHost
High Speed Hosting

Connector/ODBC 3.51 commit: r831 - in branches/guffert: util wingui wingui/dialog wingui/odbcdialogparams

From: <jbalint(at)mysql.com>
Date: Wed Oct 31 2007 - 20:30:47 EDT


Added:

   branches/guffert/wingui/dialog/callbacks.cpp
   branches/guffert/wingui/dialog/callbacks.h
   branches/guffert/wingui/dialog/utils.cpp
   branches/guffert/wingui/dialog/utils.h
Removed:
   branches/guffert/wingui/odbcdialogparams/callbacks.cpp
   branches/guffert/wingui/odbcdialogparams/callbacks.h
   branches/guffert/wingui/odbcdialogparams/utils.cpp
   branches/guffert/wingui/odbcdialogparams/utils.h
Modified:
   branches/guffert/util/installer.c
   branches/guffert/util/installer.h
   branches/guffert/util/stringutil.h
   branches/guffert/wingui/CMakeLists.txt
   branches/guffert/wingui/ConfigDSN.c
   branches/guffert/wingui/odbcdialogparams/TabCtrl.cpp
   branches/guffert/wingui/odbcdialogparams/main.cpp
   branches/guffert/wingui/odbcdialogparams/odbcdialogparams.cpp
   branches/guffert/wingui/odbcdialogparams/odbcdialogparams.h
   branches/guffert/wingui/odbcdialogparams/tooltip.cpp
Log:
added individual parameter flags to DataSource struct (used in wingui) added extern "C" to needed headers
removed unused files from CMakeLists.txt finished ConfigDSN to handle add/edit/remove updated callbacks to just be called as normal functions (we never have different callbacks) removed use of precompiled header (stdafx) fixed odbcdialogparams.cpp to only use wchar strings and removed some unneeded stuff

Modified: branches/guffert/util/installer.c


  • branches/guffert/util/installer.c 2007-10-30 19:56:13 UTC (rev 830) +++ branches/guffert/util/installer.c 2007-11-01 00:30:47 UTC (rev 831)
    @@ -190,9 +190,12 @@
 /*
- * Lookup a driver given only the filename of the driver. This is used
- * to support prompting for additional DSN info upon connect when the
+ * Lookup a driver given only the filename of the driver. This is used:
+ *
+ * When prompting for additional DSN info upon connect when the
  * driver uses an external setup library.
+ *
+ * When testing a connection when adding/editing a DSN.
  */

 int driver_lookup_name(Driver *driver)
 {

Modified: branches/guffert/util/installer.h


  • branches/guffert/util/installer.h 2007-10-30 19:56:13 UTC (rev 830) +++ branches/guffert/util/installer.h 2007-11-01 00:30:47 UTC (rev 831)
    @@ -107,7 +107,35 @@
    SQLCHAR *sslca8; SQLCHAR *sslcapath8; SQLCHAR *sslcipher8; - /* A bitmask of all options carried over from MyODBC 3.51 */ + + /* flags 1 */ + BOOL dont_optimize_column_width; + BOOL return_matching_rows; + BOOL allow_big_results; + BOOL use_compressed_protocol; + BOOL change_bigint_columns_to_int; + BOOL safe; + BOOL enable_auto_reconnect; + BOOL enable_auto_increment_null_search; + /* flags 2 */ + BOOL dont_prompt_upon_connect; + BOOL enable_dynamic_cursor; + BOOL ignore_N_in_name_table; + BOOL user_manager_cursor; + BOOL dont_use_set_locale; + BOOL pad_char_to_full_length; + BOOL dont_cache_result; + /* flags 3 */ + BOOL return_table_names_for_SqlDesribeCol; + BOOL ignore_space_after_function_names; + BOOL force_use_of_named_pipes; + BOOL no_catalog; + BOOL read_options_from_mycnf; + BOOL disable_transactions; + BOOL force_use_of_forward_only_cursors; + /* debug */ + BOOL save_queries; + } DataSource;

 DataSource *ds_new();

Modified: branches/guffert/util/stringutil.h


  • branches/guffert/util/stringutil.h 2007-10-30 19:56:13 UTC (rev 830) +++ branches/guffert/util/stringutil.h 2007-11-01 00:30:47 UTC (rev 831)
    @@ -28,6 +28,10 @@
    #ifndef _STRINGUTIL_H #define _STRINGUTIL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+

 #include "../MYODBC_MYSQL.h"  

 #include <string.h>
@@ -96,5 +100,9 @@

 SQLWCHAR *sqlwcharncpy(SQLWCHAR *dest, const SQLWCHAR *src, size_t n);    

+#ifdef __cplusplus
+}
+#endif
+

 #endif /* _STRINGUTIL_H */  

Modified: branches/guffert/wingui/CMakeLists.txt


  • branches/guffert/wingui/CMakeLists.txt 2007-10-30 19:56:13 UTC (rev 830) +++ branches/guffert/wingui/CMakeLists.txt 2007-11-01 00:30:47 UTC (rev 831)
    @@ -25,15 +25,9 @@
    ADD_LIBRARY(myodbc5S SHARED dialog/callbacks.cpp dialog/callbacks.h - dialog/dialog.cpp - dialog/dialog.h - dialog/stdafx.cpp - dialog/stdafx.h dialog/utils.cpp dialog/utils.h odbcdialogparams/main.cpp - odbcdialogparams/myString.cpp - odbcdialogparams/myString.h odbcdialogparams/odbcdialogparams.cpp odbcdialogparams/odbcdialogparams.h odbcdialogparams/odbcdialogparams.rc
    @@ -45,6 +39,7 @@
    myodbc5S.def )

+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR})  INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/util)  

Do you need help?X

 TARGET_LINK_LIBRARIES(myodbc5S

Modified: branches/guffert/wingui/ConfigDSN.c


  • branches/guffert/wingui/ConfigDSN.c 2007-10-30 19:56:13 UTC (rev 830) +++ branches/guffert/wingui/ConfigDSN.c 2007-11-01 00:30:47 UTC (rev 831)
    @@ -18,41 +18,76 @@
    along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+#ifdef _WIN32
+#include 
+#endif
+#include 
+#include 
 #include "installer.h"

+#include "stringutil.h"
+#include "odbcdialogparams/odbcdialogparams.h"  

-/* Add, edit, or remove a Data Source Name (DSN). */

+/*
+   Add, edit, or remove a Data Source Name (DSN). This function is
+   called by "Data Source Administrator" on Windows, or similar
+   application on Unix.
+*/
 BOOL INSTAPI ConfigDSNW(HWND hWnd, WORD nRequest, LPCWSTR pszDriver,
                         LPCWSTR pszAttributes)
 {
- DataSource *ds= ds_new();
+  DataSource *ds= ds_new();
Do you need more help?X
+ BOOL rc= TRUE; + SQLWCHAR *driverfile;

+ if (*pszAttributes)
+ {

     if (ds_from_kvpair(ds, pszAttributes, (SQLWCHAR)';'))
     {
         SQLPostInstallerError(ODBC_ERROR_INVALID_KEYWORD_VALUE,
                               /* TODO can't be long string */
                               L"Invalid attribute string");
+        rc= FALSE;
         goto exitConfigDSN;
     }
+    if (ds_lookup(ds))
+    {
+      /* ds_lookup() will already set SQLInstallerError */
+      rc= FALSE;
+      goto exitConfigDSN;

+ }
+ }  
  • switch ( nRequest ) + /* + We set the actual name of the driver on the DataSource. This is + needed when testing the connection. We save the file name (which + was given to us, to save back to the registry). + */ + driverfile= ds->driver; + ds->driver= NULL; + /* TODO .... constant for driver name */ + ds_set_strattr(&ds->driver, L"MySQL ODBC 5.1 Driver"); + + switch (nRequest) + { + case ODBC_ADD_DSN: + case ODBC_CONFIG_DSN: + if (ShowOdbcParamsDialog(ds, hWnd) == 1) { -#if 0
  • case ODBC_ADD_DSN:
  • /*bReturn = MYODBCSetupConfigDSNAdd( hWnd, pDataSource );*/
  • break;
  • case ODBC_CONFIG_DSN:
  • bReturn = MYODBCSetupConfigDSNEdit( hWnd, pDataSource );
  • break;
  • case ODBC_REMOVE_DSN:
  • bReturn = MYODBCSetupConfigDSNRemove( pDataSource );
  • break;
  • default:
  • SQLPostInstallerError( ODBC_ERROR_INVALID_REQUEST_TYPE, "Invalid request." ); -#endif + ds_set_strattr(&ds->driver, driverfile); + /* save datasource */ + if (ds_add(ds)) + rc= FALSE; } + break; + case ODBC_REMOVE_DSN: + if (SQLRemoveDSNFromIni(ds->name) != TRUE) + rc= FALSE; + break; + }

 exitConfigDSN:
- ds_delete(ds);
- return TRUE;

+  x_free(driverfile);
+  ds_delete(ds);
+  return rc;

 }  

Copied: branches/guffert/wingui/dialog/callbacks.cpp (from rev 828, branches/guffert/wingui/setup/callbacks.cpp)


  • branches/guffert/wingui/dialog/callbacks.cpp (rev 0) +++ branches/guffert/wingui/dialog/callbacks.cpp 2007-11-01 00:30:47 UTC (rev 831)
    @@ -0,0 +1,117 @@
    +/**************************************************************************** + * * + * File : * + * * + * Purpose : GUI Callbacks * + * * + * History : Date Reason * + * 00/00/00 Created * + * * + ****************************************************************************/ + +#include "callbacks.h" +#include "stringutil.h" + +WCHAR ** errorMsgs = NULL; + +SQLHDBC hDBC = SQL_NULL_HDBC; + +wchar_t * mytest(HWND hwnd, DataSource* params) +{ + SQLHDBC hDbc = hDBC; + SQLHENV hEnv = SQL_NULL_HENV; + + if ( SQL_SUCCEEDED( Connect( hDbc, hEnv, params ) ) ) + return sqlwchardup(L"Connection successful", SQL_NTS); + else + { + wchar_t *tmp= (wchar_t *) my_malloc(512 * sizeof(SQLWCHAR), MYF(0)); + SQLWCHAR state[10]; + SQLINTEGER native; + SQLSMALLINT len; + *tmp= 0; + + wcscat(tmp, L"Connection Failed: ["); + len= sqlwcharlen(tmp); + SQLGetDiagRecW(SQL_HANDLE_DBC, hDbc, 1, state, &native, + tmp + len + 7, 512 - len - 8, &len); + sqlwcharncpy(tmp + sqlwcharlen(tmp), state, 6); + *(tmp + sqlwcharlen(tmp) + 1) = ' '; + *(tmp + sqlwcharlen(tmp)) = ']'; + + return tmp; + } + + Disconnect( hDbc, hEnv ); +} + +BOOL mytestaccept(HWND hwnd, DataSource* params) +{ + /* TODO validation */ + return TRUE; +} + +LIST *mygetdatabases(HWND hwnd, DataSource* params) +{ + SQLHENV hEnv = SQL_NULL_HENV; + SQLHDBC hDbc = hDBC; + SQLHSTMT hStmt; + SQLRETURN nReturn; + SQLWCHAR szCatalog[MYODBC_DB_NAME_MAX]; + SQLLEN nCatalog; + LIST *dbs= NULL; + + nReturn = Connect( hDbc, hEnv, params ); + + if ( nReturn != SQL_SUCCESS ) + ShowDiagnostics( nReturn, SQL_HANDLE_DBC, hDbc ); + if ( !SQL_SUCCEEDED(nReturn) ) + { + Disconnect( hDbc,hEnv ); + return NULL; + } + + nReturn = SQLAllocHandle( SQL_HANDLE_STMT, hDbc, &hStmt ); + if ( nReturn != SQL_SUCCESS ) + ShowDiagnostics( nReturn, SQL_HANDLE_DBC, hDbc ); + if ( !SQL_SUCCEEDED(nReturn) ) + { + Disconnect( hDbc,hEnv ); + return NULL; + } + + nReturn = SQLTablesW( hStmt, (SQLWCHAR*)SQL_ALL_CATALOGS, SQL_NTS, (SQLWCHAR*)L"", SQL_NTS, (SQLWCHAR*)L"", 0, (SQLWCHAR*)L"", 0 ); + + if ( nReturn != SQL_SUCCESS ) + ShowDiagnostics( nReturn, SQL_HANDLE_STMT, hStmt ); + if ( !SQL_SUCCEEDED(nReturn) ) + { + Disconnect( hStmt, hDbc, hEnv ); + return NULL; + } + + nReturn = SQLBindCol( hStmt, 1, SQL_C_WCHAR, szCatalog, MYODBC_DB_NAME_MAX, &nCatalog ); + while ( TRUE ) + { + nReturn = SQLFetch( hStmt ); + + if ( nReturn == SQL_NO_DATA ) + break; + else if ( nReturn != SQL_SUCCESS ) + ShowDiagnostics( nReturn, SQL_HANDLE_STMT, hStmt ); + if ( SQL_SUCCEEDED(nReturn) ) + dbs= list_cons(sqlwchardup(szCatalog, SQL_NTS), dbs); + else + break; + } + + Disconnect( hStmt, hDbc, hEnv ); + + return list_reverse(dbs); +} + +void myhelp(HWND hwnd) +{ + /** TODO: Rewrite - Shouldn't be windows stuff here */ + MessageBoxW(hwnd, L"HELP", L"Sorry, Help is not Available", MB_OK); +}

Copied: branches/guffert/wingui/dialog/callbacks.h (from rev 828, branches/guffert/wingui/setup/callbacks.h)


  • branches/guffert/wingui/dialog/callbacks.h (rev 0) +++ branches/guffert/wingui/dialog/callbacks.h 2007-11-01 00:30:47 UTC (rev 831)
    @@ -0,0 +1,19 @@
    +#ifndef _CALLBACKS_H +#define _CALLBACKS_H + +#ifdef _WIN32 +#include <windows.h> +#endif + +#include "MYODBC_MYSQL.h" +#include "utils.h" + +/* Max DB name len, used when retrieving database list */ +#define MYODBC_DB_NAME_MAX 255 + +wchar_t *mytest(HWND hwnd, DataSource* params); +BOOL mytestaccept(HWND hwnd, DataSource* params); +LIST *mygetdatabases(HWND hwnd, DataSource* params); +void myhelp(HWND hwnd); + +#endif

Copied: branches/guffert/wingui/dialog/utils.cpp (from rev 828, branches/guffert/wingui/setup/utils.cpp)


  • branches/guffert/wingui/dialog/utils.cpp (rev 0) +++ branches/guffert/wingui/dialog/utils.cpp 2007-11-01 00:30:47 UTC (rev 831)
    @@ -0,0 +1,224 @@
    +/**************************************************************************** + * * + * File : * + * * + * Purpose : utilities for callbacks. * + * * + * History : Date Reason * + * 00/00/00 Created * + * * + ****************************************************************************/ + +/*#include "stdafx.h"*/ + +/** couple of temporary hacks to make it compile here*/ +/*typedef char byte;*/ +#ifdef _WIN32 +#include <winsock2.h> +#endif +/** end hacks */ + +#include <sql.h> + +#include "utils.h" + +#include "../driver/driver.h" +#include "../util/stringutil.h" +#include "../util/MYODBCUtil.h" + + +extern SQLHDBC hDBC; +extern WCHAR ** errorMsgs; + +void DecompileOptions(DataSource *params) +{ + ulong nOptions = sqlwchartoul( params->option ); + + params->dont_optimize_column_width= (nOptions & FLAG_FIELD_LENGTH) > 0; + params->return_matching_rows= (nOptions & FLAG_FOUND_ROWS) > 0; /* 2 */ + params->allow_big_results= (nOptions & FLAG_BIG_PACKETS) > 0; + params->dont_prompt_upon_connect= (nOptions & FLAG_NO_PROMPT) > 0; + params->enable_dynamic_cursor= (nOptions & FLAG_DYNAMIC_CURSOR) > 0; + params->ignore_N_in_name_table= (nOptions & FLAG_NO_SCHEMA) > 0; + params->user_manager_cursor= (nOptions & FLAG_NO_DEFAULT_CURSOR) > 0; + params->dont_use_set_locale= (nOptions & FLAG_NO_LOCALE) > 0; + params->pad_char_to_full_length= (nOptions & FLAG_PAD_SPACE) > 0; + params->return_table_names_for_SqlDesribeCol= (nOptions & FLAG_FULL_COLUMN_NAMES) > 0; + params->use_compressed_protocol= (nOptions & FLAG_COMPRESSED_PROTO) > 0; + params->ignore_space_after_function_names= (nOptions & FLAG_IGNORE_SPACE) > 0; + params->force_use_of_named_pipes= (nOptions & FLAG_NAMED_PIPE) > 0; + params->change_bigint_columns_to_int= (nOptions & FLAG_NO_BIGINT) > 0; + params->no_catalog= (nOptions & FLAG_NO_CATALOG) > 0; + params->read_options_from_mycnf= (nOptions & FLAG_USE_MYCNF) > 0; + params->safe= (nOptions & FLAG_SAFE) > 0; + params->disable_transactions= (nOptions & FLAG_NO_TRANSACTIONS) > 0; + params->save_queries= (nOptions & FLAG_LOG_QUERY) > 0; + params->dont_cache_result= (nOptions & FLAG_NO_CACHE) > 0; + params->force_use_of_forward_only_cursors= (nOptions & FLAG_FORWARD_CURSOR) > 0; + params->enable_auto_reconnect= (nOptions & FLAG_AUTO_RECONNECT) > 0; + params->enable_auto_increment_null_search= (nOptions & FLAG_AUTO_IS_NULL ) > 0; +} + +void FreeEnvHandle( SQLHENV &hEnv ) +{ + if ( hDBC == SQL_NULL_HDBC ) + SQLFreeHandle( SQL_HANDLE_ENV, hEnv ); +} + + +void Disconnect( SQLHDBC &hDbc, SQLHENV &hEnv ) +{ + SQLDisconnect( hDbc ); + + if ( hDBC == SQL_NULL_HDBC ) + SQLFreeHandle( SQL_HANDLE_DBC, hDbc ); + + FreeEnvHandle( hEnv ); +} + + +void Disconnect( SQLHSTMT &hStmt, SQLHDBC &hDbc, SQLHENV &hEnv ) +{ + SQLFreeHandle( SQL_HANDLE_STMT, hStmt ); + + Disconnect( hDbc, hEnv ); +} + + +SQLRETURN Connect( SQLHDBC & hDbc, SQLHENV & hEnv, DataSource * params ) +{ + SQLRETURN nReturn; + SQLWCHAR stringConnectIn[1024] = {0}; + + /* Blank out DSN name, otherwise it will pull the info from the registry */ + ds_set_strattr(&params->name, NULL); + + if (ds_to_kvpair(params, stringConnectIn, 1024-1, ';') == -1) + { + /* TODO error message..... */ + return SQL_ERROR; + } + + if ( hDBC == SQL_NULL_HDBC ) + { + nReturn = SQLAllocHandle( SQL_HANDLE_ENV, NULL, &hEnv ); + + if ( nReturn != SQL_SUCCESS ) + ShowDiagnostics( nReturn, SQL_HANDLE_ENV, NULL ); + + if ( !SQL_SUCCEEDED(nReturn) ) + return nReturn; + + nReturn = SQLSetEnvAttr( hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0 ); + + if ( nReturn != SQL_SUCCESS ) + ShowDiagnostics( nReturn, SQL_HANDLE_ENV, NULL ); + + if ( !SQL_SUCCEEDED(nReturn) ) + { + return nReturn; + } + + nReturn = SQLAllocHandle( SQL_HANDLE_DBC, hEnv, &hDbc ); + if ( nReturn != SQL_SUCCESS ) + ShowDiagnostics( nReturn, SQL_HANDLE_ENV, hEnv ); + if ( !SQL_SUCCEEDED(nReturn) ) + { + return nReturn; + } + } + + nReturn = SQLDriverConnectW( hDbc, NULL, (SQLWCHAR*)( stringConnectIn ), SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT ); + + if ( nReturn != SQL_SUCCESS ) + ShowDiagnostics( nReturn, SQL_HANDLE_DBC, hDbc ); + + return nReturn; +} + + +void ShowDiagnostics( SQLRETURN nReturn, SQLSMALLINT nHandleType, SQLHANDLE h ) +{ + BOOL bDiagnostics = FALSE; + SQLSMALLINT nRec = 1; + SQLWCHAR szSQLState[6]; + SQLINTEGER nNative; + SQLWCHAR szMessage[SQL_MAX_MESSAGE_LENGTH]; + SQLSMALLINT nMessage; + + if ( h ) + { + *szSQLState = '\0'; + *szMessage = '\0'; + + while ( SQL_SUCCEEDED( SQLGetDiagRecW( nHandleType, + h, + nRec, + szSQLState, + &nNative, + szMessage, + SQL_MAX_MESSAGE_LENGTH, + &nMessage ) ) ) + { + szSQLState[5] = '\0'; + szMessage[SQL_MAX_MESSAGE_LENGTH - 1] = '\0'; + + + //add2list(errorMsgs, szMessage); + + bDiagnostics = TRUE; + nRec++; + + *szSQLState = '\0'; + *szMessage = '\0'; + } + } + + switch ( nReturn ) + { + case SQL_ERROR: + //strAssign( popupMsg, L"Request returned with SQL_ERROR." );//, L"MYODBCConfig" ); + break; + case SQL_SUCCESS_WITH_INFO: + //strAssign( popupMsg, L"Request return with SQL_SUCCESS_WITH_INFO." );//, L"MYODBCConfig" ); + break; + case SQL_INVALID_HANDLE: + //strAssign( popupMsg, L"Request returned with SQL_INVALID_HANDLE." );//, L"MYODBCConfig" ); + break; + default: + //strAssign( popupMsg, L"Request did not return with SQL_SUCCESS." );//, L"MYODBCConfig" ); + break; + } +} + + +unsigned long CompileOptions( DataSource * params ) +{ + unsigned long nFlags = 0; + + if (params->dont_optimize_column_width) nFlags |= FLAG_FIELD_LENGTH; + if (params->return_matching_rows) nFlags |= FLAG_FOUND_ROWS; /* 2 */ + if (params->allow_big_results) nFlags |= FLAG_BIG_PACKETS; + if (params->dont_prompt_upon_connect) nFlags |= FLAG_NO_PROMPT; + if (params->enable_dynamic_cursor) nFlags |= FLAG_DYNAMIC_CURSOR; + if (params->ignore_N_in_name_table) nFlags |= FLAG_NO_SCHEMA; + if (params->user_manager_cursor) nFlags |= FLAG_NO_DEFAULT_CURSOR; + if (params->dont_use_set_locale) nFlags |= FLAG_NO_LOCALE; + if (params->pad_char_to_full_length) nFlags |= FLAG_PAD_SPACE; + if (params->return_table_names_for_SqlDesribeCol) nFlags |= FLAG_FULL_COLUMN_NAMES; + if (params->use_compressed_protocol) nFlags |= FLAG_COMPRESSED_PROTO; + if (params->ignore_space_after_function_names) nFlags |= FLAG_IGNORE_SPACE; + if (params->force_use_of_named_pipes) nFlags |= FLAG_NAMED_PIPE; + if (params->change_bigint_columns_to_int) nFlags |= FLAG_NO_BIGINT; + if (params->no_catalog) nFlags |= FLAG_NO_CATALOG; + if (params->read_options_from_mycnf) nFlags |= FLAG_USE_MYCNF; + if (params->safe) nFlags |= FLAG_SAFE; + if (params->disable_transactions) nFlags |= FLAG_NO_TRANSACTIONS; + if (params->save_queries) nFlags |= FLAG_LOG_QUERY; + if (params->dont_cache_result) nFlags |= FLAG_NO_CACHE; + if (params->force_use_of_forward_only_cursors) nFlags |= FLAG_FORWARD_CURSOR; + if (params->enable_auto_reconnect) nFlags |= FLAG_AUTO_RECONNECT; + if (params->enable_auto_increment_null_search) nFlags |= FLAG_AUTO_IS_NULL; + + return nFlags; +}
Can we help you?X

Copied: branches/guffert/wingui/dialog/utils.h (from rev 828, branches/guffert/wingui/setup/utils.h)


  • branches/guffert/wingui/dialog/utils.h (rev 0) +++ branches/guffert/wingui/dialog/utils.h 2007-11-01 00:30:47 UTC (rev 831)
    @@ -0,0 +1,18 @@
    +#ifndef _CALLBACKS_UTILS_ + +#define _CALLBACKS_UTILS_ + +#include "installer.h" + +#include <sql.h> + +void ShowDiagnostics ( SQLRETURN nReturn, SQLSMALLINT nHandleType, SQLHANDLE h ); +void FreeEnvHandle ( SQLHENV &hEnv ); +void Disconnect ( SQLHDBC &hDbc, SQLHENV &hEnv ); +void Disconnect ( SQLHSTMT &hStmt, SQLHDBC &hDbc, SQLHENV &hEnv ); +//const myString & buildConnectString ( DataSource* params ); +SQLRETURN Connect ( SQLHDBC & hDbc, SQLHENV & hEnv, DataSource * params ); +unsigned long CompileOptions ( DataSource * params ); +void DecompileOptions ( DataSource *src ); + +#endif

Modified: branches/guffert/wingui/odbcdialogparams/TabCtrl.cpp


  • branches/guffert/wingui/odbcdialogparams/TabCtrl.cpp 2007-10-30 19:56:13 UTC (rev 830) +++ branches/guffert/wingui/odbcdialogparams/TabCtrl.cpp 2007-11-01 00:30:47 UTC (rev 831)
    @@ -15,8 +15,6 @@
    ****************************************************************************/ #define WIN32_LEAN_AND_MEAN

-#include "stdafx.h"
-

 #include 
 #include 
 #include 

@@ -563,4 +561,4 @@
 
 	// Save the current child
 	SetWindowLong(This->hTab, GWL_USERDATA, (long)This->hTabPages[0]);
-}
\ No newline at end of file
+}

Deleted: branches/guffert/wingui/odbcdialogparams/callbacks.cpp


  • branches/guffert/wingui/odbcdialogparams/callbacks.cpp 2007-10-30 19:56:13 UTC (rev 830) +++ branches/guffert/wingui/odbcdialogparams/callbacks.cpp 2007-11-01 00:30:47 UTC (rev 831)
    @@ -1,136 +0,0 @@
    -/**************************************************************************** - * * - * File : * - * * - * Purpose : GUI Callbacks * - * * - * History : Date Reason * - * 00/00/00 Created * - * * - ****************************************************************************/ -/*#include "stdafx.h"*/ - -#include "callbacks.h" -/*#include "../odbcdialogparams/odbcdialogparams.h"*/ -#include "../odbcdialogparams/myString.h" -#include "../../util/MYODBCUtil.h" -/*#include <WinSock2.h>*/ -#include "../util/stringutil.h" - -myString stringConnectIn = NULL; -WCHAR ** errorMsgs = NULL; -myString popupMsg = NULL; - -SQLHDBC hDBC = SQL_NULL_HDBC; - -static WCHAR ** databases = NULL; - -void cleanUp() -{ - clearList(databases); - clearList(errorMsgs); - - x_free( stringConnectIn ); - x_free( popupMsg ); -} - -const wchar_t * mytest(HWND hwnd, DataSource* params) -{ - SQLHDBC hDbc = hDBC; - SQLHENV hEnv = SQL_NULL_HENV; - - if ( SQL_SUCCEEDED( Connect( hDbc, hEnv, params ) ) ) - return L"Connection successful"; - else - { - myString tmp = NULL; - - strAssign(tmp,myString(L"Connection Failed:")); - - concat( tmp, popupMsg ); - - x_free( popupMsg ); - - popupMsg = tmp; - - return popupMsg; - } - - Disconnect( hDbc, hEnv ); - //MessageBox(hwnd, params->dbname.c_str(), params->drvdesc.c_str(), MB_OK); -} - -BOOL mytestaccept(HWND hwnd, DataSource* params) -{ - return true/*(IDYES == MessageBoxW(hwnd, params->dbname.c_str(), params->drvdesc.c_str(), MB_YESNO))*/; -} - -const WCHAR** mygetdatabases(HWND hwnd, DataSource* params) -{ - // = { L"DB1", L"DB2", NULL }; - - SQLHENV hEnv = SQL_NULL_HENV; - SQLHDBC hDbc = hDBC; - SQLHSTMT hStmt; - SQLRETURN nReturn; - // QStringList stringlistDatabases; - SQLWCHAR szCatalog[MYODBC_DB_NAME_MAX];//MYODBC_DB_NAME_MAX]; - SQLLEN nCatalog; - myString stringConnectIn= buildConnectString( params ); - - clearList(databases); - - nReturn = Connect( hDbc, hEnv, params ); - - if ( nReturn != SQL_SUCCESS ) - ShowDiagnostics( nReturn, SQL_HANDLE_DBC, hDbc ); - if ( !SQL_SUCCEEDED(nReturn) ) - { - Disconnect( hDbc,hEnv ); - return NULL; - } - - nReturn = SQLAllocHandle( SQL_HANDLE_STMT, hDbc, &hStmt ); - if ( nReturn != SQL_SUCCESS ) - ShowDiagnostics( nReturn, SQL_HANDLE_DBC, hDbc ); - if ( !SQL_SUCCEEDED(nReturn) ) - { - Disconnect( hDbc,hEnv ); - return NULL; - } - - nReturn = SQLTablesW( hStmt, (SQLWCHAR*)SQL_ALL_CATALOGS, SQL_NTS, (SQLWCHAR*)L"", SQL_NTS, (SQLWCHAR*)L"", 0, (SQLWCHAR*)L"", 0 ); - - if ( nReturn != SQL_SUCCESS ) - ShowDiagnostics( nReturn, SQL_HANDLE_STMT, hStmt ); - if ( !SQL_SUCCEEDED(nReturn) ) - { - Disconnect( hStmt, hDbc, hEnv ); - return NULL; - } - - nReturn = SQLBindCol( hStmt, 1, SQL_C_WCHAR, szCatalog, MYODBC_DB_NAME_MAX, &nCatalog ); - while ( TRUE ) - { - nReturn = SQLFetch( hStmt ); - - if ( nReturn == SQL_NO_DATA ) - break; - else if ( nReturn != SQL_SUCCESS ) - ShowDiagnostics( nReturn, SQL_HANDLE_STMT, hStmt ); - if ( SQL_SUCCEEDED(nReturn) ) - add2list( databases, (const wchar_t*)(szCatalog) ); - else - break; - } - - Disconnect( hStmt, hDbc, hEnv ); - - return (const WCHAR**)databases; -} - -void myhelp(HWND hwnd) -{ - /** TODO: Rewrite - Shouldn't be windows stuff here */ - MessageBoxW(hwnd, L"HELP", L"Sorry, Help is not Available", MB_OK); -} \ No newline at end of file

Deleted: branches/guffert/wingui/odbcdialogparams/callbacks.h


  • branches/guffert/wingui/odbcdialogparams/callbacks.h 2007-10-30 19:56:13 UTC (rev 830) +++ branches/guffert/wingui/odbcdialogparams/callbacks.h 2007-11-01 00:30:47 UTC (rev 831)
    @@ -1,22 +0,0 @@
    -#ifndef _CALLBACKS_H -#define _CALLBACKS_H - -#ifdef _WIN32 -#include <windows.h> -#endif - -#include "utils.h" - - -// Not a callback though - void cleanUp(); - -// Callbacks indeed -const wchar_t * mytest (HWND hwnd, DataSource* params); - BOOL mytestaccept (HWND hwnd, DataSource* params); - /*BOOL mytestaccept (HWND hwnd, DataSource* params);*/ -const WCHAR** mygetdatabases (HWND hwnd, DataSource* params); - void myhelp (HWND hwnd); - - -#endif \ No newline at end of file

Modified: branches/guffert/wingui/odbcdialogparams/main.cpp


  • branches/guffert/wingui/odbcdialogparams/main.cpp 2007-10-30 19:56:13 UTC (rev 830) +++ branches/guffert/wingui/odbcdialogparams/main.cpp 2007-11-01 00:30:47 UTC (rev 831)
    @@ -1,9 +1,7 @@
    -#include "stdafx.h" -/* DIRTY hack */ -#include <winsock2.h> -/*typedef char byte;*/ -#include "../MYODBC_MYSQL.h" +#include "MYODBC_MYSQL.h" #include "resource.h" +#include <windows.h> +#include <commctrl.h>

 #ifdef _MANAGED
 #pragma managed(push, off)

Modified: branches/guffert/wingui/odbcdialogparams/odbcdialogparams.cpp


  • branches/guffert/wingui/odbcdialogparams/odbcdialogparams.cpp 2007-10-30 19:56:13 UTC (rev 830) +++ branches/guffert/wingui/odbcdialogparams/odbcdialogparams.cpp 2007-11-01 00:30:47 UTC (rev 831)
    @@ -1,8 +1,6 @@
    // odbcdialogparams.cpp : Defines the entry point for the DLL application. //
Can't find what you're looking for?X

-#include "stdafx.h"
-
 #define WIN32_LEAN_AND_MEAN
 /* #define NOCRYPT */
 /* #define NOSERVICE */
@@ -27,42 +25,39 @@

 #include <winsock2.h>  

 #include "odbcdialogparams.h"
-#include "utils.h"  

-#include "../MYODBC_MYSQL.h"
+#include "MYODBC_MYSQL.h"
+#include "installer.h"
+#include "stringutil.h"
+#include "../dialog/callbacks.h"
+#include "../dialog/utils.h"
 

 extern HINSTANCE ghInstance;  

-DataSource* pParams = NULL;
-PWCHAR pCaption = NULL;
-bool OkPressed = false;
+static DataSource* pParams = NULL;

+static PWCHAR pCaption = NULL;
+static int OkPressed = 0;  

 static int mod = 1;
 static bool flag = false;
-bool BusyIndicator = false;
+static bool BusyIndicator = false;  

 static TABCTRL TabCtrl_1;  

-TestButtonPressedCallbackType* gTestButtonPressedCallback = NULL;  HelpButtonPressedCallbackType* gHelpButtonPressedCallback = NULL; -AcceptParamsCallbackType* gAcceptParamsCallback = NULL; -DatabaseNamesCallbackType* gDatabaseNamesCallback = NULL;  

 void InitStaticValues()
 {

 	BusyIndicator	= true;
 	pParams			= NULL;
 	pCaption		= NULL;
-	OkPressed		= false;
+	OkPressed		= 0;
 
 	mod				= 1;
 	flag			= false;
 	BusyIndicator	= false;
 
-	gTestButtonPressedCallback	= NULL;
 	gHelpButtonPressedCallback	= NULL;
-	gAcceptParamsCallback		= NULL;
-	gDatabaseNamesCallback		= NULL;

 }  

 #define Refresh(A) RedrawWindow(A,NULL,NULL,RDW_ERASE|RDW_INVALIDATE|RDW_ALLCHILDREN|RDW_UPDATENOW);
@@ -108,21 +103,22 @@

Don't know where to look next?X

         return FALSE;
 }  

-void getStrFieldData(HWND hwnd, myString & param, int idc ) +void getStrFieldData(HWND hwnd, SQLWCHAR **param, int idc)  {
- if (param)
- *(param) = NULL;
+ x_free(*param);
+ *param= NULL;  

     int len = Edit_GetTextLength(GetDlgItem(hwnd,idc));  

     if (len>0)
     {
-        if ( myReserveMemory( param, len ) > 0 )
-            Edit_GetText(GetDlgItem(hwnd,idc), param, len+1);
+      *param= (SQLWCHAR *)my_malloc((len + 1) * sizeof(SQLWCHAR), MYF(0));
+      if (*param)
+        Edit_GetText(GetDlgItem(hwnd,idc), *param, len+1);
     }

 }  

-void getStrFieldData(myString & param, unsigned int framenum, int idc ) +void getStrFieldData(SQLWCHAR **param, unsigned int framenum, int idc )  {

     assert(TabCtrl_1.hTabPages);
     HWND tab = TabCtrl_1.hTabPages[framenum-1];

@@ -134,7 +130,7 @@
 

 void setUnsignedFieldData(HWND hwnd, unsigned int & param, int idc )  {
- wchar_t buf[1024];
+ wchar_t buf[20];

     _itow( param, (wchar_t*)buf, 10 );
     Edit_SetText(GetDlgItem(hwnd,idc), buf);
 }
@@ -146,12 +142,13 @@
 
     if(len>0)
     {
Confused? Frustrated?X
- myString tmp = NULL; - - if ( myReserveMemory( tmp, len ) > 0 ) + SQLWCHAR *tmp1= (SQLWCHAR *)my_malloc((len + 1) * sizeof(SQLWCHAR), + MYF(0)); + if (tmp1) { - Edit_GetText(GetDlgItem(hwnd,idc), tmp, len+1); - param = _wtol(tmp); + Edit_GetText(GetDlgItem(hwnd,idc), tmp1, len+1); + param = _wtol(tmp1); + x_free(tmp1); } }

 }
@@ -168,7 +165,7 @@

     return false;
 }  

-#define GET_STRING(name) getStrFieldData(hwnd,params.name,IDC_EDIT_##name) +#define GET_STRING(name) getStrFieldData(hwnd,&params.name,IDC_EDIT_##name)  

 #define SET_STRING(name) \

Call Pantek today for Open Source Technical Support at 1-877-546-8934 - 24/7/365X

     Edit_SetText(GetDlgItem(hwnd,IDC_EDIT_##name), params.name)
@@ -233,11 +230,11 @@

     GET_BOOL(4,save_queries);  

     /* ssl settings */
-    getStrFieldData( params.sslkey      , 5, IDC_EDIT_sslkey);
-    getStrFieldData( params.sslcert     , 5, IDC_EDIT_sslcert);
-    getStrFieldData( params.sslca       , 5, IDC_EDIT_sslca);
-    getStrFieldData( params.sslcapath   , 5, IDC_EDIT_sslcapath);
-    getStrFieldData( params.sslcipher   , 5, IDC_EDIT_sslkey);
+    getStrFieldData(¶ms.sslkey      , 5, IDC_EDIT_sslkey);
+    getStrFieldData(¶ms.sslcert     , 5, IDC_EDIT_sslcert);
+    getStrFieldData(¶ms.sslca       , 5, IDC_EDIT_sslca);
+ getStrFieldData(&params.sslcapath , 5, IDC_EDIT_sslcapath); + getStrFieldData(&params.sslcipher , 5, IDC_EDIT_sslkey);  }  

 void syncTabs(HWND hwnd, DataSource &params)
@@ -287,6 +284,12 @@

 {

         syncData(hwnd, params );  

+  /* pack option values into bitmap */
+  unsigned long opts= CompileOptions(pParams);
+  SQLWCHAR optstr[15];
+  sqlwcharfromul(optstr, opts);
+  ds_set_strattr(&pParams->option, optstr);
+
 	if( TabCtrl_1.hTab )
 		syncTabsData(hwnd, params);

 }
@@ -300,10 +303,7 @@

     OnDialogClose();  

         TabControl_Destroy(&TabCtrl_1);

-
-    DWORD err;
-	if (EndDialog(hwnd, 0) == 0)
-        err = GetLastError();

+ EndDialog(hwnd, NULL);
 }  
 /****************************************************************************

@@ -349,40 +349,27 @@
 

 void btnOk_Click (HWND hwnd)
 {

-	if ( gAcceptParamsCallback ) 
-	{
-		/*DataSource params;*/
-		FillParameters(hwnd, *pParams);
-		if( (*gAcceptParamsCallback)( hwnd, pParams ) )
-		{
-			OkPressed = true;
-            CompileOptions( pParams );
-			PostMessage(hwnd, WM_CLOSE, NULL, NULL);
-		}
-	}
+  FillParameters(hwnd, *pParams);
+
+  /* if DS params are valid, close dialog */
Do you need help?X
+ if (mytestaccept(hwnd, pParams)) + { + OkPressed= 1;

+ PostMessage(hwnd, WM_CLOSE, NULL, NULL); + }
 }  

 void btnCancel_Click (HWND hwnd)
 {

-    /* OK pressed by default. And only can be false if ok really pressed. so, no need to set it to "false" here*/
-	/*OkPressed = false;*/
-	PostMessage(hwnd, WM_CLOSE, NULL, NULL);
+ PostMessage(hwnd, WM_CLOSE, NULL, NULL);  }  
Do you need more help?X

 void btnTest_Click (HWND hwnd)
 {

-	if(gTestButtonPressedCallback)
-	{
-		/*OdbcDialogParams params;*/
-		FillParameters(hwnd, *pParams);
-
-        /*if ( pParams )
-            params.driver= pParams->driver;*/
-
-		const wchar_t * testResultMsg = (*gTestButtonPressedCallback)( hwnd, pParams );
-
-		MessageBoxW( hwnd, testResultMsg, pParams->name, MB_OK );
-	}
+  FillParameters(hwnd, *pParams);
+  wchar_t *testResultMsg= mytest(hwnd, pParams);
+ MessageBoxW(hwnd, testResultMsg, L"Test Result", MB_OK); + x_free(testResultMsg);
 }    

@@ -436,7 +423,7 @@
 

         ZeroMemory(&dialog,sizeof(dialog));  

  • dialog.lpszTitle = _T("Pick a CA Path"); + dialog.lpszTitle = L"Pick a CA Path"; dialog.hwndOwner = parent; dialog.pszDisplayName = path;

@@ -456,6 +443,7 @@

 		}
 	}

 }
+
 void FormMain_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)  {

         switch (id)
@@ -491,19 +479,14 @@
 

 		case IDC_EDIT_dbname:
 		{
-			if(codeNotify==CBN_DROPDOWN && gDatabaseNamesCallback) {
-				/*OdbcDialogParams params;*/
+			if(codeNotify==CBN_DROPDOWN) {
 				FillParameters(hwnd, *pParams);
-				const WCHAR** items = gDatabaseNamesCallback( hwnd, pParams );
-				if( items )
-				{
-					ComboBox_ResetContent(hwndCtl);
-					while (*items)
-					{
-						ComboBox_AddString(hwndCtl, *items);
-						items++;
-					}
-				}
+				LIST *dbs= mygetdatabases(hwnd, pParams);
+        LIST *dbtmp= dbs;
+        ComboBox_ResetContent(hwndCtl);
+        for (; dbtmp; dbtmp= list_rest(dbtmp))
+          ComboBox_AddString(hwndCtl, (SQLWCHAR *)dbtmp->data);
+        list_free(dbs, 1);
 			}
 		}
 	}

@@ -601,42 +584,27 @@

 }    
-// returns FALSE if 'cancel' button pressed
-int ShowOdbcParamsDialog(
-    PWCHAR caption,
-	DataSource* params,                  /*[inout]*/
-	HWND ParentWnd,                     /* [in] could be NULL */
-	HelpButtonPressedCallbackType* hcallback, /* [in] could be NULL */
-	TestButtonPressedCallbackType* tcallback, /* [in] could be NULL */
-	AcceptParamsCallbackType* acallback, /* [in] could be NULL */
Can we help you?X
- DatabaseNamesCallbackType* dcallback) +/* + Display the DSN dialog + + @param params DataSource struct, should be pre-populated + @param ParentWnd Parent window handle + @return 1 if the params were correctly populated and OK was pressed + 0 if the dialog was closed or cancelled +*/

+extern "C"
+int ShowOdbcParamsDialog(DataSource* params, HWND ParentWnd)  {
 	assert(!BusyIndicator);
 	InitStaticValues();
 
 	pParams=                    params;
-	pCaption=                   caption;
-	gHelpButtonPressedCallback= hcallback;
-	gTestButtonPressedCallback= tcallback;
-	gAcceptParamsCallback=      acallback;
-	gDatabaseNamesCallback=     dcallback;
+	pCaption=                   L"Dialog";
 
-    // The user interface is a modal dialog box.
-    DWORD err;
-    
-    /*HINSTANCE my= ::GetModuleHandle(L"myodbc3s.dll");
-    HANDLE hResInfo= FindResource( ghInstance,MAKEINTRESOURCE(IDD_DIALOG1),RT_DIALOG );
- 
-    if ( hResInfo)
-        params->port = 1111;
-    else
-        params->port = 0;*/
+  DialogBox(ghInstance, MAKEINTRESOURCE(IDD_DIALOG1), ParentWnd,
+            (DLGPROC)FormMain_DlgProc);
 
-    INT_PTR res = DialogBox(ghInstance, MAKEINTRESOURCE(IDD_DIALOG1), ParentWnd, (DLGPROC)FormMain_DlgProc);
-
-    if ( res == -1 )
-        err = GetLastError();
-
 	BusyIndicator = false;
 	return OkPressed;

 }
+

Modified: branches/guffert/wingui/odbcdialogparams/odbcdialogparams.h


  • branches/guffert/wingui/odbcdialogparams/odbcdialogparams.h 2007-10-30 19:56:13 UTC (rev 830) +++ branches/guffert/wingui/odbcdialogparams/odbcdialogparams.h 2007-11-01 00:30:47 UTC (rev 831)
    @@ -1,40 +1,32 @@
    #ifndef __ODBCPARAMS_H__ #define __ODBCPARAMS_H__
-#ifdef DataSource_EXPORTS
-#define _ODBCPARAMDLL __declspec(dllexport)
-#else
-#define _ODBCPARAMDLL __declspec(dllimport)
+#include "installer.h"
+

+#ifdef __cplusplus
+extern "C" {
 #endif  
-#include "../util/installer.h"
-#include "myString.h"
-
-// procedure describes all items shown on the dialog
-
-

 // four callbacks:
 // called when [Help] pressed
 typedef void HelpButtonPressedCallbackType(HWND dialog);  // called when [Test] pressed - show any messages to user here -typedef const wchar_t * TestButtonPressedCallbackType(HWND dialog, DataSource* params); +//typedef const wchar_t * TestButtonPressedCallbackType(HWND dialog, DataSource* params);  // called when [OK] pressed - show errors here (if any) and return false to prevent dialog close  typedef BOOL AcceptParamsCallbackType(HWND dialog, DataSource* params);  // called when DataBase combobox Drops Down -typedef const WCHAR** DatabaseNamesCallbackType(HWND dialog, DataSource* params); +//typedef const WCHAR** DatabaseNamesCallbackType(HWND dialog, DataSource* params);    

 // exported procedure (the one) - not any more. statically linked.  // returns TRUE if user pressed OK, FALSE - otherwise -int /*_ODBCPARAMDLL*/ ShowOdbcParamsDialog(

-    PWCHAR caption,                 /*[in] Dialog caption*/
+int ShowOdbcParamsDialog(
 	DataSource* params,                  /*[inout] params */
-	HWND ParentWnd = NULL,                     /* [in] could be NULL */
-	HelpButtonPressedCallbackType* hcallback = NULL, /* [in] could be NULL */
Can't find what you're looking for?X
- TestButtonPressedCallbackType* tcallback = NULL, /* [in] could be NULL */ - AcceptParamsCallbackType* acallback = NULL, /* [in] could be NULL */ - DatabaseNamesCallbackType* dcallback = NULL) /* [in] could be NULL */; + HWND ParentWnd); /* [in] could be NULL */ +#ifdef __cplusplus

+}
+#endif  

+#endif  

Don't know where to look next?X

-#endif
\ No newline at end of file

Modified: branches/guffert/wingui/odbcdialogparams/tooltip.cpp



(Binary files differ)

Property changes on: branches/guffert/wingui/odbcdialogparams/tooltip.cpp



Name: svn:mime-type
  • application/octet-stream

Deleted: branches/guffert/wingui/odbcdialogparams/utils.cpp


  • branches/guffert/wingui/odbcdialogparams/utils.cpp 2007-10-30 19:56:13 UTC (rev 830) +++ branches/guffert/wingui/odbcdialogparams/utils.cpp 2007-11-01 00:30:47 UTC (rev 831)
    @@ -1,334 +0,0 @@
    -/**************************************************************************** - * * - * File : * - * * - * Purpose : utilities for callbacks. * - * * - * History : Date Reason * - * 00/00/00 Created * - * * - ****************************************************************************/ - -/*#include "stdafx.h"*/ - -/** couple of temporary hacks to make it compile here*/ -/*typedef char byte;*/ -#ifdef _WIN32 -#include <winsock2.h> -#endif -/** end hacks */ - -#include <sql.h> - -#include "utils.h" -#include "../odbcdialogparams/myString.h" - -#include "../driver/driver.h" -#include "../util/stringutil.h" -#include "../util/MYODBCUtil.h" - - -extern SQLHDBC hDBC; -extern myString stringConnectIn; -extern WCHAR ** errorMsgs; -extern myString popupMsg; - -void DecompileOptions(DataSource * params) -{ - if ( params == NULL ) - return; - - ulong nOptions = sqlwchartoul( params->option ); - - params->dont_optimize_column_width= (nOptions & FLAG_FIELD_LENGTH) > 0; - params->return_matching_rows= (nOptions & FLAG_FOUND_ROWS) > 0; /* 2 */ - params->allow_big_results= (nOptions & FLAG_BIG_PACKETS) > 0; - params->dont_prompt_upon_connect= (nOptions & FLAG_NO_PROMPT) > 0; - params->enable_dynamic_cursor= (nOptions & FLAG_DYNAMIC_CURSOR) > 0; - params->ignore_N_in_name_table= (nOptions & FLAG_NO_SCHEMA) > 0; - params->user_manager_cursor= (nOptions & FLAG_NO_DEFAULT_CURSOR) > 0; - params->dont_use_set_locale= (nOptions & FLAG_NO_LOCALE) > 0; - params->pad_char_to_full_length= (nOptions & FLAG_PAD_SPACE) > 0; - params->return_table_names_for_SqlDesribeCol= (nOptions & FLAG_FULL_COLUMN_NAMES) > 0; - params->use_compressed_protocol= (nOptions & FLAG_COMPRESSED_PROTO) > 0; - params->ignore_space_after_function_names= (nOptions & FLAG_IGNORE_SPACE) > 0; - params->force_use_of_named_pipes= (nOptions & FLAG_NAMED_PIPE) > 0; - params->change_bigint_columns_to_int= (nOptions & FLAG_NO_BIGINT) > 0; - params->no_catalog= (nOptions & FLAG_NO_CATALOG) > 0; - params->read_options_from_mycnf= (nOptions & FLAG_USE_MYCNF) > 0; - params->safe= (nOptions & FLAG_SAFE) > 0; - params->disable_transactions= (nOptions & FLAG_NO_TRANSACTIONS) > 0; - params->save_queries= (nOptions & FLAG_LOG_QUERY) > 0; - params->dont_cache_result= (nOptions & FLAG_NO_CACHE) > 0; - params->force_use_of_forward_only_cursors= (nOptions & FLAG_FORWARD_CURSOR) > 0; - params->enable_auto_reconnect= (nOptions & FLAG_AUTO_RECONNECT) > 0; - params->enable_auto_increment_null_search= (nOptions & FLAG_AUTO_IS_NULL ) > 0; -} - -void FreeEnvHandle( SQLHENV &hEnv ) -{ - if ( hDBC == SQL_NULL_HDBC ) - SQLFreeHandle( SQL_HANDLE_ENV, hEnv ); -} - - -void Disconnect( SQLHDBC &hDbc, SQLHENV &hEnv ) -{ - SQLDisconnect( hDbc ); - - if ( hDBC == SQL_NULL_HDBC ) - SQLFreeHandle( SQL_HANDLE_DBC, hDbc ); - - FreeEnvHandle( hEnv ); -} - - -void Disconnect( SQLHSTMT &hStmt, SQLHDBC &hDbc, SQLHENV &hEnv ) -{ - SQLFreeHandle( SQL_HANDLE_STMT, hStmt ); - - Disconnect( hDbc, hEnv ); -} - - -const myString & buildConnectString( DataSource* params ) -{ - strAssign(stringConnectIn, L"DRIVER="); - - if ( myStrlen(params->driver) > 0 ) - concat(stringConnectIn, params->driver); - else - concat( stringConnectIn, MYODBCINST_DRIVER_NAME ); - - wchar_t portstr[5]; - -#ifdef Q_WS_MACX - /* - The iODBC that ships with Mac OS X (10.4) must be given a filename for - the driver library in SQLDriverConnect(), not just the driver name. So - we have to look it up using SQLGetPrivateProfileString() if we haven't - already. - */ - { - if (!params->drvname.empty()) - { - /* - SQLGetPrivateProfileString has bugs on iODBC, so we have to check - both the SYSTEM and USER space explicitly. - */ - UWORD configMode; - if (!SQLGetConfigMode(&configMode)) - return FALSE; - if (!SQLSetConfigMode(ODBC_SYSTEM_DSN)) - return FALSE; - - char driver[PATH_MAX]; - if (!SQLGetPrivateProfileString(pDataSource->pszDRIVER, - "DRIVER", pDataSource->pszDRIVER, - driver, sizeof(driver), - "ODBCINST.INI")) - return FALSE; - - /* If we're creating a user DSN, make sure we really got a driver. */ - if (configMode != ODBC_SYSTEM_DSN && - strcmp(driver, pDataSource->pszDRIVER) == 0) - { - if (configMode != ODBC_SYSTEM_DSN) - { - if (!SQLSetConfigMode(ODBC_USER_DSN)) - return FALSE; - if (!SQLGetPrivateProfileString(pDataSource->pszDRIVER, - "DRIVER", pDataSource->pszDRIVER, - driver, sizeof(driver), - "ODBCINST.INI")) - return FALSE; - } - } - - pDataSource->pszDriverFileName= _global_strdup(driver); - - if (!SQLSetConfigMode(configMode)) - return FALSE; - } - - stringConnectIn= concat( stringConnectIn, pDataSource->pszDriverFileName ); - } - /* - //#else - concat(stringConnectIn, params->drvname );//pDataSource->pszDRIVER);*/ -#endif - - concat( concat( stringConnectIn,L";UID=" ), params->uid ); - - concat( concat( stringConnectIn, L";PWD=" ), params->pwd ); - - concat( concat( stringConnectIn, L";SERVER=" ), params->server ); - - if ( myStrlen( params->database ) ) - concat( concat( stringConnectIn, L";DATABASE="), params->database ); - - if ( params->port > 0 ) - { - wsprintfW( portstr, L"%d", params->port ); - concat( concat( stringConnectIn, L";PORT=" ), myString( portstr ) ); - } - if ( myStrlen( params->socket) ) - concat( concat( stringConnectIn, L";SOCKET=" ), params->socket ); - // if ( myStrlen( params->getOptions()) ) - // stringConnectIn += ";OPTION=" ), params->getOptions ); - if ( myStrlen( params->initstmt)) - concat( concat( stringConnectIn, L";STMT=" ), params->initstmt ); - if ( myStrlen( params->charset ) ) - concat( concat( stringConnectIn, L";CHARSET=" ), params->charset ); - if ( myStrlen( params->sslkey) ) - concat( concat( stringConnectIn, L";SSLKEY=" ), params->sslkey ); - if ( myStrlen( params->sslcert ) ) - concat( concat( stringConnectIn, L";SSLERT=" ), params->sslcert ); - if ( myStrlen( params->sslca ) ) - concat( concat( stringConnectIn, L";SSLCA=" ), params->sslca); - if ( myStrlen( params->sslcapath ) ) - concat( concat( stringConnectIn, L";SSLCAPATH=" ), params->sslcapath ); - if ( myStrlen( params->sslcipher ) ) - concat( concat( stringConnectIn, L";SSLCIPHER=" ), params->sslcipher ); - - return stringConnectIn; -} - - -SQLRETURN Connect( SQLHDBC & hDbc, SQLHENV & hEnv, DataSource * params ) -{ - SQLRETURN nReturn; - // QStringList stringlistDatabases; - myString stringConnectIn= buildConnectString( params ); - - - if ( hDBC == SQL_NULL_HDBC ) - { - nReturn = SQLAllocHandle( SQL_HANDLE_ENV, NULL, &hEnv ); - - if ( nReturn != SQL_SUCCESS ) - ShowDiagnostics( nReturn, SQL_HANDLE_ENV, NULL ); - - if ( !SQL_SUCCEEDED(nReturn) ) - return nReturn; - - nReturn = SQLSetEnvAttr( hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0 ); - - if ( nReturn != SQL_SUCCESS ) - ShowDiagnostics( nReturn, SQL_HANDLE_ENV, NULL ); - - if ( !SQL_SUCCEEDED(nReturn) ) - { - return nReturn; - } - - nReturn = SQLAllocHandle( SQL_HANDLE_DBC, hEnv, &hDbc ); - if ( nReturn != SQL_SUCCESS ) - ShowDiagnostics( nReturn, SQL_HANDLE_ENV, hEnv ); - if ( !SQL_SUCCEEDED(nReturn) ) - { - return nReturn; - } - } - - nReturn = SQLDriverConnectW( hDbc, NULL, (SQLWCHAR*)( stringConnectIn ), SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT ); - - if ( nReturn != SQL_SUCCESS ) - ShowDiagnostics( nReturn, SQL_HANDLE_DBC, hDbc ); - - return nReturn; -} - - -void ShowDiagnostics( SQLRETURN nReturn, SQLSMALLINT nHandleType, SQLHANDLE h ) -{ - BOOL bDiagnostics = FALSE; - SQLSMALLINT nRec = 1; - SQLWCHAR szSQLState[6]; - SQLINTEGER nNative; - SQLWCHAR szMessage[SQL_MAX_MESSAGE_LENGTH]; - SQLSMALLINT nMessage; - - if ( h ) - { - *szSQLState = '\0'; - *szMessage = '\0'; - - while ( SQL_SUCCEEDED( SQLGetDiagRecW( nHandleType, - h, - nRec, - szSQLState, - &nNative, - szMessage, - SQL_MAX_MESSAGE_LENGTH, - &nMessage ) ) ) - { - szSQLState[5] = '\0'; - szMessage[SQL_MAX_MESSAGE_LENGTH - 1] = '\0'; - - - add2list(errorMsgs, szMessage); - - bDiagnostics = TRUE; - nRec++; - - *szSQLState = '\0'; - *szMessage = '\0'; - } - } - - switch ( nReturn ) - { - case SQL_ERROR: - strAssign( popupMsg, L"Request returned with SQL_ERROR." );//, L"MYODBCConfig" ); - break; - case SQL_SUCCESS_WITH_INFO: - strAssign( popupMsg, L"Request return with SQL_SUCCESS_WITH_INFO." );//, L"MYODBCConfig" ); - break; - case SQL_INVALID_HANDLE: - strAssign( popupMsg, L"Request returned with SQL_INVALID_HANDLE." );//, L"MYODBCConfig" ); - break; - default: - strAssign( popupMsg, L"Request did not return with SQL_SUCCESS." );//, L"MYODBCConfig" ); - } -} - - -unsigned long CompileOptions( DataSource * params ) -{ - unsigned long nFlags = 0; - - if (params==NULL) - return NULL; - - if (params->dont_optimize_column_width) nFlags |= FLAG_FIELD_LENGTH; - if (params->return_matching_rows) nFlags |= FLAG_FOUND_ROWS; /* 2 */ - if (params->allow_big_results) nFlags |= FLAG_BIG_PACKETS; - if (params->dont_prompt_upon_connect) nFlags |= FLAG_NO_PROMPT; - if (params->enable_dynamic_cursor) nFlags |= FLAG_DYNAMIC_CURSOR; - if (params->ignore_N_in_name_table) nFlags |= FLAG_NO_SCHEMA; - if (params->user_manager_cursor) nFlags |= FLAG_NO_DEFAULT_CURSOR; - if (params->dont_use_set_locale) nFlags |= FLAG_NO_LOCALE; - if (params->pad_char_to_full_length) nFlags |= FLAG_PAD_SPACE; - if (params->return_table_names_for_SqlDesribeCol) nFlags |= FLAG_FULL_COLUMN_NAMES; - if (params->use_compressed_protocol) nFlags |= FLAG_COMPRESSED_PROTO; - if (params->ignore_space_after_function_names) nFlags |= FLAG_IGNORE_SPACE; - if (params->force_use_of_named_pipes) nFlags |= FLAG_NAMED_PIPE; - if (params->change_bigint_columns_to_int) nFlags |= FLAG_NO_BIGINT; - if (params->no_catalog) nFlags |= FLAG_NO_CATALOG; - if (params->read_options_from_mycnf) nFlags |= FLAG_USE_MYCNF; - if (params->safe) nFlags |= FLAG_SAFE; - if (params->disable_transactions) nFlags |= FLAG_NO_TRANSACTIONS; - if (params->save_queries) nFlags |= FLAG_LOG_QUERY; - if (params->dont_cache_result) nFlags |= FLAG_NO_CACHE; - if (params->force_use_of_forward_only_cursors) nFlags |= FLAG_FORWARD_CURSOR; - if (params->enable_auto_reconnect) nFlags |= FLAG_AUTO_RECONNECT; - if (params->enable_auto_increment_null_search) nFlags |= FLAG_AUTO_IS_NULL; - - if (params->option == NULL) - myReserveMemory(params->option, 20); - - sqlwcharfromul(params->option, nFlags); - - return nFlags; -}

Deleted: branches/guffert/wingui/odbcdialogparams/utils.h


  • branches/guffert/wingui/odbcdialogparams/utils.h 2007-10-30 19:56:13 UTC (rev 830) +++ branches/guffert/wingui/odbcdialogparams/utils.h 2007-11-01 00:30:47 UTC (rev 831)
    @@ -1,19 +0,0 @@
    -#ifndef _CALLBACKS_UTILS_ - -#define _CALLBACKS_UTILS_ - -#include "../odbcdialogparams/odbcdialogparams.h" -#include "../util/installer.h" - -#include <sqltypes.h> - -void ShowDiagnostics ( SQLRETURN nReturn, SQLSMALLINT nHandleType, SQLHANDLE h ); -void FreeEnvHandle ( SQLHENV &hEnv ); -void Disconnect ( SQLHDBC &hDbc, SQLHENV &hEnv ); -void Disconnect ( SQLHSTMT &hStmt, SQLHDBC &hDbc, SQLHENV &hEnv ); -const myString & buildConnectString ( DataSource* params ); -SQLRETURN Connect ( SQLHDBC & hDbc, SQLHENV & hEnv, DataSource * params ); -unsigned long CompileOptions ( DataSource * params ); -void DecompileOptions ( DataSource * src ); - -#endif
-- 
MySQL Code Commits Mailing List
For list archives: 
http://lists.mysql.com/commits
To unsubscribe:    
http://lists.mysql.com/commits?unsub=lists@pantek.com
Received on Wed Oct 31 20:30:53 2007

This archive was generated by hypermail 2.1.8 : Thu Jul 03 2008 - 11:15:45 EDT


Contact Us  Legal Notices  Order Services Online 
Pantek Home  Privacy Policy  IT news  Site Map  Pantek Library