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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con error en conexión a MySQL remota
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con error en conexión a MySQL remota  (Leído 1,612 veces)
LucasBols

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Ayuda con error en conexión a MySQL remota
« en: 31 Mayo 2012, 21:38 pm »

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;
}
}


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines