003
23.04.2003, 11:41 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft... (Operator)
|
Hi hab mal tiefer in meinen alten codes geschaut. Diese Funktion habe ich mal verwendet um in eine sql-datenbank zu schreiben, habe allerdings nicht alle fehler abgefangen aber für meine zwecke hats gereicht.
Die Funktion hat ne variable Parameteranzahl.
Aufruf z.B. mit: insertquery("messtabelle",3,2,7,"Now()",3.6 );
C++: |
bool insertquery(char* table, ...){
va_list val; char sql[400]; char *str; int i,int_number,anzahl; double double_number;
MYSQL_RES *result; MYSQL_FIELD *field;
sprintf(sql,"SELECT * FROM %s WHERE 0=1",table);
if( mysql_query(connection, sql) ) return false; if( !(result=mysql_store_result(connection)) ) return false; if( !(anzahl=mysql_num_fields(result)) ) {mysql_free_result(result); return false;} sprintf(sql,"INSERT INTO %s VALUES (",table); va_start(val,table); for(i=0;i<anzahl;i++){ field=mysql_fetch_field_direct(result, i); if(IS_NUM(field->type) && (field->type!=FIELD_TYPE_TIMESTAMP) ){ if( (field->type==FIELD_TYPE_DECIMAL) || (field->type==FIELD_TYPE_FLOAT) || (field->type==FIELD_TYPE_DOUBLE) ){
double_number=va_arg(val, double); sprintf(sql,"%s %f",sql,double_number); }else{ int_number=va_arg(val, int); sprintf(sql,"%s %d",sql,int_number); }
}else{ //keine Nummer
str=va_arg(val, char*); if(str=="Now()"){
sprintf(sql,"%s %s",sql,str); }else{
sprintf(sql,"%s '%s'",sql,str); } } if(i<anzahl-1)sprintf(sql,"%s,",sql); } sprintf(sql,"%s )",sql); //printf("%s\n",sql);
va_end(val);
mysql_free_result(result); if(mysql_query(connection, sql))return false; return true;
}
|
ach so fast vergessen connection ist ein "MYSQL"-pointer -- ...fleißig wie zwei Weißbrote Dieser Post wurde am 23.04.2003 um 11:43 Uhr von Heiko editiert. |