Título: C + MySQL, traspaso de variables a un query de MySQL en C. [Resuelto] Publicado por: GisiNA en 6 Febrero 2014, 22:46 pm ¡Hola a todas las y los genios del lenguaje de Programación en C!
¿Hay alguien que se maneja bien con C + MySQL y ojalá con GTK? Estoy escribiendo un pequeño programa en C, con interfaz gráfica en GTK que debe insertar datos a una base de datos en MySQL, pero no logro traspasar un valor desde la interfaz gráfica escrita en GTK a un query de MySQL. Creo que ese problema lo podría solucionar resolviendo lo siguiente: ¿Cómo se traspasa en C una variable a un query de MySQL? El código con el que tengo problema es el siguiente: Código Definiticamente la forma con la que estoy tratando hacer el traspaso de la variable al query de MySQL está muy mal :huh:. En la web no he hallado respuestas satisfactorias. Espero que alguien pueda orientarme. Si necesitan el código completo, me avisan. No lo he querido colocar de inmediato para no saturar la página con más información. ¡Saludos y muchísimas gracias a todas y todos los genios en C! ME HE RESPONDIDO A MI MISMA. ABAJO MI PROPIA SOLUCIÓN. Título: Re: Consulta sobre C + MySQL, traspaso de variables a un query de MySQL en C. Publicado por: eferion en 7 Febrero 2014, 10:59 am Hay que aprender a leer la documentación de las APIs antes de usarlas.
https://dev.mysql.com/doc/refman/5.0/es/mysql-query.html (https://dev.mysql.com/doc/refman/5.0/es/mysql-query.html) "mysql_query" ejecuta una sentencia SQL (que se pasa como argumento en formato texto) y te devuelve un identificador que, mediante otras funciones, te permite acceder al resultado de la consulta. En lo que a ti te concierne, "mysql_query" requiere como argumento una cadena de texto que contiene la consulta a ejecutar. Lo que tienes que hacer es tratar esa cadena de texto para modificar el "%g" por el valor almacenado en "nota". Una opción puede ser utilizar la función "sprintf" y después pasarle el resultado a "mysql_query". Aunque espero que no haga falta decirlo... en tu código, la variable "nota" no tiene un valor definido. Título: Re: Consulta sobre C + MySQL, traspaso de variables a un query de MySQL en C. Publicado por: GisiNA en 7 Febrero 2014, 19:49 pm ¡Amigas y amigos!
Me respondo a mi misma. Acabo de encontrar la solución. Dejo mi solución por si a alguien llegara a servirle. Código
El programa se compila con el siguiente comando en Linux: Código
Y se ejecuta (en Linux. No sé cómo será en otros sistemas operativos... ): Código
Título: Re: C + MySQL, traspaso de variables a un query de MySQL en C. [Resuelto] Publicado por: dato000 en 8 Febrero 2014, 18:04 pm Hey nada mal, nunca he usado C/C++ con mysql, no parece diferente de java y C# excepto por esta linea:
Código No entiendo porque los otros valores, vale puede que sean así por defecto en la función sql para C, pero alguien podria explicarmelo en palabras rapidas?? por favor?? :silbar: :silbar: Ando corto de tiempo con tanto estudio y trabajo, pero avanzare y profundizare en estos temás. Título: Re: C + MySQL, traspaso de variables a un query de MySQL en C. [Resuelto] Publicado por: GisiNA en 8 Febrero 2014, 18:27 pm Hey nada mal, nunca he usado C/C++ con mysql, no parece diferente de java y C# excepto por esta linea: Código No entiendo porque los otros valores, vale puede que sean así por defecto en la función sql para C, pero alguien podria explicarmelo en palabras rapidas?? por favor?? :silbar: :silbar: Ando corto de tiempo con tanto estudio y trabajo, pero avanzare y profundizare en estos temás. Mira, quizás sea ésta la respuesta que buscas. Si no la es espero la respuesta a mi mensaje anterior que te hice llegar. Código
Título: Re: C + MySQL, traspaso de variables a un query de MySQL en C. [Resuelto] Publicado por: dato000 en 8 Febrero 2014, 21:03 pm Perfecto muchas gracias, pero en la parte del flag, que diferencia habria para el acceso al motor de base de datos???
Título: Re: C + MySQL, traspaso de variables a un query de MySQL en C. [Resuelto] Publicado por: GisiNA en 8 Febrero 2014, 21:32 pm Perfecto muchas gracias, pero en la parte del flag, que diferencia habria para el acceso al motor de base de datos??? ¡Hola! Casi siempre se usa como valor 0. Pero hay casos muy especiales en que se le puede otorgar a flags otro valor. Yo lamentablemente no tengo experiencia en eso, así que tampoco puedo hablarte con grandes nociones al respecto. Ahora bien, los flags permiten otorgar a la consulta un parámetro adicional que permite especificar formas especiales de respuestas, o sea, que permiten personalizar la respuesta que uno obtendrá. Por ejemplo, lo que acabo de leer en la web de mysql, en vez de obtener el total de filas afectadas, se puede especificar que otorgue como resultado el valor total de filas que coinciden con la consulta. Son varios los parámetros para personalizar la consulta que pueden agregarse. Acá te dejo la página de MySQL que explica los flags (ahora bien, en inglés). https://dev.mysql.com/doc/refman/5.0/es/mysql-real-connect.html (https://dev.mysql.com/doc/refman/5.0/es/mysql-real-connect.html) ¡Saludos! Título: Re: C + MySQL, traspaso de variables a un query de MySQL en C. [Resuelto] Publicado por: dato000 en 9 Febrero 2014, 00:49 am Ummm interesante, buena info!!
Flag Name Flag Description CLIENT_COMPRESS Use compression protocol. CLIENT_FOUND_ROWS Return the number of found (matched) rows, not the number of affected rows. CLIENT_IGNORE_SPACE Allow spaces after function names. Makes all functions names reserved words. CLIENT_INTERACTIVE Allow interactive_timeout seconds (instead of wait_timeout seconds) of inactivity before closing the connection. The client's session wait_timeout variable is set to the value of the session interactive_timeout variable. CLIENT_LOCAL_FILES Enable LOAD DATA LOCAL handling. CLIENT_MULTI_STATEMENTS Tell the server that the client may send multiple statements in a single string (separated by ';'). If this flag is not set, multiple-statement execution is disabled. New in 4.1. CLIENT_MULTI_RESULTS Tell the server that the client can handle multiple result sets from multiple-statement executions or stored procedures. This is automatically set if CLIENT_MULTI_STATEMENTS is set. New in 4.1. CLIENT_NO_SCHEMA Don't allow the db_name.tbl_name.col_name syntax. This is for ODBC. It causes the parser to generate an error if you use that syntax, which is useful for trapping bugs in some ODBC programs. CLIENT_ODBC The client is an ODBC client. This changes mysqld to be more ODBC-friendly. CLIENT_SSL Use SSL (encrypted protocol). This option should not be set by application programs; it is set internally in the client library. Justamente estaba pensando en casos en los que se use cifrado o encriptamiento (CLIENT_SSL) o con un driver diferente de conexión (CLIENT_ODBC), también me parecio muy interesante lo de la duración de la sesión del usuario en un caso de inactividad, muy util (CLIENT_INTERACTIVE). Gracias por el link ;-) ;-) Título: Re: C + MySQL, traspaso de variables a un query de MySQL en C. [Resuelto] Publicado por: GisiNA en 9 Febrero 2014, 11:54 am Ummm interesante, buena info!! Flag Name Flag Description CLIENT_COMPRESS Use compression protocol. CLIENT_FOUND_ROWS Return the number of found (matched) rows, not the number of affected rows. CLIENT_IGNORE_SPACE Allow spaces after function names. Makes all functions names reserved words. CLIENT_INTERACTIVE Allow interactive_timeout seconds (instead of wait_timeout seconds) of inactivity before closing the connection. The client's session wait_timeout variable is set to the value of the session interactive_timeout variable. CLIENT_LOCAL_FILES Enable LOAD DATA LOCAL handling. CLIENT_MULTI_STATEMENTS Tell the server that the client may send multiple statements in a single string (separated by ';'). If this flag is not set, multiple-statement execution is disabled. New in 4.1. CLIENT_MULTI_RESULTS Tell the server that the client can handle multiple result sets from multiple-statement executions or stored procedures. This is automatically set if CLIENT_MULTI_STATEMENTS is set. New in 4.1. CLIENT_NO_SCHEMA Don't allow the db_name.tbl_name.col_name syntax. This is for ODBC. It causes the parser to generate an error if you use that syntax, which is useful for trapping bugs in some ODBC programs. CLIENT_ODBC The client is an ODBC client. This changes mysqld to be more ODBC-friendly. CLIENT_SSL Use SSL (encrypted protocol). This option should not be set by application programs; it is set internally in the client library. Justamente estaba pensando en casos en los que se use cifrado o encriptamiento (CLIENT_SSL) o con un driver diferente de conexión (CLIENT_ODBC), también me parecio muy interesante lo de la duración de la sesión del usuario en un caso de inactividad, muy util (CLIENT_INTERACTIVE). Gracias por el link ;-) ;-) Me alegro que haya servido. :) |