No operations allowed after connection closed MYSQL
Grundsätzlich habe ich:
String query = "SELECT * FROM table WHERE UNIQUEID=? AND DIR IS NOT NULL AND NAME IS NOT NULL AND PAGETYPE IS NOT NULL";
DBConnect Database = new DBConnect();
Connection con = null;
PreparedStatement ps = null;
ResultSet rs=null;
try {
con = Database.getcon();
ps = con.prepareStatement(query);
ps.setString(1, URI);
rs=ps.executeQuery();
if(rs.next()){
}
} finally {
if(ps != null)
ps.close();
if(rs != null)
rs.close();
if(con != null)
con.close();
}
query = "SELECT COUNTCOMMENTS FROM videosinfos WHERE UNIQUEID=?";
try {
con = Database.getcon();
ps = con.prepareStatement(query); //Getting error here
rs=ps.executeQuery();
ps.setString(1, URI);
rs=ps.executeQuery();
if(rs.next()){
comments = rs.getInt(1);
}
} finally {
if(ps != null)
ps.close();
if(rs != null)
rs.close();
if(con != null)
con.close();
}
Hinweis: Die Zeile bekomme ich den Fehler, einen Kommentar abzugeben.
Zur Datenbank verbinden:
public DBConnect(){
try{
Class.forName("com.mysql.jdbc.Driver");
String unicode="useSSL=false&autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8";
con = DriverManager.getConnection("jdbc:mysql://localhost:15501/duckdb?"+unicode, "root", "_PWD");
st = con.createStatement();
}catch(Exception ex){
System.out.println(ex.getMessage());
System.out.println("couldn't connect!");
}
}
public Connection getcon(){
DBConnect condb = new DBConnect();
Connection connect = con;
return con;
}
Aber in der Zusammenstellung bekomme ich diesen Fehler:
com.mysql.jdbc.Ausnahmen.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
bei der sun.reflektieren.GeneratedConstructorAccessor18.newInstance(Unknown Source)
bei der sun.reflektieren.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
bei java.lang.reflektieren.Konstruktor.newInstance(Constructor.java:423)
bei com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
bei com.mysql.jdbc.Util.getInstance(Util.java:387)
bei com.mysql.jdbc.SQLError.createSQLException(SQLError.java:917)
bei com.mysql.jdbc.SQLError.createSQLException(SQLError.java:896)
bei com.mysql.jdbc.SQLError.createSQLException(SQLError.java:885)
bei com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
bei com.mysql.jdbc.ConnectionImpl.throwConnectionClosedException(ConnectionImpl.java:1246)
bei com.mysql.jdbc.ConnectionImpl.checkClosed(ConnectionImpl.java:1241)
bei com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4102)
bei com.mysql.jdbc.ConnectionImpl.prepareStatement(ConnectionImpl.java:4071)
bei Ente.reg.pack.DBConnect.getitemfull_details(DBConnect.java:686)
bei Ente.reg.pack.index.doPost(index.java:73)
bei javax.- servlet.http.HttpServlet.service(HttpServlet.java:661)
bei javax.- servlet.http.HttpServlet.service(HttpServlet.java:742)
bei org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
bei org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
bei org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
bei org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
bei org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
bei org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
bei org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
bei org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
bei org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
bei org.apache.catalina.Ventile.ErrorReportValve.invoke(ErrorReportValve.java:80)
bei org.apache.catalina.Ventile.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
bei org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
bei org.apache.catalina.- Anschluss.CoyoteAdapter.service(CoyoteAdapter.java:342)
bei org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799)
bei org.apache.coyote.AbstractProcessorLight.Prozess(AbstractProcessorLight.java:66)
bei org.apache.coyote.AbstractProtocol$ConnectionHandler.Prozess(AbstractProtocol.java:868)
bei org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
bei org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
bei java.util.gleichzeitige.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
bei java.util.gleichzeitige.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
bei org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
bei java.lang.Thread.run(Thread.java:748)
Ich bin Mit Debian mit MariaDB v10.x/Mysql
InformationsquelleAutor Whatever | 2017-07-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es aus zwei Gründen:
PreparedStatement
getcon
verwendet eineinstance
variable stattlocal
variable. Aus diesem Grund sind die gleichenconn
variable (die, die geschlossen wurde früher) wird zurückgegeben, wenngetcon
heißt, die nächste Zeit.Um dies zu beheben,
getcon
undDBConnect
geändert werden müssen, zu deklarieren einer lokalenconn
variable und gibt es zurück (in der Tat, Sie brauchen nichtDBConnect
bei allen), z.B.:PreparedStatement
. Dies sollte nur geschehen, nachdem die close () - oder Fehler-Zustand: docs.oracle.com/javase/7/docs/api/java/sql/Connection.htmlInformationsquelleAutor Darshan Mehta
Einen guten Ansatz, ist die Verwendung eines try - finally-block wie diesem
InformationsquelleAutor Daniel C.