source: admin/Services/includes/Database.cpp @ 49c6891

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since 49c6891 was d08ec1cc, checked in by alonso <alonso@…>, 16 years ago

git-svn-id: https://opengnsys.es/svn/trunk@487 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100644
File size: 5.4 KB
Line 
1// ******************************************************************************************************
2// Aplicación HIDRA
3// Copyright 2004 Jos�Manuel Alonso. Todos los derechos reservados.
4// Fichero: Database.cpp
5//      Descripción:
6//              Fichero de implementaci� de la clase Database para funciones de manipulaci�
7//              de bases de datos sobre un Servidor Mysql
8// ******************************************************************************************************
9#include "Database.h"
10// __________________________________________________________________________
11void ErrorHandler(Herror hr, char* ErrStr)
12{
13        sprintf(ErrStr,"Error:\n");
14        sprintf(ErrStr,"%sCode = %d\n",ErrStr ,hr.nError);
15        sprintf(ErrStr,"%sDescription = %s",ErrStr, (char*) hr.dError);
16}
17// __________________________________________________________________________
18Database::Database()
19{
20        m_Cnn=NULL;
21        sprintf(m_ErrStr,"NULL POINTER");
22}
23// __________________________________________________________________________
24void Database::GetErrorErrStr(char* ErrStr)
25{
26        sprintf(ErrStr,"%s",m_ErrStr);
27}
28// __________________________________________________________________________
29void Table::GetErrorErrStr(char* ErrStr)
30{
31        sprintf(ErrStr,"%s",m_ErrStr);
32}
33// __________________________________________________________________________
34bool Database::Open(char* UserName, char* Pwd,char* server,char*Bd)
35{
36        Herror hr;
37        m_Cnn=mysql_init(NULL);
38        if(m_Cnn==NULL){
39                hr.nError=0;
40                strcpy(hr.dError,"Error en la Creación del objeto MYSQL");
41                ErrorHandler(hr,m_ErrStr);
42                return(false); // Fallo de inicializaci�
43        }
44       
45        if(!mysql_real_connect(m_Cnn, server,UserName,Pwd,Bd, MYSQL_PORT,NULL,0)){
46                mysql_error(m_Cnn);
47                hr.nError=mysql_errno(m_Cnn);
48                strcpy(hr.dError,mysql_error(m_Cnn));
49                ErrorHandler(hr,m_ErrStr);
50                return(false); // Fallo de conexi�
51        }
52        hr.nError=0;
53        strcpy(hr.dError,"Success");
54        ErrorHandler(hr,m_ErrStr);
55        return (true);
56}
57// __________________________________________________________________________
58bool Database::Close()
59{
60                mysql_close(m_Cnn);
61                return(true);
62}
63// __________________________________________________________________________
64bool Database::Execute(char* CmdStr)
65{
66        Herror hr;
67        if (mysql_query(m_Cnn,CmdStr)){ // Ejecuta la consulta
68                mysql_error(m_Cnn);
69                hr.nError=mysql_errno(m_Cnn);
70                strcpy(hr.dError,mysql_error(m_Cnn));
71                ErrorHandler(hr,m_ErrStr);
72                mysql_close(m_Cnn);
73                return(false); // Fallo de conexión
74        }
75        hr.nError=0;
76        strcpy(hr.dError,"Success");
77        ErrorHandler(hr,m_ErrStr);
78        return (true);
79}
80// __________________________________________________________________________
81bool Database::Execute(char* CmdStr, Table& Tbl)
82{
83        Herror hr;
84        if (mysql_query(m_Cnn,CmdStr)) { // Ejecuta la consulta
85                mysql_error(m_Cnn);
86                hr.nError=mysql_errno(m_Cnn);
87                strcpy(hr.dError,mysql_error(m_Cnn));
88                ErrorHandler(hr,m_ErrStr);
89                mysql_close(m_Cnn);
90                return(false); // Fallo de conexi�
91        }
92
93        hr.nError=0;
94        strcpy(hr.dError,"Success");
95        ErrorHandler(hr,m_ErrStr);
96
97        Tbl.m_Rec = mysql_store_result(m_Cnn) ; // Toma el recordset
98        if(Tbl.m_Rec){
99                Tbl.row=mysql_fetch_row(Tbl.m_Rec);
100                Tbl.fields = mysql_fetch_fields(Tbl.m_Rec);
101                Tbl.num_fields = mysql_num_fields(Tbl.m_Rec);
102                Tbl.numreg=mysql_num_rows(Tbl.m_Rec);
103                Tbl.eof=Tbl.numreg==0; // Consulta vacia
104        }
105        return (true);
106}
107// __________________________________________________________________________
108Table::Table()
109{
110        m_Rec=NULL;
111}
112// __________________________________________________________________________
113bool Table::ISEOF()
114{
115        return(eof);
116}
117// __________________________________________________________________________
118bool Table::Get(const char* FieldName, char *FieldValue)
119{
120        char * aux;
121        aux=tomadato(FieldName);
122        if(aux)
123                strcpy(FieldValue,aux);
124        else
125                strcpy(FieldValue,"");
126        return(true);
127}
128// __________________________________________________________________________
129bool Table::Get(const char* FieldName,int &FieldValue)
130{
131        char *aux;
132        aux=tomadato(FieldName);
133        if(aux)
134                FieldValue=atoi(aux);
135        else
136                FieldValue=0;
137        return(true);
138}
139// __________________________________________________________________________
140bool Table::Get(const char* FieldName,char &FieldValue)
141{
142        char *aux;
143        aux=tomadato(FieldName);
144        FieldValue=aux[0];
145        return(true);
146}
147// __________________________________________________________________________
148char* Table::tomadato(const char* FieldName)
149{
150        Herror hr;
151        unsigned int i;
152
153        for(i = 0; i < num_fields; i++){
154                if(strcmp((char*)fields[i].name,FieldName)==0){
155                        sprintf(m_ErrStr,"Success");
156                        return((char*)row[i]);
157                }
158        }
159        hr.nError=-1;
160        strcpy(hr.dError,"El nombre del campo no existe");
161        ErrorHandler(hr,m_ErrStr);
162        return(NULL); // No existe el nombre del campo en la tabla
163}
164// __________________________________________________________________________
165
166bool Table::MoveNext()
167{
168        eof=false;
169        row=mysql_fetch_row(m_Rec);
170        if(row==NULL){
171                if(!mysql_eof(m_Rec))
172                        return(false); // Fallo de lectura
173                else
174                        eof=true; // Fin de fichero
175        }
176        return (true);
177}
178// __________________________________________________________________________
179bool Table::MoveFirst()
180{
181        my_ulonglong auxnumreg;
182       
183        auxnumreg=0;
184        mysql_data_seek(m_Rec,auxnumreg);
185        return (MoveNext());
186}
187// __________________________________________________________________________
188bool Table::MoveLast()
189{
190        my_ulonglong auxnumreg;
191        auxnumreg=numreg;
192        auxnumreg--;
193        if(auxnumreg<0) auxnumreg=0; // Principio de fichero
194        mysql_data_seek(m_Rec,auxnumreg);
195        return (MoveNext());
196        return (true);
197}
Note: See TracBrowser for help on using the repository browser.