El primer método es el correcto y la forma más habitual. Lo único que veo es que separas los nombres de parámetros de los dos puntos en el sql. Quizás Zeos no tenga en cuenta ese pequeño detalle, no sé.
Por lo demás debe funcionar:
Código SQL
[-]VALUES(:Clave,: producto,: precioU,: Cantidad,: precio
Debería ser:
Código SQL
[-]VALUES(:Clave, :producto, :precioU, :Cantidad, ..
Saludos