removing unnessary debug messages
[csql.git] / src / adapter / SqlOdbcConnection.cxx
blob8400e467250727f931007a872a19225f163845c6
1 /***************************************************************************
2 * Copyright (C) 2007 by Prabakaran Thirumalai *
3 * praba_tuty@yahoo.com *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19 ***************************************************************************/
20 #include <SqlOdbcConnection.h>
21 #include <CSql.h>
23 DbRetVal SqlOdbcConnection::connect (char *user, char * pass)
25 DbRetVal rv = OK;
26 char dsn[72];
27 sprintf(dsn, "DSN=%s;", Conf::config.getDSN());
28 int retVal =0;
29 retVal = SQLAllocHandle (SQL_HANDLE_ENV, SQL_NULL_HANDLE, &envHdl);
30 if (retVal)
32 printError(ErrSysInit, "Unable to allocate ODBC handle \n");
33 return ErrSysInit;
35 SQLSetEnvAttr(envHdl, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0);
37 retVal = SQLAllocHandle (SQL_HANDLE_DBC, envHdl, &dbHdl);
38 if (retVal)
40 printError(ErrSysInit, "Unable to allocate ODBC handle \n");
41 return ErrSysInit;
43 SQLCHAR outstr[1024];
44 SQLSMALLINT outstrlen;
45 retVal = SQLDriverConnect(dbHdl, NULL, (SQLCHAR*)dsn, SQL_NTS,
46 outstr, sizeof(outstr), &outstrlen,
47 SQL_DRIVER_NOPROMPT);
48 if (!SQL_SUCCEEDED(retVal)) {
49 printError(ErrSysInit, "Failed to connect to target database using dsn=%s\n", dsn);
51 SQLINTEGER i = 0;
52 SQLINTEGER native;
53 SQLCHAR state[ 7 ];
54 SQLCHAR text[256];
55 SQLSMALLINT len;
56 SQLRETURN ret;
58 fprintf(stderr,
59 "\n"
60 "The driver reported the following diagnostics whilst running "
61 "\n\n");
65 ret = SQLGetDiagRec(SQL_HANDLE_DBC, dbHdl, ++i, state, &native, text,
66 sizeof(text), &len );
68 if (SQL_SUCCEEDED(ret))
69 printf("%s:%ld:%ld:%s\n", state, i, native, text);
71 while( ret == SQL_SUCCESS );
72 rv = ErrNoConnection;
73 rv = OK; //masking the error:tmp
75 //printError(ErrSysInit, "Connecting with dsn=%s\n", dsn);
76 SQLSetConnectAttr(dbHdl, SQL_ATTR_AUTOCOMMIT, SQL_AUTOCOMMIT_OFF, 0);
77 return rv;
80 DbRetVal SqlOdbcConnection::disconnect()
82 DbRetVal rv = OK;
83 SQLDisconnect (dbHdl);
84 SQLFreeHandle (SQL_HANDLE_DBC, dbHdl);
85 SQLFreeHandle (SQL_HANDLE_ENV, envHdl);
86 return rv;
88 DbRetVal SqlOdbcConnection::beginTrans(IsolationLevel isoLevel, TransSyncMode mode)
90 if (prevIsoLevel == isoLevel) return OK;
91 DbRetVal rv = OK;
92 int retVal =0;
93 SQLPOINTER iso;
95 switch(isoLevel)
97 case READ_UNCOMMITTED:
98 iso = (SQLPOINTER)SQL_TXN_READ_UNCOMMITTED;
99 break;
100 case READ_COMMITTED:
101 iso = (SQLPOINTER)SQL_TXN_READ_COMMITTED;
102 break;
103 case READ_REPEATABLE:
104 iso = (SQLPOINTER)SQL_TXN_REPEATABLE_READ;
105 break;
106 default:
107 iso = (SQLPOINTER)SQL_TXN_READ_COMMITTED;
108 break;
111 retVal = SQLSetConnectAttr(dbHdl, SQL_ATTR_TXN_ISOLATION, iso, 0);
112 if (!SQL_SUCCEEDED(retVal)) return ErrSysInit;
113 prevIsoLevel = isoLevel;
114 retVal = SQLTransact (envHdl, dbHdl, SQL_ROLLBACK);
115 if (!SQL_SUCCEEDED(retVal)) rv = ErrSysInit;
116 return rv;
118 DbRetVal SqlOdbcConnection::commit()
120 DbRetVal rv = OK;
121 int retVal = SQLTransact (envHdl, dbHdl, SQL_COMMIT);
122 if (!SQL_SUCCEEDED(retVal)) rv = ErrSysInit;
123 return rv;
125 DbRetVal SqlOdbcConnection::rollback()
127 DbRetVal rv = OK;
128 int retVal = SQLTransact (envHdl, dbHdl, SQL_ROLLBACK);
129 if (!SQL_SUCCEEDED(retVal)) rv = ErrSysInit;
130 return rv;