我正在尝试使用字节数据类型将图像保存到 PostgreSQL。我正在使用 JSP 根据文档转换图像-> 字节。Java中的所有语法都是正确的,但是当我执行时
ps.executeUpdate();
PostgreSQL 回归
syntax error at or near "\" at character 823
在 org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:94) 在 org.postgresql.Connection.ExecSQL(Connection.java:398) 在 org.postgresql.jdbc2.Statement.execute(Statement.java:130) 在在 org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement. java:105) 在 org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105) 在 obj.util.Imagen.addImage(Imagen.java:86) 在 obj.util.FileUploadHandler.doPost(FileUploadHandler .java:44) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:第 722 章.invoke(StandardWrapperValve.java:224) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 在 org. apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve. java:927) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache。catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java: 579) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor $Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:745)579) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor $Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:745)579) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor $Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:745)
我的代码是:
File img = new File(UPLOAD_DIRECTORY + File.separator + name);
byte [] byteImage = ImageToByte(img);
//Conexion
java.sql.Connection conDot11q = null;
Conectar c = new Conectar();
conDot11q = c.conDot11qPostgres();
addImage(byteImage, conDot11q);
和方法:
public static byte [] ImageToByte(File file) throws FileNotFoundException{
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
try {
for (int readNum; (readNum = fis.read(buf)) != -1;) {
bos.write(buf, 0, readNum);
// System.out.println("read " + readNum + " bytes,");
}
} catch (IOException ex) {
}
byte[] bytes = bos.toByteArray();
return bytes;
}
public void addImage(byte[] img, Connection conn) {
try {
PreparedStatement ps = null;
ps = conn.prepareStatement("INSERT INTO IMAGENES (IMAGEN, DESCRIPCION) VALUES (?, ?)");
ps.setBytes(1, img);
ps.setString(2, "Test");
ps.executeUpdate();
ps.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
conn.close();
} catch (Exception e) {
// TODO: handle exception
}
}
}
我已经尝试了一切都没有成功。谢谢您的帮助!