Integer in BDB schreiben ...



  • ... geht nicht:

    typedef unsigned short int ush;
    bool daten::put_int(string &name, ush &wert)
    {
    	Dbt key,data;
    	memset(&data,0,sizeof(data));
    	memset(&key,0,sizeof(key));
    	key.set_data(&name);
    	key.set_ulen((u_int32_t) name.size());
    	data.set_data(&wert);
    	data.set_ulen((u_int32_t) sizeof(ush));
    
    	int ret = main->getDb().put(NULL, &key, &data,DB_NOOVERWRITE);
            ...
    }
    

    folgendes (seltsames) Verhalten:
    1. Ein Wert lässt sich schreiben, jeder weitere Versuch (auch mit völlig anderen Namen/Werten) erzeugt ein DB_KEYEXISTS, auch nach Neustart des Programms
    2. Eine Abfrage

    ush temp = (ush)data.get_data();
    

    liefert Sinnlose Werte
    3. Die Größe der Datenbankdatei ändert sich auch nicht, ob ich etwas hineinschreibe oder nicht

    Zum öffnen/schließen der DB nutze ich die mitgelieferten Beispiele

    Ich hoffe es kann jemand helfen 😞
    Vielen Dank
    ein genervter Karl-R.


Anmelden zum Antworten