I am attempting to create a database connection and update using a prepared statement with JDBC to MYSQL.
I have tried changing the connection a bit and had to change the preparedStatement class to static in order to not get errors. However, when running the app I got a NullPointerException error and I can't see where exactly I need to create a new object.
Currently, I get an error:
Exception in thread "main" java.lang.NullPointerException
at Alter.main(Alter.java:12)
import java.sql.PreparedStatement;
import java.sql.SQLException;
public abstract class Alter {
public static void main(String[] args) throws SQLException {
String query = "INSERT INTO school.students (First_Name, Last_Name, Gender, Grade_Level, IEP, Disruptive_1to5_LowtoHigh, OffTask_1to5_LowtoHigh, Not_Responsible_1to5_LowtoHigh, Not_GetAlong_1to5_LowtoHigh) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
PreparedStatement myStmt = Connection.prepareStatement(query);
myStmt.setString(1, "Chris");
myStmt.setString(2, "Johnson");
myStmt.setString(3, "Male");
myStmt.setString(4, "K");
myStmt.setString(5, "N");
myStmt.setInt(6, 1);
myStmt.setInt(7, 3);
myStmt.setInt(8, 5);
myStmt.setInt(9, 2);
myStmt.addBatch();
int[] result = myStmt.executeBatch();
System.out.println(result + " were added to the database.");
}
}
import java.sql.*;
public class Connection extends Alter {
{
try {
Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance();
}
catch (Exception ex) {
}
try {
batchInsertRecordsIntoTable();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
final static void batchInsertRecordsIntoTable() throws SQLException {
{
try {
DriverManager.getConnection(
"jdbc:mysql://localhost:3306/school?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC",
"root", "");
System.out.println("Connection Successful");
}
catch (SQLException ex) {
ex.printStackTrace();
}
}
}
public Statement createStatement() {
return null;
}
public static PreparedStatement prepareStatement(String query) {
return null;
}
}