0

我正在尝试使用字节数据类型将图像保存到 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
        }
    }

}

我已经尝试了一切都没有成功。谢谢您的帮助!

4

0 回答 0