Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Variablenwerte mittels sql in Datenbank schreiben???

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.04.2003, 10:44 Uhr
~spunky2
Gast


Hallo

Hab ein neues Problem, ich will mit sql-Befehlen Daten in meine Datenbank schreiben. Er schreibt aber nur absolute Werte hinein (also solche die ich in Hochkommas deklariere).

Sql = "INSERT INTO Beispiel2 (feld1, feld2,feld3) VALUES ('test', 'test1','test2')";
database.ExecuteSQL(Sql);

Ich möchte aber CStrings reinschreiben, die ich außerhalb der sql-anweisung deklariert habe und die Werte besitzen.
Also z.B.
CString string="hallo";
CString string1="hallo1";
CString string2="hallo2";

Sql = "INSERT INTO Beispiel2 (feld1, feld2,feld3) VALUES (string,string1,string2)";
database.ExecuteSQL(Sql);

So funktioniert die sql-anweisung aber nicht?????
Wie müsste ich die sql-anweisung umschreiben???

Grüsse
spunky2
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.04.2003, 11:27 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Hi,
angenommen du hast den CString str.

Dann bekommst du mit


C++:
str.GetBuffer(str.GetLength());


ein char- array

das ganze kannst du dann mittels sprintf zusammenpacken.
funktioniert wunderbar
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.04.2003, 11:28 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hallo,
probier mal


C++:
CString string="hallo";
CString string1="hallo1";
CString string2="hallo2";
CString Sql;

Sql.Format(""INSERT INTO Beispiel2 (feld1, feld2,feld3) VALUES (%s,%s,%s)", string, string1, string2);
database.ExecuteSQL(Sql);


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.04.2003, 11:49 Uhr
~spunky2
Gast


Danke für die Antworten

Ich probier es aus.

Grüsse
spunky2
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: