При чтение с бд выдает ошибку. Данные приходят в формате json.
public class ClientThread implements Runnable {
private Scanner scanner;
private Socket socket;
private DB db;
public ClientThread(Socket socket, DB db) {
this.socket = socket;
this.db = db;
}
@Override
public void run() {
try {
scanner = new Scanner(socket.getInputStream());
while (!socket.isClosed()) {
while (scanner.hasNextLine()) {
String jsonUser = scanner.nextLine();
Gson gson = new Gson();
User user = gson.fromJson(jsonUser, User.class);
System.out.println(jsonUser);
db.addUser(user);
Thread.sleep(2000);
String a = db.selectUser(user); // Тут ошибка
if (a.isEmpty()) {
db.addUser(user);
}
if (!a.isEmpty()) {
System.out.println("1");
}
break;
}
socket.close();
}
System.out.println("socket is closed");
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
public class ListenThread implements Runnable {
private DB db;
public ListenThread() {
db = new DB();
}
@Override
public void run() {
try {
ServerSocket serverSocket = new ServerSocket(6789);
while (true) {//
System.out.println("wait for client");
Socket socket = serverSocket.accept();
System.out.println("client connected");
ClientThread clientThread = new ClientThread(socket, db);
Thread thread = new Thread(clientThread);
thread.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class User {
private String login;
private String password;
private int score;
public User(String login, String password, int score) {
this.login = login;
this.password = password;
this.score = score;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public String toString() {
return "User{" +
"login='" + login + '\'' +
", password='" + password + '\'' +
", score=" + score +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return score == user.score &&
Objects.equals(login, user.login) &&
Objects.equals(password, user.password);
}
@Override
public int hashCode() {
return Objects.hash(login, password, score);
}
}
public class DB {
private final String DB_CONNECTION = "jdbc:postgresql://localhost:5432/diplom";
private final String DB_USER = "postgres";
private final String DB_PASSWORD = "1";
private Connection connection;
private Boolean found;
public DB() {
try {
connection = DriverManager.getConnection(DB_CONNECTION, DB_USER, DB_PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void addUser(User user) {
try (Statement statement = connection.createStatement()) {
statement.executeUpdate(
"INSERT INTO users(login, password,score)" +
"VALUES ('"
+ user.getLogin() + "', '"
+ user.getPassword() + "', '"
+ user.getScore() + "')"
);
} catch (SQLException e) {
e.printStackTrace();
// "')"
}
}
public void updateUser(User user) {
try (Statement statement = connection.createStatement()) {
statement.executeUpdate(
"UPDATE users SET score = '"
+ user.getScore() + "'WHERE login ='" + user.getLogin() + "';"
);
} catch (SQLException e) {
e.printStackTrace();
// "')"
}
}
public String selectUser(User user) {
try (Statement statement = connection.createStatement()) {
statement.executeUpdate(
"SELECT id, login, password, score " +
"from users where login = '" + user.getLogin() + "' and password = '" + user.getPassword() + "';"
);
} catch (SQLException e) {
e.printStackTrace();
// "')"
}
return null;
}
}
DB
CREATE TABLE users(id SERIAL PRIMARY KEY, login VARCHAR(30) UNIQUE, password VARCHAR(30), score INTEGER);
Ошибка
org.postgresql.util.PSQLException: Результат возвращён когда его не ожидалось.
at
org.postgresql.jdbc.PgStatement.getNoResultUpdateCount(PgStatement.java:256)
at org.postgresql.jdbc.PgStatement.executeUpdate(PgStatement.java:247)
at com.comany.clients.DB.selectUser(DB.java:52)
at com.comany.clients.ClientThread.run(ClientThread.java:31)
at java.base/java.lang.Thread.run(Thread.java:835)
Exception in thread "Thread-2" java.lang.NullPointerException
at com.comany.clients.ClientThread.run(ClientThread.java:32)
at java.base/java.lang.Thread.run(Thread.java:835)
Пример json запроса
{"login":"Test","password":"Test","score":0}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
При запуске программы с файлом, например, 1Гб вылетает ошибка
На одном проекте подключенный драйвер работаетНа другом - нет - выводит эту ошибку
Делаю приложение на Cordova и мне нужно работать с БДВ браузере всё работает хорошо, но в эмуляторе отказывается