Bonjour à tous,
je développe une petite application Web(JSF) qui a pour but d'insérer une image dans une base de donnée MySql 5.
J'obtiens l'erreur suivante lorsque je tente de compléter mon PreparedStatement avec un setBinaryStream ou même avec un setBlob.
voici le code qui exécute
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 java.lang.AbstractMethodError: org.apache.commons.dbcp.DelegatingPreparedStatement.setBinaryStream(ILjava/io/InputStream;J)V at com.imopromet.core.dao.impl.IImageDaoImpl$1.createPreparedStatement(IImageDaoImpl.java:31) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:585) at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:792) at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:815) at com.imopromet.core.dao.impl.IImageDaoImpl.insert(IImageDaoImpl.java:24) at test.image.TestInsert.testInsertImage(TestInsert.java:34)
Précisions: le bean Image est une classe perso qui contient des ByteArrayInputStream et la taille des images
Quelques infos complémentaires
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public void insert(final Image image,final long idAnnounce) { getJdbcTemplate().update(new PreparedStatementCreator(){ @Override public PreparedStatement createPreparedStatement(Connection con) throws SQLException { PreparedStatement ps = null; try{ ps = con.prepareStatement("insert into images(image,imageThumb,adsID) values(?,?,?)"); ps.setBinaryStream(1, image.getImage(),image.getSizeImage()); ps.setBinaryStream(2, image.getImage(),image.getSizeImage()); ps.setLong(3, idAnnounce); }catch(SQLException se){ se.printStackTrace(); } return ps; } });
JSF
upload de l'image avec apache tomahawk
Netbeans 6.5
configuration de la datasource avec Spring
Petite infos supplémentaire, tout le reste fonctionne. je sais insérer d'autres éléments dans ma base, c'est juste le blob qui marche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSourceFactory" destroy-method="close"> <property name="driverClassName" value="${dataSource.driverClassName}" /> <property name="url" value="${dataSource.url}" /> <property name="username" value="${dataSource.username}" /> <property name="password" value="${dataSource.password}" /> </bean>
Voilà si quelqu'un a une idée d'où cela peut bien provenir.
A+
merci
Partager