I'm trying to use H2 database in my program and I keep getting "Object 
already closed" exception when the createStatement() method is called.
Below is my Java program. Can anyone help me fix the error please?

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.h2.engine.Database;

public class MyConnections {

String dbUrl = "jdbc:h2:~/ctgen";
String user = "sa";
public static void main(String[] args) {
Connection conn = getConnection();
String name = "";
if(conn != null) {
System.out.println("Connection Successful !!");
// Get username
name = getData(conn, 101);
System.out.println("User Name before update : " + name);
}
if(conn != null) {
// Update name 
String newName = "NewUser";
updateUser(conn, newName, 101);
} 
if(conn != null) {
// Check if the name is updated
name = getData(conn, 101);
System.out.println("User Name after update : " + name);
} 
try {
if(conn != null) 
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
MyConnections myDB = new MyConnections();
try(Connection con = DriverManager.getConnection(myDB.dbUrl, myDB.user, 
"");){
con.setAutoCommit(true);
return con; 
} catch (SQLException e) {
e.printStackTrace();
return null;
} 
}
public static String getData(Connection conn, int id) {
String username = null;
Statement stmt = null;
ResultSet rs = null;
if(conn != null) {
try {
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT * FROM USER WHERE ID = '" + id + "'");
while(rs.next()) {
username = rs.getString("NAME");
}
rs.close();
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return username; 
}
public static boolean updateUser(Connection conn, String newName, int id) {
Statement stmt = null;
if(conn != null) {
try {
stmt = conn.createStatement();
int result = stmt.executeUpdate("UPDATE TABLE USER SET NAME = '"+ newName 
+"' WHERE ID = '" + id + "'");
if(result == 1) {
return true;
}
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}

return false;
} 
}

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.

Reply via email to