Trying to connect to the Sqlite database using JDBC.
public class HelloServlet extends HttpServlet { public static Connection conn; public static Statement stat; public static ResultSet rs; public static void Conn() throws ClassNotFoundException, SQLException, NamingException { Class.forName("org.sqlite.JDBC"); conn = DriverManager.getConnection("jdbc:sqlite:C:\\Images.db"); stat = conn.createStatement(); } public static void addPicture(String arrayPicture) throws SQLException, ClassNotFoundException { try { Conn(); String[] ss = arrayPicture.split(","); stat.execute("INSERT INTO 'ImagesItems'('ImageName','PointsArray') VALUES('" + ss[ss.length] + "','" + arrayPicture + "'"); } catch (Exception e) { System.out.println(e); } finally { CloseDB(); } } public static String getPicture(int id) throws SQLException, NamingException, ClassNotFoundException { Conn(); rs = stat.executeQuery("SELECT 'PointsArray' FROM 'ImagesItems' WHERE '_id' = " + id); String rss = rs.toString(); CloseDB(); return rss; } public static void CloseDB() throws ClassNotFoundException, SQLException { conn.close(); stat.close(); // Указывает на эту строку rs.close(); } @Override public void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException { // httpServletResponse.getWriter().print("Hello from servlet"); } @Override public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { String ss = ""; if ("POST".equalsIgnoreCase(req.getMethod())) { Scanner s = null; try { s = new Scanner(req.getInputStream(), "UTF-8"); while(s.hasNext()) { ss += s.nextLine(); } } catch (IOException e) { e.printStackTrace(); } } if(ss.startsWith("1")) { try { addPicture(ss); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } else if(ss.startsWith("2")) { try { String response = getPicture(1); res.setStatus(HttpServletResponse.SC_OK); res.getOutputStream().write(response.getBytes()); res.getOutputStream().flush(); res.getOutputStream().close(); } catch (SQLException e) { e.printStackTrace(); } catch (NamingException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } } }
An exception is thrown.
org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (Connection is closed) at org.sqlite.core.DB.newSQLException(DB.java:909) at org.sqlite.core.CoreStatement.internalClose(CoreStatement.java:115) at org.sqlite.jdbc3.JDBC3Statement.close(JDBC3Statement.java:35) at org.sqlite.jdbc4.JDBC4Statement.close(JDBC4Statement.java:27) at org.mycompany.myname.HelloServlet.CloseDB(HelloServlet.java:49) at org.mycompany.myname.HelloServlet.getPicture(HelloServlet.java:43) at org.mycompany.myname.HelloServlet.doPost(HelloServlet.java:84) at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Points to this line in the CloseDB method
stat.close(); What could be the problem?