Bonjour je vais essayer d'être le plus clair pour faciliter la résolution de mon problème et le moins possible embêter les gens d'ici (en essayant d'aider d'autre pendant ce temps la mais j'en doute)



Ce que je veux faire :
Insérer un vecteur d'entier (plutot gros environ 60 000 valeurs)dans un blob dans une base de donnée mysql.

Pourquoi :
Je dois garder une suite d'identifiant dont l'ordre est significatif (et carrément essentiel a mon projet) qui n'ont de sens que tous ensemble. La rapidités d'exécution étant essentielle il est apparu que limité le nombre des requêtes devrait être plus efficace (plus de requêtes avec très peu donnée semble être moins efficace que peu de requête avec un flux plus conséquent a chaque fois). Dans le projet par la suite on recuperera systematiquement tout les identifiants ensemble. Les prendre individuellement n'a aucun sens.

Mon problème :
La librairie mysqlpp ne semblent pas du tout conçus pour ca et lui passer un vecteur ou meme un array me donne une bonne page d'erreur a la compilation(j'ai compris j'ai pas le droit de faire ca).
A part en passant l'ensemble de mes valeurs dans une chaine de caractère. Ce qui est assez clairement 1 Très moche 2 pas optimiser pour deux sous 3 Assez bancal
Pour l'instant tout mes essais dans ce but se sont reveler infructeux

J'utilise :
Gcc 4.1.2
La librairie mysqlpp 3.0.9 (d'ailleurs j'avoue avoir du mal a l'installer cette pu**)

Je précise :
- Je ne suis pas sur du tout d'avoir la solution idéale, et mon patron même si il m'a proposé cette version est tout a fait prêt a me laisser faire autrement si c'est argumenté et que ma version est efficace.
- Que je suis un sale bio-informaticien donc avec une formation technique un peu légère (et que j'avoue pas aimer du tout le bas niveau avec pointeur,malloc et cie ... D'ailleur a ce niveau je pense faire bien plus du C++ que du c)
- Que la solution du "une colonne avec chaque identifiant" me semble d'autant plus pas pratique que au final ma base de donnée doit contenir plus de 70 000 de ce genres de blob et donc risque de faire la tronche si je fait une ligne pour chaque valeur. (non ?) et avoir surtout pas grand sens c'est la serie qui a un interet ensemble.
- Le but final étant de faire un outil de comparaison des donnée issue de micro-array sur geo mais la si vous n'avez pas de background en biologie vous n'allez pas comprendre grand chose (et c'est plus pour l'anecdote)

Voila je met un exemple minimal du code qui fait joyeusement hurler mon compilateur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <mysql++/mysql++.h>
#include <vector>
#include <iostream>
 
using namespace std;
 
int
main(int argc, char *argv[])
{
int id_ech=223;
int id_gpl=245;
int num_zero=278;
 
// information sur la connexion :
const char* db = "test", *server = 0, *user = "koemgun", *pass = "";
int entier[] = {1,54,87,32,151,654,24,3,54387,1873}; // on crée un array contenant des valeurs bidons
std::vector<int> v (entier,entier+sizeof(entier)/sizeof(int)); // que l'on met dans le vecteur v
mysqlpp::Connection conn(db, server, user, pass); // on se connecte
mysqlpp::Query query = conn.query();  // on cree la requete
query << "INSERT INTO echantillon values ("<<id_ech<<","<<id_gpl<<","<<num_zero<<"," << v << ")"; // je met dans ma requete ce que je veux
cout << "Query: " << query << endl; // j'affiche mon biniou avant l'execution
query.execute(); // paf une balle dans la nuque
}
Voila en espérant être clair.
D'avance merci.

Koemgun qui s'en va de se pas voir si il peut aider d'autres âmes égarés sur ce forum.