What about setting a breakpoint at
SqlCommand insert = new SqlCommand(sql, conn);
and try to execute the sql statement in sql management studio?
It will hopefully tell you something about what's going wrong ...
Hiren is also on to something - you probably want check that the element type has a ToString() override returning the required text, or cast to the element type and access the correct property directly.
Regards
Espen Harlinn