|
Punteros y MYSQL (solucionado)
|
| Autor |
Mensaje |
Snoopydog
Usuario PL
Mensajes: 27
Grupo: Registrado
Registro en: Jun 2007
Estado:
Sin Conexión
Reputación: 0
|
Punteros y MYSQL (solucionado)
Buenos dias tengan todos
Vengo con un problema punteros, en realidad soy nuevo en el tema de punteros y creo que es un tema complicado pero muy interesante, ahora necesito hacer un programa en C que mande parametros a una funcion de mysql, la funcion de mysql "conexion" la he creado en una libreria con tal de poder utilizarla en distintos programas, es necesario mediante un programa en C mandar parametros punteros a la funcion de conexion, la funcion los toma y los usa para conectarse a mysql y regresar la conexion para poder cerrarla en otra funcion de la libreria. Los parametrso ya los puedo mandar, pero al compilar me marca warning sin embargo se crea el ejecutable y funciona bien en la conexion, me gustaria quitar los warnings y de la funcion "conexion" devolver la variable que contiene la conexion "conn" para en mi programa en C cerrarla llamando una funcion de "desconectar", mas explicito les mando el codigo de la libreria y de mi programa.
libreria:
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
char conexionserv(char* servidor,char* usuario,char* contrasena,char* basededatos)
{
MYSQL *conn;
conn = mysql_init(NULL);
/* Conexion a la base de datos */
if (!mysql_real_connect(conn, servidor,
usuario, contrasena, basededatos, 0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
printf("Error en la conexion\n");
exit(1);
}
else
{printf("Se ha conectado al servidor\n");}
return conn;
}
MYSQL desconectar(MYSQL *desc)
{
mysql_close(desc);
printf("Se cerro la conexion");
}
Esas son las funciones ke deseo manejar en mi programa en C que estan en mi libreria, y el programa en C kedaria algo asi:
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
#include <conexion.h>
main()
{
MYSQL *conn2;
char* servidor[20];
char* usuario[20];
char* contrasena[20];
char* basededatos[20];
conn = mysql_init(NULL);
printf("Prueba de conexion al server\n");
printf("Host al que se desea conectar: ");
scanf("%s",servidor);
printf("Usuario: ");
scanf("%*c%[^\n]",usuario);
printf("Password del usuario: ");
scanf("%*c%[^\n]",contrasena);
printf("Base de datos que se desea conectar: ");
scanf("%*c%[^\n]",basededatos);
printf("\n");
conn2=conexionserv(servidor,usuario,contrasena,basededatos);
printf("conexion: %p\n",conn2);
desconectar(conn2);
return 0;
}
Problemas:
1.-cuando mando parametros a conexionserv() al compilar me marca warning passing arg 1 of 'conexionserv' incompatible pointer type, warning passing arg 2 of 'conexionserv' incompatible pointer type,y asi con los 4 parametros, sin embargo se genera el ejecutable y se conecta al servidor correctamente.
2.-Al compilar mi libreria me marca un
warning: return makes integer from pointer without a cast, sin embargo se genera la libreria correctamente.
3.-cuando se obtiene conn2 en el main no hay problemas pero al momento de mandarlo al desconectar() me aparece el problema segmentation fault y no se desconecta.
Alguien que conozca de punteros tipo mysql y me pueda ayudar se lo agradeceria mucho.
|
|
| 10-04-2007 01:35 PM |
|
 |
Snoopydog
Usuario PL
Mensajes: 27
Grupo: Registrado
Registro en: Jun 2007
Estado:
Sin Conexión
Reputación: 0
|
RE: Punteros y MYSQL
disculpen en el main me equivoque en la linea conn=mysql_init(null); , ahi va conn2=mysql_init(null); , ya que sino marcaria error que no se ha definido "conn"
|
|
| 10-04-2007 01:39 PM |
|
 |
oneken
Moderador
    
Mensajes: 117
Grupo: Moderadores
Registro en: Jul 2005
Estado:
Sin Conexión
Reputación: 3
|
RE: Punteros y MYSQL
Te paso este codigo modificado creo que resuelve el problema chequealo por favor
######################## connecc.h #############################
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
MYSQL* conexionserv(char* servidor,char* usuario,char* contrasena,char* basededatos);
void desconectar(MYSQL *desc);
#################### connec.cpp ###################################
#include <connecc.h>
MYSQL* conexionserv(char* servidor,char* usuario,char* contrasena,char* basededatos)
{
MYSQL *conn;
conn = mysql_init(NULL);
/* Conexion a la base de datos */
if (!mysql_real_connect(conn, servidor,
usuario, contrasena, basededatos, 0, NULL, 0)) {
fprintf(stderr, "%s\n", mysql_error(conn));
printf("Error en la conexion\n");
exit(1);
}
else
{printf("Se ha conectado al servidor\n");}
return conn;
}
void desconectar(MYSQL *desc)
{
mysql_close(desc);
printf("Se cerro la conexion\n");
}
##################### main ##########################
#include <stdio.h>
#include <stdlib.h>
#include </var/lib/mysql/include/mysql/mysql.h>
#include <connecc.h>
int main()
{
MYSQL *conn2;
char servidor[20]="192.168.100.2";
char usuario[20]="adolfo";
char contrasena[20]="adolfo";
char basededatos[20]="parametros";
conn2 = mysql_init(NULL);
conn2=conexionserv(servidor,usuario,contrasena,basededatos);
desconectar(conn2);
return 0;
}
El Software Libre también es negocio, venta de software y servicios, contactenos a través de spinelliadolfo@gmail.com
|
|
| 10-04-2007 03:10 PM |
|
 |
Snoopydog
Usuario PL
Mensajes: 27
Grupo: Registrado
Registro en: Jun 2007
Estado:
Sin Conexión
Reputación: 0
|
RE: Punteros y MYSQL
Hola O´NKN
Te agradezco la atencion, la forma de declarar las funciones de tipo MYSQL me marcan el mismo error de segmentation fault, pero eso ya lo resolvi declarando la funcion conexionserv como int y la funcion desconectar como void ya ke no regresa valor alguno, la funcion conexionserv me marca warning: return makes integer from pointer without a cast, sin embargo ya puedo utilizar la variable para desconectar, es decir ya se desconecta, por tanto eso queda resuelto simplemente declarando la funcion conexionserv como tipo int. pero aun quedan los warning tanto de la compilacion de la libreria como el pase de parametros a las funciones, sabes como podria resolver eso?, no es algo que me gustaria que quede en mi programa.
gracias
|
|
| 10-04-2007 03:36 PM |
|
 |
oneken
Moderador
    
Mensajes: 117
Grupo: Moderadores
Registro en: Jul 2005
Estado:
Sin Conexión
Reputación: 3
|
RE: Punteros y MYSQL
Estimado amigo el codigo que te envie no acusa warnings cuando compilo, sin embargo todabia no puede probarle con una base de datos no bien pueda te envio el resultado.
Saludos O'NKN
El Software Libre también es negocio, venta de software y servicios, contactenos a través de spinelliadolfo@gmail.com
|
|
| 10-04-2007 05:31 PM |
|
 |
Snoopydog
Usuario PL
Mensajes: 27
Grupo: Registrado
Registro en: Jun 2007
Estado:
Sin Conexión
Reputación: 0
|
RE: Punteros y MYSQL
Buenas tardes O´NKN
Bueno he hecho las modificaciones a la libreria y al .c para el objeto, sin embargo al compilar para crera el objeto me marca incopatibilidad de valor en return, lo ke regreso no es compatible con el tipo de funcion, quiero suponer ke es por el compilador o el lenguaje, al parecer tu manejas C++ y yo C, pero no estoy seguro de ello, de cualquier modo no me compila asi como esta en tu ejemplo
|
|
| 10-04-2007 06:48 PM |
|
 |
oneken
Moderador
    
Mensajes: 117
Grupo: Moderadores
Registro en: Jul 2005
Estado:
Sin Conexión
Reputación: 3
|
RE: Punteros y MYSQL
Yo trabajo con C++ y programo a traves de Kdevelop, estuve revisando el codigo he hice algunas modificaciones, ahora lo probé y conecta a mi servidor mysql, también desconecta y no da ningún warning al compilar.
El programa (con las nuevas modificaciones) lo edité en el post anterior para no dejar tanto codigo y confundir.
Los Char los puse como constantes porque no estoy acostumbrado a usarlos como en el original, supongo que no traera problemas hacerlo de otra forma.
Saludos O'NKN
El Software Libre también es negocio, venta de software y servicios, contactenos a través de spinelliadolfo@gmail.com
|
|
| 10-05-2007 08:53 AM |
|
 |
Snoopydog
Usuario PL
Mensajes: 27
Grupo: Registrado
Registro en: Jun 2007
Estado:
Sin Conexión
Reputación: 0
|
RE: Punteros y MYSQL
Hola O'NKN
Aqui con buenas nuevas, se ha resuelto los warning gracias a ti , al parecer no era necesario manejar punteros de parametros en el main, la funcion "conexionserv" si es necesario declararla como MYSQL junto con el .h, ahora todo se compila correctamente sin warnings, solo keda decirte muchisimas gracias y el problema ha sido resuelto
|
|
| 10-05-2007 07:50 PM |
|
 |
oneken
Moderador
    
Mensajes: 117
Grupo: Moderadores
Registro en: Jul 2005
Estado:
Sin Conexión
Reputación: 3
|
RE: Punteros y MYSQL
Que sigas bien !!!!!!!!!!!!
Saludos O'NKN
El Software Libre también es negocio, venta de software y servicios, contactenos a través de spinelliadolfo@gmail.com
|
|
| 10-06-2007 06:54 AM |
|
 |