NMD
|
Go to the source code of this file.
Functions | |
NMDErrorCode | NMDObjectDumpToMySQL (NMD_metadata obj) |
Generate an mysql dump of an object
Definition at line 11 of file nmdmysql.c.
References NMD_metadata_::cats, CHECKHASNMDCOOKIE, NMD_metadata_category_::cmps, NMD_metadata_item_::i, NMD_metadata_item_::name, NMD_metadata_category_::name, NMD_metadata_::ncat, NMD_metadata_category_::ncmp, NMDInt, NMDReal, NMDStringAppend(), NMDStringConcat(), NMDStringCreate(), NMDStringDestroy(), NMDStringGetString(), NMD_metadata_item_::r, and NMD_metadata_item_::t.
{ NMD_string namesstring,valuesstring; int icat,icmp; NMDErrorCode ierr; CHECKHASNMDCOOKIE(obj); ierr = NMDStringCreate("",&namesstring); NMD_ERR_RETURN(ierr); ierr = NMDStringCreate("",&valuesstring); NMD_ERR_RETURN(ierr); for (icat=0; icat<obj->ncat; icat++) { NMD_metadata_category cat = obj->cats[icat]; NMD_string catstring; CHECKHASNMDCOOKIE(cat); ierr = NMDStringCreate(cat->name,&catstring); NMD_ERR_RETURN(ierr); for (icmp=0; icmp<cat->ncmp; icmp++) { char cmpvalue[45]; NMD_metadata_item cmp = cat->cmps[icmp]; CHECKHASNMDCOOKIE(cmp); memset(cmpvalue,0,45); switch (cmp->t) { case NMDInt : sprintf(cmpvalue,"%d",cmp->i); break; case NMDReal : sprintf(cmpvalue,"%e",cmp->r); break; default : continue; } if (cmpvalue[0]) { NMD_string cmpstring,cmpcatstring; /* name */ ierr = NMDStringCreate(cmp->name,&cmpstring); NMD_ERR_RETURN(ierr); ierr = NMDStringConcat (0,catstring,':',cmpstring,0,&cmpcatstring); NMD_ERR_RETURN(ierr); ierr = NMDStringAppend (0,&namesstring,0,cmpcatstring,','); NMD_ERR_RETURN(ierr); ierr = NMDStringDestroy(cmpstring); NMD_ERR_RETURN(ierr); ierr = NMDStringDestroy(cmpcatstring); NMD_ERR_RETURN(ierr); /* value */ ierr = NMDStringCreate(cmpvalue,&cmpcatstring); NMD_ERR_RETURN(ierr); ierr = NMDStringAppend (0,&valuesstring,0,cmpcatstring,','); NMD_ERR_RETURN(ierr); ierr = NMDStringDestroy(cmpcatstring); NMD_ERR_RETURN(ierr); } } ierr = NMDStringDestroy(catstring); NMD_ERR_RETURN(ierr); } { const char *c; ierr = NMDStringGetString(namesstring,&c); NMD_ERR_RETURN(ierr); printf("INSERT INTO yourtable (%s)\n",c); ierr = NMDStringGetString(valuesstring,&c); NMD_ERR_RETURN(ierr); printf("VALUES (%s);\n",c); } return 0; }