Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-05-2012
LucasBols LucasBols is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 10
Poder: 0
LucasBols Va por buen camino
Ayuda con error en conexión a MySQL remota

Hola,
Tengo una aplicación desarrollada en C++Builder XE y uso la libmysql.dll

Cuando inserto una imagen en un campo BLOB en la base de datos local (en la misma máquina que la aplicación) la inserción se realiza correctamente, pero cuando inserto en una base de datos remota (dentro de la LAN) mysql_stmt_execute me genera este error:

"Argumentos errados para mysql_stmt_execute"

¿Qué estoy haciendo mal?

Muchas gracias por cualquier ayuda,

Este es el código del procedimiento para insertar BLOBs

Código:
bool TBaseDeDatos::AlmacenarBLOB(AnsiString cons, const char *param, unsigned long lngParam)
{
	lcl_MySQL_Error = ""; lcl_NumFilas = 0; lcl_CodError = 0;
	mysql=mysql_init(NULL);
	my_bool reconnect = 1;


	if(!mysql)
	{
		lcl_MySQL_Error = "No se pudo inicializar la base de datos: " + (AnsiString) mysql_error(mysql);
		RegError = "** " + lcl_MySQL_Error + " // " + AnsiString(__FILE__) + " // " + AnsiString(__FUNC__) + " Ln: " + IntToStr(__LINE__) + "\n";
		return false;
	}
	else
	{
		mysql_options(mysql,MYSQL_OPT_COMPRESS,0);
		mysql_options(mysql, MYSQL_OPT_RECONNECT, &reconnect);
		mysql->reconnect = 1;
		if(!mysql_real_connect(mysql, prihost.c_str(), priusr.c_str(), pripass.c_str(), prinombd.c_str(), PuertoMYSQL, NULL, 0))
		{
			lcl_MySQL_Error = "No se pudo conectar a la base de datos: " + (AnsiString) mysql_error(mysql);
			RegError = "** " + lcl_MySQL_Error + " // " + AnsiString(__FILE__) + " // " + AnsiString(__FUNC__) + " Ln: " + IntToStr(__LINE__) + "\n";
			return false;
		}
		else
		{
			if(mysql_select_db(mysql, prinombd.c_str())) {
				lcl_MySQL_Error = "No se pudo abrir la base de datos: " + (AnsiString) mysql_error(mysql);
				RegError = "** " + lcl_MySQL_Error + " // " + AnsiString(__FILE__) + " // " + AnsiString(__FUNC__) + " Ln: " + IntToStr(__LINE__) + "\n";
				return false;
			}
			else
			{
				mysql_autocommit(mysql, TRUE);
				MYSQL_BIND		bind[1];
				MYSQL_STMT		*stmt = mysql_stmt_init(mysql);


				if(!stmt)
				{
					lcl_MySQL_Error = "No hay memoria suficiente: " + (AnsiString) mysql_error(mysql);
					RegError = "** " + lcl_MySQL_Error + " // " + AnsiString(__FILE__) + " // " + AnsiString(__FUNC__) + " Ln: " + IntToStr(__LINE__) + "\n";
					return false;
				}


				if(mysql_stmt_prepare(stmt, cons.c_str(), StrLen(cons.c_str())))
				{
					lcl_MySQL_Error = "No se pudo preparar la consulta: " + AnsiString(mysql_stmt_error(stmt));
					RegError = "** " + lcl_MySQL_Error + " // " + AnsiString(__FILE__) + " // " + AnsiString(__FUNC__) + " Ln: " + IntToStr(__LINE__) + "\n";
					return false;
				}


				memset(bind, 0, sizeof(bind));
				bind[0].buffer_type	= MYSQL_TYPE_BLOB;
				bind[0].buffer 		= (void*)param;
				bind[0].length		= &lngParam;
				bind[0].is_null		= 0;


				/* Bind the buffers */
				if(mysql_stmt_bind_param(stmt, bind))
				{
					lcl_MySQL_Error = "No se pudo enlazar el parámetro: " + AnsiString(mysql_stmt_error(stmt));
					RegError = "** " + lcl_MySQL_Error + " // " + AnsiString(__FILE__) + " // " + AnsiString(__FUNC__) + " Ln: " + IntToStr(__LINE__) + "\n";
					return false;
				}


				/* Supply the next piece of data */
				if (mysql_stmt_send_long_data(stmt, 0, (const char *)param, lngParam))
				{
					lcl_MySQL_Error = "No se pudo insertar el parámetro: " + AnsiString(mysql_stmt_error(stmt));
					RegError = "** " + lcl_MySQL_Error + " // " + AnsiString(__FILE__) + " // " + AnsiString(__FUNC__) + " Ln: " + IntToStr(__LINE__) + "\n";
					return false;
				}


				//###########################//
				//##                       ##//
				//##   ACA ESTA EL ERROR   ##//
				//##                       ##//
				//###########################//
				/* Now, execute the query */
				if (mysql_stmt_execute(stmt))
				{
					lcl_MySQL_Error = "No se pudo ejecutar la consulta : " + AnsiString(mysql_stmt_error(stmt));
					RegError = "** " + lcl_MySQL_Error + " // " + AnsiString(__FILE__) + " // " + AnsiString(__FUNC__) + " Ln: " + IntToStr(__LINE__) + "\n";
					return false;
				}
				ultimoID = mysql_insert_id(mysql);
				mysql_stmt_close(stmt);
			}
		}
		return true;
	}
}


Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Conexión remota con Mysql voldemmor Conexión con bases de datos 14 23-11-2009 16:36:51
Conexion remota con MySQL golf2008 MySQL 12 21-01-2009 10:49:41
Conexion remota a mysql richy08 Conexión con bases de datos 3 07-01-2009 19:54:29
Conexion Remota a MySql lKinGl Conexión con bases de datos 2 24-11-2008 15:23:00
Conexion remota a mysql cahosoft MySQL 1 11-10-2004 10:37:41


La franja horaria es GMT +2. Ahora son las 06:55:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi