В настоящее время меня бросает в глубины моей школы, и они ожидают, что я запрограммирую простую форму входа в систему, используя sql. Они дали нам краткие примеры того, как они используют JDBC и что это все, но на самом деле не объяснили шаг за шагом, как использовать его самостоятельно. Поэтому я привел немного кода из примера, но я не могу заставить его работать. Я продолжаю получение NullPointerException и я не могу понять, почему :(Простое сравнение данных с MySQL, nullpointerexception
Вот класс подключения:
package Database;
import java.sql.*;
public class MySQLConnection {
public static final String DRIVER = "com.mysql.jdbc.Driver";
public static final String DBURL = "jdbc:mysql://localhost/corendon";
public static final String DBUSER = "root";
public static final String DBPASS = "simplepass";
private ResultSet result = null;
private int affectedRows = -1;
Connection conn = null;
public void startConnection() {
try {
Class.forName(DRIVER);
DriverManager.setLoginTimeout(5);
conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
} catch (Exception e) {
}
}
public void closeConnection() {
try {
if (conn != null && !conn.isClosed()) {
conn.close();
}
} catch (Exception e) {
}
conn = null;
}
public ResultSet performSelect(PreparedStatement prdstmt) throws SQLException {
result = prdstmt.executeQuery();
return result;
}
public int performUpdate(PreparedStatement prdstmt) throws SQLException {
affectedRows = prdstmt.executeUpdate();
return affectedRows;
}
public Connection getConnection() {
return conn;
}
}
А вот метод я получаю исключение в (в другом классе):
MySQLConnection conn = new MySQLConnection();
public void compareData(int id, String pass) throws SQLException{
ResultSet rs = null;
PreparedStatement prdstmt = null;
String query = "SELECT id, password FROM users WHERE id=?, password=?";
conn.startConnection();
prdstmt = conn.getConnection().prepareStatement(query);
prdstmt.setInt(1, id);
prdstmt.setString(2, pass);
rs = conn.performSelect(prdstmt);
while (rs.next()){
String tempPass = rs.getString("password");
int tempId = rs.getInt("id");
}
if(conn != null){
conn.closeConnection();
}
}
Я получаю NullPointerException на линии:
prdstmt = conn.getConnection().prepareStatement(query);
Почему я t бросает там исключение, но не когда я запускаю соединение, а также как это решить? Заранее спасибо.
В вашем методе compareData какой объект является переменной 'conn'? Он объявляет метод startConnection(), хотя ни объекты DataSource, ни объекты Connection не имеют этого – hotforfeature
Используете ли вы SQL Server или MySQL? Заголовок вопроса говорит SQL Server, но в остальном ваш вопрос говорит MySQL. –
conn - это объект класса i, который был опубликован первым. Он объявлен ранее в классе MySQLConnection conn = new MySQLConnection(); И да, извините за это. – Taerus