1 |
kusanagi |
1.1 |
#include <log4cxx/logger.h> |
2 |
|
|
#include <YSQLConnection.h> |
3 |
|
|
|
4 |
|
|
using namespace log4cxx; |
5 |
|
|
using namespace yngn; |
6 |
|
|
using namespace yngn::sql; |
7 |
|
|
using namespace yngn::YException; |
8 |
|
|
|
9 |
|
|
TSQLServer *YSQLConnection::sqlServer = 0; |
10 |
|
|
YSQLConnection *YSQLConnection::sqlConnection = 0; |
11 |
|
|
static LoggerPtr logger = Logger::getLogger(_T("yngn.sql.YSQLConnection")); |
12 |
|
|
|
13 |
|
|
/** |
14 |
|
|
* Private constructor for the YSQLConnection. |
15 |
|
|
* @param URL Path to the database to be used. |
16 |
|
|
* @param user Name of the user to open the database connection. |
17 |
|
|
* @param psw Password of the user to open the database connection. |
18 |
|
|
*/ |
19 |
|
|
YSQLConnection::YSQLConnection(char *URL, char *user, char *psw) throw (YSQLNotConnectedException) { |
20 |
|
|
YSQLConnection::sqlServer = TSQLServer::Connect(URL, user, psw); |
21 |
|
|
if (YSQLConnection::sqlServer == 0) throw YSQLNotConnectedException("Connection to database failed"); |
22 |
|
|
} |
23 |
|
|
|
24 |
|
|
/** |
25 |
|
|
* Get an instance of YSQLConnection opening a connection to the database. |
26 |
|
|
* @param URL Path to the database to be used. |
27 |
|
|
* @param user Name of the user to open the database connection. |
28 |
|
|
* @param psw Password of the user to open the database connection. |
29 |
|
|
*/ |
30 |
|
|
TSQLServer* YSQLConnection::getConnection(char *URL, char *user, char *psw) throw (YSQLNotConnectedException) { |
31 |
|
|
if (YSQLConnection::sqlConnection == 0){ |
32 |
|
|
YSQLConnection::sqlConnection = new YSQLConnection(URL, user, psw); |
33 |
|
|
} |
34 |
|
|
return sqlServer; |
35 |
|
|
} |
36 |
|
|
|
37 |
|
|
/** |
38 |
|
|
* Get an instance of YSQLConnection opening a connection to the database. |
39 |
|
|
* @param URL Path to the database to be used. |
40 |
|
|
* @param fileName Name of the file containing user/password to use for connection. |
41 |
|
|
|
42 |
|
|
TSQLServer* YSQLConnection::getConnection(char *URL, char *fileName) throw (YSQLNotConnectedException) { |
43 |
|
|
if (YSQLConnection::sqlConnection == 0){ |
44 |
|
|
FILE * pFile; |
45 |
|
|
long lSize; |
46 |
|
|
char * buffer; |
47 |
|
|
pFile = fopen (fileName, "r" ); |
48 |
|
|
// obtain file size. |
49 |
|
|
fseek (pFile , 0 , SEEK_END); |
50 |
|
|
lSize = ftell (pFile); |
51 |
|
|
rewind (pFile); |
52 |
|
|
// allocate memory to contain the whole file. |
53 |
|
|
buffer = (char*) malloc (lSize); |
54 |
|
|
if (buffer == NULL) throw YSQLNotConnectedException("Connection file empty"); |
55 |
|
|
// copy the file into the buffer. |
56 |
|
|
fread (buffer,1,lSize,pFile); |
57 |
|
|
// the whole file is loaded in the buffer. |
58 |
|
|
// terminate |
59 |
|
|
fclose (pFile); |
60 |
|
|
YSQLConnection::sqlConnection = new YSQLConnection(URL, user, psw); |
61 |
|
|
} |
62 |
|
|
return sqlServer; |
63 |
|
|
} |
64 |
|
|
*/ |
65 |
|
|
|
66 |
|
|
/** |
67 |
|
|
* Get an instance of YSQLConnection if a connection has already been opened connection to the database. |
68 |
|
|
*/ |
69 |
|
|
TSQLServer* YSQLConnection::getConnection(void) throw (YSQLNotConnectedException) { |
70 |
|
|
if (sqlConnection == NULL) throw YSQLNotConnectedException("Please connect to the database specifing the required parameters"); |
71 |
|
|
return sqlServer; |
72 |
|
|
} |
73 |
|
|
|