Insérer une structure C dans SQL Server

LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 - 26 avril 2013 à 14:48
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 - 26 avril 2013 à 21:29
Bonjour,

voilà est il possible de stocker et de lire par la suite une structure du type

struct maStruct
{
int a;
int b;
float c;
char d[50];
}

dans un champ d'une table sous SQl server ?
sans avoir à créer une table qui "match" directement ma structure (champ à champ)

merci d'avance.

 

1 réponse

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
26 avril 2013 à 21:29
Salut,

c'est possible avec du code clr (.net) en créant un assembly qui implémente le type. Il faut ensuite importer l'assembly dans SqlServer puis creer l'alias du type.

/*Dans c++ cli, projet de dll => maStructAsm.dll*/
public ref class maStruct /*ou au choix => value struct maStruct*/ 
{
__int32  a; 
__int32  b; 
float c; 
char d[50]; 
};

/*Dans sqlServer*/
CREATE ASSEMBLY maStructAsm
FROM '\\MyComputer\MesAssemblies\maStructAsm.dll' ;
GO
CREATE TYPE maStruct
EXTERNAL NAME maStructAsm.maStruct;
GO


Plus simplement,
tu pourrais aussi stocker la structure dans un champ varchar en concaténant les 4 valeurs au format texte délimité.
Et utiliser 2 fonctions simples pour stocker et récupérer

maStruct& ToMaStruct(string s); //reconstruit un objet maStruct
string FromMaStruct(const MyStruct& ms); //Transforme en string délimité

bye...
0
Rejoignez-nous