Я новичок здесь, а также более или менее новичок в программировании Java. Это также мой первый Android проект. На данный момент я пытаюсь сделать логин и регистрацию аккаунта с SQL.
Сначала код:
Класс базы данных:
import java.sql.*;
public class Database {
private Connection connection;
private Statement statement;
private ResultSet resultSet;
private PreparedStatement preparedStatement;
public ResultSet connectQuery(String query) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://...", "...", "...");
statement = connection.createStatement();
resultSet = statement.executeQuery(query);
} catch (Exception e) {
e.printStackTrace();
}
return resultSet;
}
public boolean alreadyExisting(String username) {
try {
String query = "SELECT username FROM users WHERE username = '" + username + "'";
ResultSet result = connectQuery(query);
return result.next();
} catch(SQLException e) {
System.out.println(e);
}
return true;
}
}
LoginActivity класс:
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageButton;
import androidx.appcompat.app.AppCompatActivity;
import de.simbo.songrequest.MainActivity;
import de.simbo.songrequest.R;
import de.simbo.songrequest.database.Database;
public class LoginActivity extends AppCompatActivity {
Database database;
private ImageButton login;
private ImageButton create;
private EditText username;
private EditText password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
accountTest = new AccountTest();
database = new Database();
username = findViewById(R.id.Username);
password = findViewById(R.id.Password);
login = findViewById(R.id.Login);
create = findViewById(R.id.Create);
Intent intent = new Intent(this, CreateAccountActivity.class);
create.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(intent);
}
});
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
signIn(username.getText().toString(), password.getText().toString());
}
});
}
public void signIn(String username, String password) {
if (database.alreadyExisting(username)) {
if (database.getPassword(username).equals(password)) {
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
}
}
}
}
Основной класс:
import de.simbo.songrequest.account.CreateAccountActivity;
import de.simbo.songrequest.database.Database;
import de.simbo.songrequest.queue.Queue;
import de.simbo.songrequest.song.Song;
public class Main {
static Database database;
public static void main(String args[]) {
database = new Database();
database.alreadyExisting("timbo");
}
}
Теперь моя проблема: если я вызываю метод УжеExisting () в Базе данных из основного класса, все в порядке. Но как только уже Existing () вызывается нажатием кнопки входа в приложение, появляется следующее сообщение:
java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.sql.ResultSet.next()' on a null object reference
at de.simbo.songrequest.database.Database.alreadyExisting(Database.java:114)
at de.simbo.songrequest.account.LoginActivity.signIn(LoginActivity.java:53)
at de.simbo.songrequest.account.LoginActivity$2.onClick(LoginActivity.java:46)
at android.view.View.performClick(View.java:6597)
at android.view.View.performClickInternal(View.java:6574)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25885)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Почему эта ошибка возникает только при использовании приложения?
Надеюсь, кто-нибудь сможет мне помочь.
Заранее спасибо