# File sqlite3_feed_cache.rb, line 268
  def save
    num_retries = @@num_retries
    begin
    
      if (@id == nil)
        #new entry
        SQLite3::Database.open(@@db_file).transaction do |db|
          db.prepare(SQL_INSERT_FEED) do |ins_stmt|
            ins_stmt.execute!(
            # @id, 
              @href, @title, @link, @feed_data, 
              @feed_data_type, @http_headers, 
              @last_retrieved.strftime('%Y-%m-%d %H:%M:%S'))
            @id = db.last_insert_row_id
            @new_record = false
          end
        end
      else
        # update existing entry
        SQLite3::Database.open(@@db_file).transaction do |db|
          db.prepare(SQL_UPDATE_FEED) do |upd_stmt|
            upd_stmt.execute!(@href, @title, @link, @feed_data,
              @feed_data_type, @http_headers, 
              @last_retrieved.strftime('%Y-%m-%d %H:%M:%S'),
              @id)
            # this object has ben instanciated from cache, so
            # @new_record never was true.
            #@new_record = false
          end
        end
      end
      
    rescue SQLite3::BusyException
      if ((num_retries -= 1) > 0)
        sleep(@@retry_delay)
        retry
      end
      raise $!
    end
  end