- Баллы
- 76
- Имя в Minecraft
- Solomka
Сама ошибка
Тип строки `ip` VARCHAR(15)
Само получение айпи адреса:
Занесение в таблицу
Ошибка вылезает при попытке получить логин пользователя в таблице
Код:
org.h2.jdbc.JdbcSQLDataException: Ошибка преобразования данных при конвертации "какой.то.ай.пи" - Cпециально сделано так
Data conversion error converting "какой.то.ай.пи"; SQL statement:
SELECT id FROM USERS WHERE ip = какой.то.ай.пи [22018-200]
Caused by: java.lang.NumberFormatException: Character array contains more than one decimal point.
at java.base/java.math.BigDecimal.<init>(BigDecimal.java:493)
at java.base/java.math.BigDecimal.<init>(BigDecimal.java:402)
at org.h2.command.Parser.readDecimal(Parser.java:5348)
Тип строки `ip` VARCHAR(15)
Код:
statement.executeUpdate("CREATE TABLE IF NOT EXISTS `" + DB_FILE + "` (" +
"`id` INT NOT NULL AUTO_INCREMENT, " +
"`login` VARCHAR(15) NOT NULL, " +
"`password` VARCHAR(10) NOT NULL, " +
"`permission` VARCHAR(45) NOT NULL, " +
"`banned` TINYINT NOT NULL, " +
"`ip` VARCHAR(15) NOT NULL, " +
"PRIMARY KEY (`id`))");
}
Само получение айпи адреса:
Код:
public String checkIp() {
URL url;
BufferedReader in;
String ipAddress = null;
try {
url = new URL("http://bot.whatismyipaddress.com");
in = new BufferedReader(new InputStreamReader(url.openStream()));
ipAddress = in.readLine().trim();
if (!(ipAddress.length() > 0)) {
try {
InetAddress ip = InetAddress.getLocalHost();
ipAddress = (ip.getHostAddress());
} catch (Exception exp) {
exp.printStackTrace();
return null;
}
}
} catch (IOException e) {
e.printStackTrace();
}
assert ipAddress != null;
return ipAddress;
}
Занесение в таблицу
Код:
try {
DatabaseHandler db = new DatabaseHandler();
db.addUser(login.getText().trim(), password.getText().trim(), Groups.USER.getS(), false, new Ip().checkIp());
window.closeWindow(singUpButton);
window.openWindow("/launcher/files/launcher.fxml", "PIXEL LAUNCHER", 708, 417);
} catch (SQLException | ClassNotFoundException | InvocationTargetException
| NoSuchMethodException | InstantiationException
| IllegalAccessException e) {
e.printStackTrace();
}
Ошибка вылезает при попытке получить логин пользователя в таблице
Код:
lk.setOnMouseExited(event -> {
lk.setUnderline(false);
lk.setText("Личный кабинет");
});
lk.setOnMouseEntered(event -> {
lk.setUnderline(true);
try {
lk.setText("Здравствуйте, " + db.getUserLogin(String.valueOf(db.getUserId(new Ip().checkIp()))));
} catch (SQLException e) {
e.printStackTrace();
}
});
Последнее редактирование: