elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Consulta sobre C + MySQL, traspaso del resultado de una consulta MySQL a C?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Consulta sobre C + MySQL, traspaso del resultado de una consulta MySQL a C?  (Leído 1,863 veces)
GisiNA

Desconectado Desconectado

Mensajes: 30


Ver Perfil
¿Consulta sobre C + MySQL, traspaso del resultado de una consulta MySQL a C?
« en: 6 Abril 2014, 21:31 »

¡Hola todas y todos!

En el siguiente programa realizo dos consultas MySQL desde C. Como podrán apreciar hago una de ellas muy mal.. A saberl, la primera.

Me gustaría saber de qué modo lograr que la primera consulta sea pasada a la segunda pero no como sentencia misma, sino el resultado de mi consulta. La primera pretende estimar mis horas trabajadas en un determinado mes para devolver un valor numérico de tipo float. Pero en vez de devolver un valor numérico, traspasa toda la gigante e inacabable sentencia.

Obtengo el error:

Código
  1. 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 'xxxx', '', 'xxxxxxxx', 'xxx', 'xxx')' at line n

La impresión en pantalla de
Código
  1. printf("Suma horas: %s", sum_horas_mensual);
(sentencia que tengo incluida en mi programa...) resulta ser:

Código
  1. Suma horas: SET @shm := (SELECT SUM(hras_trab) FROM Horas_trabajadas Total WHERE mes='Februar';)

Vale decir, mi error consiste en que no toma el resultado de la suma que debería arrojar SUM (por ejemplo 63) sino el query MySQL completo en toda su gloria y majestad... pero que no me sirve en absoluto.

¿Qué estoy haciendo mal? :huh: :huh: :huh:

Acá el código completo (sin acentos en los comentarios porque aparecen garabatos y alguien puede llegar a sentirse ofendido... sin mi más mínima intensión):

Código
  1. #include "finish_with_error.h"
  2.  
  3. #define n (10) // n = 3. Three decimal points.
  4.  
  5. //Valores que vienen traspasados de otra funcion.                                        
  6. void conectar(char array_fecha_fact[11], char array_fase_trabajada[257], char array_hrs_totales[4], float float_std_lohn, int int_id_empresas){
  7.  
  8.    MYSQL   *conn;            
  9.    char    q[1024],          
  10.            sum_horas_mensual[4];
  11.  
  12.    conn = mysql_init(NULL);  
  13.    mysql_real_connect(conn, "localhost", "fact", "mi_clave_supersecreta_y_supersegura", "facturas", 0, NULL, 0);
  14.  
  15.  //Aca la consulta a MySQL de la que quiero capturar el resultado y en la que hago algo mal.            
  16.    sprintf(sum_horas_mensual, "SET @shm := (SELECT SUM(hras_trab) FROM Horas_trabajadas Total WHERE mes='Februar';)\n");
  17.    printf("Suma horas: %s", sum_horas_mensual);
  18.  
  19.    sprintf(q,"INSERT INTO Facturas(id_fact, fecha, cant_horas, horario, hora_salario, id_empresas) VALUES('', '%s', '%s', 'algo_muy_importante_dice_aca', '%g', '%i')\n", array_fecha_fact, sum_horas_mensual, float_a, int_id_empresas);                              
  20.    mysql_query(conn, q);    
  21.    finish_with_error(conn);    
  22.    mysql_close(conn);        
  23. }  

Bueno, espero que puedan ayudarme...!

Saludos a todas y todos y muy agradecida por sus respuestas.

Gisi

\m/


« Última modificación: 6 Abril 2014, 21:33 por GisiNA » En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: ¿Consulta sobre C + MySQL, traspaso del resultado de una consulta MySQL a C?
« Respuesta #1 en: 6 Abril 2014, 23:59 »

tienes que enviar la consulta SQL a la base de datos... con mysql_query.

Después tienes que llamar a mysql_store_result( ) para que te devuelva el resultado de la query. Para moverte por los diferentes resultados, tienes que usar mysql_fetch_row( ).

En la web de mysql tienes toda la documentación al respecto sobre estas funciones.

Código
  1. if ( mysql_query(con, "SELECT ...") )
  2.  error( );
  3.  
  4. MYSQL_RES *result = mysql_store_result(con);
  5.  
  6. if (result == NULL)
  7.  error( );
  8.  
  9. int num_fields = mysql_num_fields(result);
  10.  
  11. MYSQL_ROW row;
  12.  
  13. while ((row = mysql_fetch_row(result)))
  14. {
  15.  campo0 ? row[ 0 ];
  16.  campo1 = row[ 1 ];
  17.  ...
  18. }


