NULL-Werte mit Odbc in Datenbank schreiben



  • Hallo,
    weiß jemand wie man beim ODBC-Interface (die C-Api ist gemeint), NULL-Werte in die Datenbank schreibt?
    Wenn ich z.B. bei SQLBindParameter ein leeres String (Länge=0) übergebe, dann beschwert sich der Treiber über einen ungültigen Parameter.
    Wie kann ich also NULL-Werte per SQLBindParameter in die Datenbank schreiben?
    Danke schon mal.



  • In dem du explizit NULL schreibst. Ein Leerstring ist nicht unbedingt NULL.



  • Hab folgenden Bind-Aufruf:

    ret = ::SQLBindParameter(hstm, pid, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR,
            0, 0, NULL, 0, 0);
    

    Das ganze schlägt aber immernoch fehl. Gibt es da noch irgendwas zu beachten?



  • Bei mir funktioniert es so:

    SQLINTEGER* ptr = (SQLINTEGER*)m_params[idx];
       *ptr = SQL_NULL_DATA;
       int rc = SQLBindParameter(m_hstmt, parmPos, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, (SQLPOINTER)0, 0, ptr);
    

    man beachte den letzten Parameter, der zeigt auf SQL_NULL_DATA


Anmelden zum Antworten