code: protected void internalUpdateUserInfo(CmsDbContext dbc, CmsUUID userId, String key, Object value)
      throws CmsDataAccessException {
  
          PreparedStatement stmt = null;
          Connection conn = null;
  
          try {
              conn = getSqlManager().getConnection(dbc);
              stmt = m_sqlManager.getPreparedStatement(conn, "C_USERDATA_UPDATE_4");
              // write data to database
              m_sqlManager.setBytes(stmt, 1, CmsDataTypeUtil.dataSerialize(value));
              stmt.setString(2, value.getClass().getName());
              stmt.setString(3, userId.toString());
              stmt.setString(4, key);
              stmt.executeUpdate();
          } catch (SQLException e) {
              throw new CmsDbSqlException(
                  Messages.get().container(Messages.ERR_GENERIC_SQL_1, CmsDbSqlException.getErrorQuery(stmt)),
                  e);
          } catch (IOException e) {
              throw new CmsDbIoException(Messages.get().container(Messages.ERR_SERIALIZING_USER_DATA_1, userId), e);
          } finally {
              m_sqlManager.closeAll(dbc, conn, stmt, null);
          }
      }
docs: Updates additional user info.<p>
  @param dbc the current dbc
  @param userId the user id to add the user info for
  @param key the name of the additional user info
  @param value the value of the additional user info
  @throws CmsDataAccessException if something goes wrong