En línea

GisiNA

Desconectado Desconectado

Mensajes: 30


Ver Perfil
Re: ¿Consulta sobre C + MySQL, traspaso del resultado de una consulta MySQL a C?
« Respuesta #2 en: 8 Abril 2014, 16:00 »

Oh! Gracias por la orientación. Le daré un intento. Si logro el resultado buscado colocaré acá la solución completa, para quién pueda servirle!
Saludos!



¡Hola amigas y amigos!

Lamentablemente no he podido avanzar en mi problema. Soy novata en C API y por mucho que he buscado en internet, no logro llegar a la solución. La respuesta que se me entregó acá fue demasiado genérica que sinceramente agradezco mucho pero que lamentablemente no me sirvió los suficiente.

A lo q

Código
  1.  
  2.  



¡Hola amigas y amigos!

Estoy haciendo un ejercicio personal, con el fin de ensayar C API (C+MySQL y GTK).

Lamentablemente no he podido avanzar en mi problema. Soy novata en C API y por mucho que haya buscado en internet (también en la página oficial de MySQL), no logro llegar a la solución. La respuesta que se me entregó acá que sinceramente agradezco mucho fue lamentablemente muy genérica y no me sirvió lo suficiente.

A lo que he llegado es lo siguiente.

Código
  1. //Archivo que incluyo para establecer si hubo error al establecer conexión con la base de datos.
  2. #include "finish_with_error.h"
  3.  
  4. //Valores que vienen traspasados desde otra funcion.                                        
  5. void conectar(char array_fecha_fact[11], char array_fase_trabajada[257], char array_hrs_totales[4], float float_std_lohn, int int_id_empresas){
  6.  
  7. //Declaracion de variables que usare
  8. MYSQL   *conn;            
  9. char    q[1024],          
  10. sum_horas_mensual[4];
  11.  
  12. //Se establece la conexion con la Base de Datos
  13. conn = mysql_init(NULL);  
  14. mysql_real_connect(conn, "localhost", "fact", "mi_clave_supersecreta_y_supersegura", "facturas", 0, NULL, 0);
  15.  
  16. //Aca intento realizar la consulta a la Base de Datos, de la que quiero capturar el resultado            
  17. cant_horas_resultado = mysql_query(conn, "SELECT SUM(hras_trab) FROM Horas_trabajad as WHERE mes='Februar'");
  18. MYSQL_RES *result = mysql_store_result(cant_horas_resultado);
  19.  
  20. //Aca intento traspasar el valor (un valor entero o decimal) a la Base de Datos por medio de la siguiente secuencia:
  21. sprintf(q,"INSERT INTO Facturas(id_fact, fecha, cant_horas, horario, hora_salario, id_empresas) VALUES('', '%s', '%s', 'algo_muy_importante_dice_aca', '%g', '%i')\n", array_fecha_fact, sum_horas_mensual, float_a, int_id_empresas);                              
  22.  
  23.       mysql_query(conn, q);    
  24.       finish_with_error(conn);    
  25.  
  26.  
  27.       mysql_close(conn);        
  28.    }

No sé si realizo mal la consulta para obtener el valor, o si lo que hago mal es el traspaso del valor a la base de datos o si ambos.

Espero que algún genio puedo orientarme.
Saludos a todos,
Gisi
« Última modificación: 3 Junio 2014, 20:11 por Eternal Idol » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Consulta en mysql
Bases de Datos
octavioxd 3 3,759 Último mensaje 9 Enero 2010, 04:27
por octavioxd
Consulta en mysql
Bases de Datos
usuani 2 4,070 Último mensaje 9 Marzo 2010, 17:25
por usuani
como asignarle el resultado de una consulta de mysql a un textbox desde vb.net?
.NET (C#, VB.NET, ASP)
pauly14 3 10,026 Último mensaje 27 Marzo 2011, 15:06
por [D4N93R]
Consulta MySQL
Bases de Datos
migueweb 1 1,164 Último mensaje 25 Abril 2013, 20:32
por engel lex
C + MySQL, traspaso de variables a un query de MySQL en C. [Resuelto]
Programación C/C++
GisiNA 8 3,127 Último mensaje 9 Febrero 2014, 11:54
por GisiNA
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines