Statement si, PreparedStatement no

msi
03 de Enero del 1999
Hola, estoy probando con jdbc y tengo un problema a la hora de insertar datos. Si leo de una tabla no hay problemas pero si intento insertar parece que no funciona aunque no da ningun tipo de error e incluso puedo mostrar en una página el dato que se debería haber insertado.

Se que el fallo está en la utilización del interface PreparedStatement pero no averiguo cual. Para ayudar, aquí os pongo un trozo de código de Statement (consulta):
try{
con = dataSource.getConnection();
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT NOMMACRO FROM MACROCICLOS");

while (rs.next()){
......

En el método de insertar pongo:
try{
con = dataSource.getConnection();
ps = con.prepareStatement("insert into macrociclos values(?)");

ps.setString(1,"Ejemplo");
ps.executeUpdate();
.........

Como curiosidad, no da ningún tipo de error si pongo: ps.setString(9,"Ejemplo"); aunque la tabla sólo tiene una columna.

¿Qué hago mal para insertar si las lecturas funcionan bien?