Ready to kick yourself? HARD?
*WHERE* is your
rs.MoveNext inside that DO loop?
Without it, your code will response.write the first rs("product") an INFINITE number of times...well, at least until you exceed the buffer size.
An optimist sees the glass as half full.
A pessimist sees the glass as half empty.
A realist drinks it no matter how much there is.