Dev - C++ - Dev C++ Conexion con Mysql y Mysql-front

 
Vista:
sin imagen de perfil

Dev C++ Conexion con Mysql y Mysql-front

Publicado por ranger (5 intervenciones) el 16/08/2016 16:43:47
Buenas...
Necesito Un Poco De su Ayuda Y Conocimientos...
Tengo un problema a pasar los resultados de las variables tipo int a la base de datos que esta en Mysql-front.
Los Datos tipo char se capturan por pantalla pero cuando va hacer los calcula de variables int me arroja un error de syntasis....


este la parte del codigo donde esta el problema

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
void ingresar()
 
{
   Empleado info;
 
   cout << "Ingrese Nombre: ";
   cin >> info.nombre;
   cout << "Ingrese Apellido: ";
   cin >> info.apellido;
   cout << "Ingrese Edad: ";
   cin >> info.edad;
   cout << "Ingrese Sexo: ";
   cin >> info.sexo;
   cout << "Ingrese Cedula: ";
   cin >> info.id_ced;
   cout << "Ingrese direccion: ";
   cin >> info.direccion;
   cout << "Ingrese Hora Trabajas: ";
   cin >> info.ht;
   cout << "Ingrese Precio x Horas Trabadas: ";
   cin >> info.pxht;
   cout << "Ingrese Hora Extras: ";
   cin >> info.he;
   cout << "Ingrese Precio x Horas Extras: ";
   cin >> info.pxhe;
   info.sueldo = info.ht * info.pxht;
   info.sueldoxhe = info.he * info.pxhe;
   info.afp = 287;
   info.rl = 115;
   info.seguro = 304;
   info.infotep = 100;
   info.sueldot = (info.sueldo + info.sueldoxhe)- info.afp - info.rl - info.seguro - info.infotep;
   cout <<"Su Sueldo Por Horas Trabajadas Es De:"<<info.sueldo << endl;
   cout <<"Su Sueldo Por Horas Extras Trabajadas Es De:"<<info.sueldoxhe << endl;
   cout <<"Su Descuento De La AFP Es De:"<<info.afp << endl;
   cout <<"Su Descuento De RIESGO LABORAL Es De:"<<info.rl << endl;
   cout <<"Su Descuento Del SEGURO Es De:"<<info.seguro << endl;
   cout <<"Su Descuento De INFOTEP Es De:"<<info.infotep << endl;
   cout <<"Su Sueldo Neto Es De:"<<info.sueldot << endl;
 
   insertar(info);
   cout << "Persona ingresada exitosamente" << endl;
}
 
 
void insertar(Empleado info)
{
   char *consulta;
   char sentencia[] = "INSERT INTO empleado(nombre, apellido, edad, sexo, id_ced, direccion, ht, pxht, he, pxhe, sueldo, sueldoxhe, afp, rl, seguro, infotep, sueldot) VALUES(\'%s\', \'%s\', %d, \'%s\', \'%s\', \'%s\', %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d,)";
 
   consulta = new char[strlen(sentencia)+sizeof(Empleado)-sizeof(int)];
   sprintf(consulta, sentencia, info.nombre, info.apellido, info.edad, info.sexo, info.id_ced, info.direccion, info.ht, info.pxht, info.he, info.pxhe, info.sueldo, info.sueldoxhe, info.afp, info.rl, info.seguro, info.infotep, info.sueldot);
 
   obj_mysql.ejecutar_sql(consulta);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Dev C++ Conexion con Mysql y Mysql-front

Publicado por Hector (45 intervenciones) el 17/08/2016 16:21:07
Hola, en que linea especifica se genera el error, generalmente ese tipo de errores sucede por falta de un casting o estas ingresando un tipo de dato erróneo, si pudieras proveer la clase empleado seria de ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Dev C++ Conexion con Mysql y Mysql-front

Publicado por ranger (5 intervenciones) el 17/08/2016 20:40:22
Gracias Por Responder..


error


Ese No Es Todo El Código Completo Solo Es La Parte en donde se Termina la Ejecución... Cuando El Llega a La Linea 25 que me Pide el valor de la Horas Extra Trabajadas, se lo ingreso y Le Doy a Enter hay Se Termina, Se para y Me Arroja Este Mensaje luego De Ponerle numeros y Darle enter hasta que me Tira Ese error


Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '>' at line
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Dev C++ Conexion con Mysql y Mysql-front

Publicado por ranger (5 intervenciones) el 17/08/2016 21:24:11
Cuando Yo Ingrese El Las Horas Extras Trabajadas Deberia De hacermer los Siguientes Calculos :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
info.sueldo = info.ht * info.pxht;
info.sueldoxhe = info.he * info.pxhe;
info.afp = 287;
info.rl = 115;
info.seguro = 304;
info.infotep = 100;
info.sueldot = (info.sueldo + info.sueldoxhe)- info.afp - info.rl - info.seguro - info.infotep;
cout <<"Su Sueldo Por Horas Trabajadas Es De:"<<info.sueldo << endl;
cout <<"Su Sueldo Por Horas Extras Trabajadas Es De:"<<info.sueldoxhe << endl;
cout <<"Su Descuento De La AFP Es De:"<<info.afp << endl;
cout <<"Su Descuento De RIESGO LABORAL Es De:"<<info.rl << endl;
cout <<"Su Descuento Del SEGURO Es De:"<<info.seguro << endl;
cout <<"Su Descuento De INFOTEP Es De:"<<info.infotep << endl;
cout <<"Su Sueldo Neto Es De:"<<info.sueldot << endl;

y Pasar lo Valores A La Base de Datos... Pero no Lo hace...
el Codigo es Muy Amplio Pero si quieres Lo subo Completo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Dev C++ Conexion con Mysql y Mysql-front

Publicado por ranger02 (5 intervenciones) el 17/08/2016 22:36:09
Hay Esta EL COdigo ComPletoo
Necesito Que Los Calculos De la Variabes numerica Me Lo Imprima Por Pantalla Y Me Lo Ingrese A La Base De Datos..Por Favorr

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
#include "sql_db.h"
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
 
// Definición de estructura
struct empleado{
   int id;
   char nombre[150];
   char apellido[100];
   char sexo[10];
   char id_ced[20];
 // char resp;
   char direccion [40];
   int sueldo, sueldoxhe, ht, sueldot, pxht, he, pxhe, afp, rl, seguro, infotep, edad;
};
 
typedef struct empleado Empleado;
 
// Objeto global
sql_db obj_mysql("localhost", "root", "clave", "nomina_emp");
 
// Prototipos de metodos
void ingresar(), insertar(Empleado info);
void buscar(), modificar(), actualizar(Empleado info), eliminar();
void ordenar(), mostrar();
char menu(void); void pausa();
 
int main(int argc, char *argv[])
{
   system("CLS");
   char op;
 
   for(;;)
   {
     fflush(stdin);
     switch(op=menu())
     {
        case '1':
           ingresar();
           pausa();
           break;
        case '2':
           buscar();
           pausa();
           break;
        case '3':
           modificar();
           pausa();
           break;
        case '4':
           eliminar();
           pausa();
           break;
        case '5':
           ordenar();
           pausa();
           break;
        case '6':
           mostrar();
           pausa();
           break;
        case '7':
           break;
        default :
           cout << "Opcion no valida";
           pausa();
           break;
     }
 
     if(op=='7') break;
     system("CLS");
   }
 
   return 0;
}
 
void ingresar()
 
{
   Empleado info;
 
   cout << "Ingrese Nombre: ";
   cin >> info.nombre;
   cout << "Ingrese Apellido: ";
   cin >> info.apellido;
   cout << "Ingrese Edad: ";
   cin >> info.edad;
   cout << "Ingrese Sexo: ";
   cin >> info.sexo;
   cout << "Ingrese Cedula: ";
   cin >> info.id_ced;
   cout << "Ingrese direccion: ";
   cin >> info.direccion;
   cout << "Ingrese Hora Trabajas: ";
   cin >> info.ht;
   cout << "Ingrese Precio x Horas Trabadas: ";
   cin >> info.pxht;
   cout << "Ingrese Hora Extras: ";
   cin >> info.he;
   cout << "Ingrese Precio x Horas Extras: ";
   cin >> info.pxhe;
   info.sueldo = info.ht * info.pxht;
   info.sueldoxhe = info.he * info.pxhe;
   info.afp = 287;
   info.rl = 115;
   info.seguro = 304;
   info.infotep = 100;
   info.sueldot = (info.sueldo + info.sueldoxhe)- info.afp - info.rl - info.seguro - info.infotep;
   cout <<"Su Sueldo Por Horas Trabajadas Es De:"<<info.sueldo << endl;
   cout <<"Su Sueldo Por Horas Extras Trabajadas Es De:"<<info.sueldoxhe << endl;
   cout <<"Su Descuento De La AFP Es De:"<<info.afp << endl;
   cout <<"Su Descuento De RIESGO LABORAL Es De:"<<info.rl << endl;
   cout <<"Su Descuento Del SEGURO Es De:"<<info.seguro << endl;
   cout <<"Su Descuento De INFOTEP Es De:"<<info.infotep << endl;
   cout <<"Su Sueldo Neto Es De:"<<info.sueldot << endl;
 
   insertar(info);
   cout << "Persona ingresada exitosamente" << endl;
}
 
 
void insertar(Empleado info)
{
   char *consulta;
   char sentencia[] = "INSERT INTO empleado(nombre, apellido, edad, sexo, id_ced, direccion, ht, pxht, he, pxhe, sueldo, sueldoxhe, afp, rl, seguro, infotep, sueldot) VALUES(\'%s\', \'%s\', %d, \'%s\', \'%s\', \'%s\', %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d,)";
 
   consulta = new char[strlen(sentencia)+sizeof(Empleado)-sizeof(int)];
   sprintf(consulta, sentencia, info.nombre, info.apellido, info.edad, info.sexo, info.id_ced, info.direccion, info.ht, info.pxht, info.he, info.pxhe, info.sueldo, info.sueldoxhe, info.afp, info.rl, info.seguro, info.infotep, info.sueldot);
 
   obj_mysql.ejecutar_sql(consulta);
}
 
void buscar()
{
   char nombre[20];
   char *consulta;
   char sentencia[] =  "SELECT * FROM empleado WHERE nombre=\'%s\'";
   MYSQL_RES *res;
   MYSQL_ROW  row;
 
   cout << "Ingrese nombre a buscar: ";
   cin >> nombre;
 
   consulta = new char[strlen(sentencia)+strlen(nombre)];
   sprintf(consulta, sentencia, nombre);
   res = obj_mysql.ejecutar_sql(consulta);
 
   if(obj_mysql.filas_afectadas()>0)
   {
       row = obj_mysql.obtener_fila(res);
	   cout << "Id: " << row[0] << endl;
	   cout << "Nombre: " << row[1] << endl;
	   cout << "Apellido: " << row[2] << endl;
	   cout << "Edad: " << row[3] << endl;
       cout << "Sexo: " << row[4] << endl;
       cout << "Cedula: " << row[5] << endl;
       cout << "Direccion: " << row[6] << endl;
       cout << "Hora Trabajadas: " << row[7] << endl;
       cout << "Precio Horas Trabajadas: " << row[8] << endl;
       cout << "Horas Extras: " << row[9] << endl;
       cout << "precio Horas Extras: " << row[10] << endl;
       cout << "Sueldo Horas Trabajadas: " << row[11] << endl;
       cout << "Sueldo Horas Extras: " << row[12] << endl;
       cout << "AFP: " << row[13] << endl;
       cout << "Sriegos laboral " << row[14] << endl;
       cout << "Seguro: " << row[15] << endl;
       cout << "Infotep: " << row[16] << endl;
       cout << "Sueldo Neto " << row[17] << endl;
 
   }
   else
      cout << "Empleado No Encontrado" << endl;
}
 
void modificar()
{
   char nombre[20];
   char *consulta;
   char *temp;
   char sentencia[] = "SELECT * FROM empleado  WHERE nombre=\'%s\'";
   MYSQL_RES *res;
   MYSQL_ROW  row;
   Empleado info;
 
   cout << "Ingrese nombre a modificar: ";
   cin >> nombre;
 
   consulta = new char[strlen(sentencia)+strlen(nombre)];
   sprintf(consulta, sentencia, nombre);
   res = obj_mysql.ejecutar_sql(consulta);
 
   if(obj_mysql.filas_afectadas()>0)
   {
       row = obj_mysql.obtener_fila(res);
       sprintf(temp, "%s", row[0]);
       info.id = atoi(temp);
       cout << "Ingrese Nombre: ";
       cin >> info.nombre;
       cout << "Ingrese Apellido: ";
       cin >> info.apellido;
       cout << "Ingrese Edad: ";
       cin >> info.edad;
       cout << "Ingrese Sexo: ";
       cin >> info.sexo;
       cout << "Ingrese Cedula: ";
       cin >> info.id_ced;
       cout << "Ingrese direccion: ";
       cin >> info.direccion;
       cout << "Ingrese Hora Trabajas: ";
       cin >> info.ht;
       cout << "Ingrese Precio x Horas Trabadas: ";
       cin >> info.pxht;
       cout << "Ingrese Hora Extras: ";
       cin >> info.he;
       cout << "Ingrese Precio x Horas Extras: ";
       cin >> info.pxhe;
       actualizar(info);
       cout << "Datos actualizados exitosamente" << endl;
   }
   else
      cout << "Empleado No Encontrado" << endl;
}
 
void actualizar(Empleado info)
{
   char nombre[20];
   char *consulta;
   char sentencia[] = "UPDATE empleado SET nombre=\'%s\', apellido=\'%s\', edad=%d, sexo=\'%s\', id_ced=\'%s\',  direccion=\'%s\', ht=%d, pxht=%d, he=%d, pxhe=%d, sueldo=%d, sueldoxhe=%d, afp=%d, rl=%d, seguro=%d, infotep=%d, sueldot=%d, WHERE id=%d";
 
   consulta = new char[strlen(sentencia)+strlen(nombre)];
   sprintf(consulta, sentencia, info.nombre, info.apellido, info.edad, info.direccion, info.id);
   obj_mysql.ejecutar_sql(consulta);
}
 
void eliminar()
{
   char nombre[20];
   char *consulta;
   char *temp;
   char sentencia_buscar[] = "SELECT * FROM empleado WHERE nombre=\'%s\'";
   char sentencia_eliminar[] = "DELETE FROM empleado WHERE id=%d";
   MYSQL_RES *res;
   MYSQL_ROW  row;
   Empleado info;
 
   cout << "Ingrese nombre a eliminar: ";
   cin >> nombre;
 
   consulta = new char[strlen(sentencia_buscar)+strlen(nombre)];
   sprintf(consulta, sentencia_buscar, nombre);
   res = obj_mysql.ejecutar_sql(consulta);
 
   if(obj_mysql.filas_afectadas()>0)
   {
       row = obj_mysql.obtener_fila(res);
       sprintf(temp, "%s", row[0]);
       int id = atoi(temp);
       consulta = new char[strlen(sentencia_eliminar)+sizeof(int)];
       sprintf(consulta, sentencia_eliminar, id);
       obj_mysql.ejecutar_sql(consulta);
       cout << "Datos eliminados exitosamente" << endl;
   }
   else
      cout << " Empleado no encontrado" << endl;
}
 
void ordenar()
{
   MYSQL_RES *res;
   MYSQL_ROW row;
   int filas, columnas;
 
   res = obj_mysql.ejecutar_sql("SELECT * FROM empleado ORDER BY nombre");
   filas = obj_mysql.numero_filas(res);
   columnas = obj_mysql.numero_columnas(res);
 
   cout << "--- Listado de Empleados("  << filas << ") ---" << endl;
 
   for(int j=0; j<columnas; j++)
       cout << obj_mysql.nombre_columna(res, j) <<  " - ";
   cout << endl;
 
   while(row = obj_mysql.obtener_fila(res))
   {
       for(int j=0; j<columnas; j++)
       {
           cout << row[j] << ", ";
       }
       cout << endl;
   }
   cout << "Se han ordenado los registros por: nombre" << endl;
}
 
void mostrar()
{
   MYSQL_RES *res;
   MYSQL_ROW row;
   int filas, columnas;
 
   res = obj_mysql.ejecutar_sql("SELECT * FROM empleado");
   filas = obj_mysql.numero_filas(res);
   columnas = obj_mysql.numero_columnas(res);
 
   cout << "--- Listado de empleados("  << filas << ") ---" << endl;
 
   for(int j=0; j<columnas; j++)
       cout << obj_mysql.nombre_columna(res, j) <<  " - ";
   cout << endl;
 
   while(row = obj_mysql.obtener_fila(res))
   {
       for(int j=0; j<columnas; j++)
       {
           cout << row[j] << ", ";
       }
       cout << endl;
   }
}
 
 
char menu(void)
{
   char c;
   cout << "(1)Ingresar, (2)Buscar, (3)Modificar, (4)Eliminar, (5)Ordenar, (6)Mostrar lista\n(7)Salir\n";
 
   printf("Seleccion: ");
   c=getchar();
   cout << endl;
   return(c);
}
 
void pausa()
{
   cout << endl;
   system("PAUSE");
   cout << endl;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Dev C++ Conexion con Mysql y Mysql-front

Publicado por Hector (45 intervenciones) el 19/08/2016 17:30:22
Ese tipo de error significa que no estas realizando la sentencia correctamente:

1
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '>' at line

El simbolo ">" esta siendo agregado mientras estas haciendo el formato, seguramente en la funcion sprintf() de la funcion insertar(Empleado info)

Una de las cosas que me llamo la atencion es que agregaste una "," al final de la sentencia:

1
2
char sentencia[] = "INSERT INTO empleado(nombre, apellido, edad, sexo, id_ced, direccion, ht, pxht, he, pxhe, sueldo, sueldoxhe, afp, rl, seguro, infotep, sueldot)
VALUES(\'%s\', \'%s\', %d, \'%s\', \'%s\', \'%s\', %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d,)"; // Hay una coma que no deberia estar 

Elimina esa coma, y para verificar en que parte de esa sentencia se ingresa el ">", utiliza un cout para imprimir la consulta ya una ves formulada:

1
2
3
4
5
6
7
8
9
10
11
12
13
void insertar(Empleado info)
{
   char *consulta;
   char sentencia[] = "INSERT INTO empleado(nombre, apellido, edad, sexo, id_ced, direccion, ht, pxht, he, pxhe, sueldo, sueldoxhe, afp, rl, seguro, infotep, sueldot) VALUES(\'%s\', \'%s\', %d, \'%s\', \'%s\', \'%s\', %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d,)";
 
   consulta = new char[strlen(sentencia)+sizeof(Empleado)-sizeof(int)];
   sprintf(consulta, sentencia, info.nombre, info.apellido, info.edad, info.sexo, info.id_ced, info.direccion, info.ht, info.pxht, info.he, info.pxhe, info.sueldo, info.sueldoxhe, info.afp, info.rl, info.seguro, info.infotep, info.sueldot);
 
   cout << consulta;
   system("pause");
 
   obj_mysql.ejecutar_sql(consulta);
}

Luego verifica la posicion del error y comparalo con los elementos de tu sprintf.

Espero que esto de ayude a solucionar el problema, un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Dev C++ Conexion con Mysql y Mysql-front

Publicado por ranger (5 intervenciones) el 19/08/2016 21:26:41
Buenas.... Muchas Gracias ... Me Funciona a La Perfección ...
Solo Era La Coma.... Pero Muchas Graciasss
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar