Insérer une structure C dans SQL Server

Signaler
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
-
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
-
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

Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
20
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...