Ich versuche, mehrere Aufrufe an die Datenbank auszuführen, die erste (die Auswahl) funktioniert gut .. aber wenn ich in die zweite gehe bekomme ich diesen FehlerProgramm besagt, dass ich Operationen nach Abschluss der Transaktion nicht ausführen kann
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after statement closed.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.StatementImpl.checkClosed(StatementImpl.java:380)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1250)
at MysqlConnect.main(MysqlConnect.java:77)
at __SHELL13.run(__SHELL13.java:6)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at bluej.runtime.ExecServer$3.run(ExecServer.java:724)
Und hier ist mein Code (bitte noch entschuldigen Lernen) würde
import java.sql.*;
public class MysqlConnect{
public static void main(String[] args) {
Connection conn = null;
String url = "jdbc:mysql://localhost:3306/";
String dbName = "MyBussiness";
String driver = "com.mysql.jdbc.Driver";
String userName = "mambo";
String password = "jambo";
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url+dbName,userName,password);
System.out.println("Connected to the database");
/*SELECTING DATA */
// Get a statement from the connection
Statement stmt = conn.createStatement() ;
System.out.println("--------------------------------------------.");
System.out.println("Retrieving items from the customers table (USING SELECT)...");
System.out.println("--------------------------------------------.");
Thread.sleep(2000);
// Execute the query
ResultSet rs = stmt.executeQuery("SELECT * FROM customers") ;
// Loop through the result set
while(rs.next())
{
System.out.print(rs.getInt(1)) ;
System.out.print(", ");
System.out.print(rs.getString(2));
System.out.print(", ");
System.out.print(rs.getString(3));
System.out.print(", ");
System.out.print(rs.getString(4));
System.out.print(", ");
System.out.print(rs.getString(5));
System.out.print(", ");
System.out.print(rs.getString(6));
System.out.print(", ");
System.out.print(rs.getString(7));
System.out.print(", ");
System.out.print(rs.getString(8));
System.out.print(", ");
System.out.print(rs.getString(9));
System.out.print(", ");
System.out.println(rs.getString(10));
}
// Close the result set, statement and the connection
rs.close() ;
stmt.close() ;
/*UPDATING DATA */
// Get a statement from the connection
conn = DriverManager.getConnection(url+dbName,userName,password);
Statement stmt2 = conn.createStatement() ;
System.out.println("---------------------------------------------------------------------------.");
System.out.println("Updating Customers Table for Customer ID 1 Federico Gutierrez Address1 Field (USING UPDATE)...");
System.out.println("---------------------------------------------------------------------------.");
Thread.sleep(2000);
// Execute the query
ResultSet rs2 = stmt.executeQuery("UPDATE Customers SET Address1='999 Mambo Avenue' WHERE CustomerID = 1");
// Loop through the result set
while(rs2.next())
{
System.out.print(rs2.getInt(1)) ;
System.out.print(", ");
System.out.print(rs2.getString(2));
System.out.print(", ");
System.out.print(rs2.getString(3));
System.out.print(", ");
System.out.print(rs2.getString(4));
System.out.print(", ");
System.out.print(rs2.getString(5));
System.out.print(", ");
System.out.print(rs2.getString(6));
System.out.print(", ");
System.out.print(rs2.getString(7));
System.out.print(", ");
System.out.print(rs2.getString(8));
System.out.print(", ");
System.out.print(rs2.getString(9));
System.out.print(", ");
System.out.println(rs2.getString(10));
}
// Close the result set, statement and the connection
rs2.close() ;
stmt2.close() ;
/*INSERTING DATA */
// Get a statement from the connection
conn = DriverManager.getConnection(url+dbName,userName,password);
Statement stmt3 = conn.createStatement() ;
System.out.println("---------------------------------------------------------------------------.");
System.out.println("Inserting a new customer (Mario Villalobos) into the customers table ... (USING INSERT)");
System.out.println("---------------------------------------------------------------------------.");
Thread.sleep(2000);
// Execute the query
ResultSet rs3 = stmt.executeQuery("INSERT INTO Customers (SSN, FirstName, LastName, Address1, Address2, State, City, Zip, PhoneNumber)"+
" VALUES ('444559999','Mario','Villalobos','777 Boynton Beach','Apt 4R','FL','Boynton Beach','33436','(555)444-5555'");
// Loop through the result set
while(rs3.next())
{
System.out.print(rs3.getInt(1)) ;
System.out.print(", ");
System.out.print(rs3.getString(2));
System.out.print(", ");
System.out.print(rs3.getString(3));
System.out.print(", ");
System.out.print(rs3.getString(4));
System.out.print(", ");
System.out.print(rs3.getString(5));
System.out.print(", ");
System.out.print(rs3.getString(6));
System.out.print(", ");
System.out.print(rs3.getString(7));
System.out.print(", ");
System.out.print(rs3.getString(8));
System.out.print(", ");
System.out.print(rs3.getString(9));
System.out.print(", ");
System.out.println(rs3.getString(10));
}
// Close the result set, statement and the connection
rs3.close() ;
stmt3.close() ;
/*DELETING DATA */
// Get a statement from the connection
conn = DriverManager.getConnection(url+dbName,userName,password);
Statement stmt4 = conn.createStatement() ;
System.out.println("---------------------------------------------------------------------------.");
System.out.println("Deleting customer where the name is George... (USING Delete)");
System.out.println("---------------------------------------------------------------------------.");
Thread.sleep(2000);
// Execute the query
ResultSet rs4 = stmt.executeQuery("DELETE FROM Customers WHERE FirstName Like '%George%'");
// Loop through the result set
while(rs4.next())
{
System.out.print(rs4.getInt(1)) ;
System.out.print(", ");
System.out.print(rs4.getString(2));
System.out.print(", ");
System.out.print(rs4.getString(3));
System.out.print(", ");
System.out.print(rs4.getString(4));
System.out.print(", ");
System.out.print(rs4.getString(5));
System.out.print(", ");
System.out.print(rs4.getString(6));
System.out.print(", ");
System.out.print(rs4.getString(7));
System.out.print(", ");
System.out.print(rs4.getString(8));
System.out.print(", ");
System.out.print(rs4.getString(9));
System.out.print(", ");
System.out.println(rs4.getString(10));
}
// Close the result set, statement and the connection
rs4.close() ;
stmt4.close() ;
//Reseting data
conn = DriverManager.getConnection(url+dbName,userName,password);
Statement stmt5 = conn.createStatement() ;
ResultSet rs5 = stmt.executeQuery("UPDATE Customers SET Address1='555 YY Ave' WHERE CustomerID = 1");
rs5.close() ;
stmt5.close() ;
conn = DriverManager.getConnection(url+dbName,userName,password);
Statement stmt6 = conn.createStatement() ;
ResultSet rs6 = stmt.executeQuery("DELETE FROM Customers WHERE FirstName Like '%Mario%'");
rs6.close() ;
stmt6.close() ;
conn = DriverManager.getConnection(url+dbName,userName,password);
Statement stmt7 = conn.createStatement() ;
ResultSet rs7 = stmt.executeQuery("INSERT INTO Customers (SSN, FirstName, LastName, Address1, Address2, State, City, Zip, PhoneNumber)"+
" VALUES ('923431432','George','Scott','2325 S Babcock St',' ','FL','Melbourne','32901','(321)984-4910'");
rs7.close() ;
stmt7.close() ;
conn.close() ;
System.out.println("Disconnected from database");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Jede Hilfe sehr geschätzt werden.
HINWEIS: Es sagt mir, dass die Verbindung nach dem ersten Durchgang geschlossen ist, aber ich habe kein conn.Close(); bis zum Ende, wie du sehen kannst.
Grund für die Abstimmung unten, damit ich es verbessern kann ?. – jedgard