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