I am learnin JDBC at the moment with IntelliJ and MySQL. Here is the code that I learned from Telusko on Youtube:
package com.company;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Main {
public static void main(String[] args) throws Exception {
String url = "jdbc:mysql://localhost:3306/customers";
String uname = "root";
String pass = "791005596";
String query = "SELECT * FROM customers.registration\n" +
"where password like '%123'";
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url, uname, pass);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(query);
String userData = "";
while (rs.next()) {
userData = rs.getInt("ID") + rs.getString(2);
System.out.println(userData);
st.close();
con.close();
}
}
}
I already added connector in the library, as I run it on IntelliJ, it comes in this way:
"C:\Program Files\Java\jdk-14.0.1\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.1.1\lib\idea_rt.jar=1821:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.1.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\Jocelyn Huang\IdeaProjects\FSD\out\production\FSD;C:\Users\Jocelyn Huang\IdeaProjects\FSD\lib\mysql-connector-java-8.0.20.jar" com.company.Main
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
231245mamamoo123
Exception in thread "main" java.sql.SQLException: Operation not allowed after ResultSet closed
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
at com.mysql.cj.jdbc.result.ResultSetImpl.checkClosed(ResultSetImpl.java:445)
at com.mysql.cj.jdbc.result.ResultSetImpl.next(ResultSetImpl.java:1726)
at com.company.Main.main(Main.java:22)
Process finished with exit code 1
I have no idea what is going on here, for the first line, I try to delete this one :
Class.forName("com.mysql.jdbc.Driver");
And run again,
"C:\Program Files\Java\jdk-14.0.1\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.1.1\lib\idea_rt.jar=2687:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.1.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\Jocelyn Huang\IdeaProjects\FSD\out\production\FSD;C:\Users\Jocelyn Huang\IdeaProjects\FSD\lib\mysql-connector-java-8.0.20.jar" com.company.Main
231245mamamoo123
Exception in thread "main" java.sql.SQLException: Operation not allowed after ResultSet closed
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
at com.mysql.cj.jdbc.result.ResultSetImpl.checkClosed(ResultSetImpl.java:445)
at com.mysql.cj.jdbc.result.ResultSetImpl.next(ResultSetImpl.java:1726)
at com.company.Main.main(Main.java:22)
Process finished with exit code 1
Could someone help me out? Thanks in advance.