MySQL

  • Майская распродажа!

    Впереди теплые праздники, цены таят на глазах! Поздравляем вас и дарим вам специальный купон.
    Мы предлагаем вам специальное предложение на подписку, действительное только по временному купону.
    Обнови свой сервер с лучшими сборками, плагинами и картами!

    Купон
    MAY20
  • Мы теперь в Discord

    Мы рады объявить, что теперь у нас есть сервер Discord. В честь этого мы проводим розыгрыш!
    Теперь вы можете легко связаться с нами и другими участниками сообщества,
    обмениваться идеями и получать обновления о нашей деятельности.

  • EXCLUSIVE ⚡

    Гость, покупая подписку, ты увеличишь свои доходы в разы!
    Мы делаем самые актуальные сборки, переводим лучшие приватные плагины, а так-же обновляем их и фиксим любые ошибки.
    Дешевле, чем студии и другие разработчики!

  • Приветствуем тебя Гость!⁣

    Недавно на форуме? Не знаешь как можно скачивать ресурсы?
    Для этого нужно лишь зарегистрировать на форуме, и получать доступ к профессиональным плагинам, оптимизированным настройкам.
    Здесь только самое лучшее.

  • Обновленный «Mc-market.ru»

    Теперь у вас есть возможность продавать свои товары на Minecraft маркете.
    Это отличная возможность для вас начать зарабатывать на своих навыках и труде.
    Начни продавать сейчас!

  • Интеграция ChatGPT

    Администраторы Minecraft могут столкнуться с различными проблемами, связанными с работой серверов и кодом.
    Однако, благодаря инновационным технологиям, искусственный интеллект может помочь решить эти проблемы.
    Реши свою любую проблему сейчас!

K0lbasa

Пользователь
19 Фев 2021
255
0
16
Как установить параметр wood на 5 для игрока TestPlayer?


private final HikariDataSource src;

public MySQL(String host, int port, String database, String user, String password) throws SQLException {
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://"+host+":"+port+"/"+database);
config.setUsername(user);
config.setPassword(password);
config.addDataSourceProperty("cachePrepStmts", true);
config.addDataSourceProperty("prepStmtCacheSize", 250);
config.addDataSourceProperty("prepStmtCacheSqlLimit", 2048);

src = new HikariDataSource(config);

try(Connection cn = connect(); Statement st = cn.createStatement()) {
st.executeUpdate(String.format(
"CREATE TABLE IF NOT EXISTS `%s` (" +
"`player` TEXT NOT NULL PRIMARY KEY, " +
"`wood` INTEGER NOT NULL, " +
"`coal` INTEGER NOT NULL, " +
"`iron` INTEGER NOT NULL, " +
"`gold` INTEGER NOT NULL, " +
"`diamond` INTEGER NOT NULL)",
"jobs"));
}
}

private Connection connect() throws SQLException {
return src.getConnection();
}
 

ChatGPT ?

Официальный
30 Мар 2023
630
5
1
Вы можете обновить значение параметра "wood" для игрока TestPlayer, используя следующий код:

try (Connection cn = connect(); PreparedStatement ps = cn.prepareStatement(
"REPLACE INTO `jobs` (`player`, `wood`, `coal`, `iron`, `gold`, `diamond`) VALUES (?, ?, ?, ?, ?, ?)")) {
ps.setString(1, "TestPlayer");
ps.setInt(2, 5); //устанавливаем значение 5 для параметра wood
ps.setInt(3, 0); //задаем начальные значения для всех остальных параметров
ps.setInt(4, 0);
ps.setInt(5, 0);
ps.setInt(6, 0);
ps.executeUpdate();
} catch (SQLException ex) {
ex.printStackTrace();
}

Обратите внимание на использование метода PreparedStatement, который позволяет избежать SQL-инъекций при работе с БД.
 

K0lbasa

Пользователь
19 Фев 2021
255
0
16
Вы можете обновить значение параметра "wood" для игрока TestPlayer, используя следующий код:

try (Connection cn = connect(); PreparedStatement ps = cn.prepareStatement(
"REPLACE INTO `jobs` (`player`, `wood`, `coal`, `iron`, `gold`, `diamond`) VALUES (?, ?, ?, ?, ?, ?)")) {
ps.setString(1, "TestPlayer");
ps.setInt(2, 5); //устанавливаем значение 5 для параметра wood
ps.setInt(3, 0); //задаем начальные значения для всех остальных параметров
ps.setInt(4, 0);
ps.setInt(5, 0);
ps.setInt(6, 0);
ps.executeUpdate();
} catch (SQLException ex) {
ex.printStackTrace();
}

Обратите внимание на использование метода PreparedStatement, который позволяет избежать SQL-инъекций при работе с БД.
а можно как-то не менять остальные параметры?
 

ChatGPT ?

Официальный
30 Мар 2023
630
5
1
а можно как-то не менять остальные параметры?
Да, можно обновить только значение параметра "wood" для игрока TestPlayer, не изменяя остальные параметры, используя следующий код:

try (Connection cn = connect(); PreparedStatement ps = cn.prepareStatement(
"UPDATE `jobs` SET `wood`=? WHERE `player`=?")) {
ps.setInt(1, 5); //устанавливаем значение 5 для параметра wood
ps.setString(2, "TestPlayer");
ps.executeUpdate();
} catch (SQLException ex) {
ex.printStackTrace();
}

В этом случае необходимо использовать оператор UPDATE для обновления конкретного параметра (т.е. "wood") и фильтр WHERE для указания игрока (т.е. "TestPlayer"). Обратите внимание на использование метода PreparedStatement, который позволяет избежать SQL-инъекций при работе с БД.
 

K0lbasa

Пользователь
19 Фев 2021
255
0
16
Да, можно обновить только значение параметра "wood" для игрока TestPlayer, не изменяя остальные параметры, используя следующий код:

try (Connection cn = connect(); PreparedStatement ps = cn.prepareStatement(
"UPDATE `jobs` SET `wood`=? WHERE `player`=?")) {
ps.setInt(1, 5); //устанавливаем значение 5 для параметра wood
ps.setString(2, "TestPlayer");
ps.executeUpdate();
} catch (SQLException ex) {
ex.printStackTrace();
}

В этом случае необходимо использовать оператор UPDATE для обновления конкретного параметра (т.е. "wood") и фильтр WHERE для указания игрока (т.е. "TestPlayer"). Обратите внимание на использование метода PreparedStatement, который позволяет избежать SQL-инъекций при работе с БД.
а как получить, чему равен параметр wood, игрока TestPlayer?
 

ChatGPT ?

Официальный
30 Мар 2023
630
5
1
а как получить, чему равен параметр wood, игрока TestPlayer?
Для получения значения параметра "wood" для игрока "TestPlayer" можно использовать следующий код:

try (Connection cn = connect(); PreparedStatement ps = cn.prepareStatement(
"SELECT `wood` FROM `jobs` WHERE `player`=?")) {
ps.setString(1, "TestPlayer");
ResultSet rs = ps.executeQuery();
if (rs.next()) {
int woodValue = rs.getInt("wood");
System.out.println("Значение параметра 'wood' для игрока 'TestPlayer': " + woodValue);
}
} catch (SQLException ex) {
ex.printStackTrace();
}

В этом случае необходимо использовать оператор SELECT для извлечения определенного параметра (т.е. "wood") и фильтр WHERE для указания игрока (т.е. "TestPlayer"). Значение параметра можно получить из объекта ResultSet, используя метод getInt(). Обратите внимание на использование метода PreparedStatement, который позволяет избежать SQL-инъекций.
 

K0lbasa

Пользователь
19 Фев 2021
255
0
16
Для получения значения параметра "wood" для игрока "TestPlayer" можно использовать следующий код:

try (Connection cn = connect(); PreparedStatement ps = cn.prepareStatement(
"SELECT `wood` FROM `jobs` WHERE `player`=?")) {
ps.setString(1, "TestPlayer");
ResultSet rs = ps.executeQuery();
if (rs.next()) {
int woodValue = rs.getInt("wood");
System.out.println("Значение параметра 'wood' для игрока 'TestPlayer': " + woodValue);
}
} catch (SQLException ex) {
ex.printStackTrace();
}

В этом случае необходимо использовать оператор SELECT для извлечения определенного параметра (т.е. "wood") и фильтр WHERE для указания игрока (т.е. "TestPlayer"). Значение параметра можно получить из объекта ResultSet, используя метод getInt(). Обратите внимание на использование метода PreparedStatement, который позволяет избежать SQL-инъекций.
а если мы используем UPDATE, а параметр ещё не устанавливался?
 

ChatGPT ?

Официальный
30 Мар 2023
630
5
1
а если мы используем UPDATE, а параметр ещё не устанавливался?
Если вы используете оператор UPDATE для обновления параметра "wood" для игрока "TestPlayer", который еще не устанавливался, то соответствующая запись в таблице "jobs" не будет найдена. В этом случае оператор UPDATE ничего не обновит, и запрос вернет ноль строк.

Для обработки этой ситуации вы можете проверить, сколько строк было затронуто при выполнении оператора UPDATE, используя метод executeUpdate() объекта PreparedStatement. Если значение, возвращаемое методом, равно нулю, это означает, что соответствующая запись не была найдена, и вы можете выполнить соответствующие действия (например, вставить новую запись).

Вот пример кода для обработки этой ситуации:

try (Connection cn = connect(); PreparedStatement ps = cn.prepareStatement(
"UPDATE `jobs` SET `wood`=? WHERE `player`=?")) {
ps.setInt(1, 5); // устанавливаем значение 5 для параметра wood
ps.setString(2, "TestPlayer");
int count = ps.executeUpdate();
if (count == 0) {
// соответствующая запись не найдена, выполните дополнительные действия
}
} catch (SQLException ex) {
ex.printStackTrace();
}

Обратите внимание на использование метода PreparedStatement, который позволяет избежать SQL-инъекций.
 

K0lbasa

Пользователь
19 Фев 2021
255
0
16
Если вы используете оператор UPDATE для обновления параметра "wood" для игрока "TestPlayer", который еще не устанавливался, то соответствующая запись в таблице "jobs" не будет найдена. В этом случае оператор UPDATE ничего не обновит, и запрос вернет ноль строк.

Для обработки этой ситуации вы можете проверить, сколько строк было затронуто при выполнении оператора UPDATE, используя метод executeUpdate() объекта PreparedStatement. Если значение, возвращаемое методом, равно нулю, это означает, что соответствующая запись не была найдена, и вы можете выполнить соответствующие действия (например, вставить новую запись).

Вот пример кода для обработки этой ситуации:

try (Connection cn = connect(); PreparedStatement ps = cn.prepareStatement(
"UPDATE `jobs` SET `wood`=? WHERE `player`=?")) {
ps.setInt(1, 5); // устанавливаем значение 5 для параметра wood
ps.setString(2, "TestPlayer");
int count = ps.executeUpdate();
if (count == 0) {
// соответствующая запись не найдена, выполните дополнительные действия
}
} catch (SQLException ex) {
ex.printStackTrace();
}

Обратите внимание на использование метода PreparedStatement, который позволяет избежать SQL-инъекций.
а есть такой метод INSERT OR UPDATE?
 

ChatGPT ?

Официальный
30 Мар 2023
630
5
1
а есть такой метод INSERT OR UPDATE?
Да, существует метод INSERT OR UPDATE (или REPLACE INTO), который позволяет вставлять новую запись в таблицу, если соответствующей записи не существует, и обновлять запись, если она уже есть. В MySQL этот метод реализуется оператором REPLACE INTO.

Вот пример кода для использования оператора REPLACE INTO для обновления параметра "wood" для игрока "TestPlayer":

try (Connection cn = connect(); PreparedStatement ps = cn.prepareStatement(
"REPLACE INTO `jobs` (`player`, `wood`, `coal`, `iron`, `gold`, `diamond`) VALUES (?, ?, ?, ?, ?, ?)")) {
ps.setString(1, "TestPlayer");
ps.setInt(2, 5); // устанавливаем значение 5 для параметра wood
ps.setInt(3, 0); // задаем начальные значения для всех остальных параметров
ps.setInt(4, 0);
ps.setInt(5, 0);
ps.setInt(6, 0);
ps.executeUpdate();
} catch (SQLException ex) {
ex.printStackTrace();
}

В этом случае оператор REPLACE INTO создаст новую запись, если игрок "TestPlayer" еще не добавлен в таблицу, или обновит существующую запись, если игрок уже есть.

Обратите внимание на использование метода PreparedStatement, который позволяет избежать SQL-инъекций при работе с БД. Кроме того, при использовании оператора REPLACE INTO или INSERT INTO ON DUPLICATE KEY UPDATE необходимо установить уникальный индекс на столбец, который используется для идентификации игрока (т.е. "player"), чтобы избежать дублирования записей.
 

K0lbasa

Пользователь
19 Фев 2021
255
0
16
Да, существует метод INSERT OR UPDATE (или REPLACE INTO), который позволяет вставлять новую запись в таблицу, если соответствующей записи не существует, и обновлять запись, если она уже есть. В MySQL этот метод реализуется оператором REPLACE INTO.

Вот пример кода для использования оператора REPLACE INTO для обновления параметра "wood" для игрока "TestPlayer":

try (Connection cn = connect(); PreparedStatement ps = cn.prepareStatement(
"REPLACE INTO `jobs` (`player`, `wood`, `coal`, `iron`, `gold`, `diamond`) VALUES (?, ?, ?, ?, ?, ?)")) {
ps.setString(1, "TestPlayer");
ps.setInt(2, 5); // устанавливаем значение 5 для параметра wood
ps.setInt(3, 0); // задаем начальные значения для всех остальных параметров
ps.setInt(4, 0);
ps.setInt(5, 0);
ps.setInt(6, 0);
ps.executeUpdate();
} catch (SQLException ex) {
ex.printStackTrace();
}

В этом случае оператор REPLACE INTO создаст новую запись, если игрок "TestPlayer" еще не добавлен в таблицу, или обновит существующую запись, если игрок уже есть.

Обратите внимание на использование метода PreparedStatement, который позволяет избежать SQL-инъекций при работе с БД. Кроме того, при использовании оператора REPLACE INTO или INSERT INTO ON DUPLICATE KEY UPDATE необходимо установить уникальный индекс на столбец, который используется для идентификации игрока (т.е. "player"), чтобы избежать дублирования записей.
а если нужно поменять только параметр wood?
 

ChatGPT ?

Официальный
30 Мар 2023
630
5
1
а если нужно поменять только параметр wood?
Если вы хотите обновить только значение параметра "wood" для игрока "TestPlayer", не задевая остальные параметры, то можно воспользоваться оператором UPDATE с соответствующим фильтром WHERE:

try (Connection cn = connect(); PreparedStatement ps = cn.prepareStatement(
"UPDATE `jobs` SET `wood`=? WHERE `player`=?")) {
ps.setInt(1, 5); // устанавливаем значение 5 для параметра wood
ps.setString(2, "TestPlayer"); // выбираем игрока TestPlayer
ps.executeUpdate(); // выполняем запрос
} catch (SQLException ex) {
ex.printStackTrace();
}

В этом случае оператор UPDATE обновит только параметр "wood" для выбранного игрока, оставляя значения остальных параметров без изменений. Обратите внимание на использование метода PreparedStatement, который позволяет избежать SQL-инъекций при работе с БД.
 

K0lbasa

Пользователь
19 Фев 2021
255
0
16
Если вы хотите обновить только значение параметра "wood" для игрока "TestPlayer", не задевая остальные параметры, то можно воспользоваться оператором UPDATE с соответствующим фильтром WHERE:

try (Connection cn = connect(); PreparedStatement ps = cn.prepareStatement(
"UPDATE `jobs` SET `wood`=? WHERE `player`=?")) {
ps.setInt(1, 5); // устанавливаем значение 5 для параметра wood
ps.setString(2, "TestPlayer"); // выбираем игрока TestPlayer
ps.executeUpdate(); // выполняем запрос
} catch (SQLException ex) {
ex.printStackTrace();
}

В этом случае оператор UPDATE обновит только параметр "wood" для выбранного игрока, оставляя значения остальных параметров без изменений. Обратите внимание на использование метода PreparedStatement, который позволяет избежать SQL-инъекций при работе с БД.
использу REPLACE INTO
 

ChatGPT ?

Официальный
30 Мар 2023
630
5
1
использу REPLACE INTO
Если вы хотите использовать оператор REPLACE INTO для обновления значения параметра "wood" для игрока "TestPlayer", то можно воспользоваться следующим кодом:

try (Connection cn = connect(); PreparedStatement ps = cn.prepareStatement(
"REPLACE INTO `jobs` (`player`, `wood`, `coal`, `iron`, `gold`, `diamond`) VALUES (?, ?, ?, ?, ?, ?)")) {
ps.setString(1, "TestPlayer");
ps.setInt(2, 5); // устанавливаем значение 5 для параметра wood
ps.setInt(3, 0); // задаем начальные значения для всех остальных параметров
ps.setInt(4, 0);
ps.setInt(5, 0);
ps.setInt(6, 0);
ps.executeUpdate();
} catch (SQLException ex) {
ex.printStackTrace();
}

В этом случае оператор REPLACE INTO создаст новую запись, если игрок "TestPlayer" еще не добавлен в таблицу, или обновит существующую запись, если игрок уже есть. Обратите внимание на использование метода PreparedStatement, который позволяет избежать SQL-инъекций при работе с БД. Кроме того, при использовании оператора REPLACE INTO или INSERT INTO ON DUPLICATE KEY UPDATE необходимо установить уникальный индекс на столбец, который используется для идентификации игрока (т.е. "player"), чтобы избежать дублирования записей.
 

K0lbasa

Пользователь
19 Фев 2021
255
0
16
Если вы хотите использовать оператор REPLACE INTO для обновления значения параметра "wood" для игрока "TestPlayer", то можно воспользоваться следующим кодом:

try (Connection cn = connect(); PreparedStatement ps = cn.prepareStatement(
"REPLACE INTO `jobs` (`player`, `wood`, `coal`, `iron`, `gold`, `diamond`) VALUES (?, ?, ?, ?, ?, ?)")) {
ps.setString(1, "TestPlayer");
ps.setInt(2, 5); // устанавливаем значение 5 для параметра wood
ps.setInt(3, 0); // задаем начальные значения для всех остальных параметров
ps.setInt(4, 0);
ps.setInt(5, 0);
ps.setInt(6, 0);
ps.executeUpdate();
} catch (SQLException ex) {
ex.printStackTrace();
}

В этом случае оператор REPLACE INTO создаст новую запись, если игрок "TestPlayer" еще не добавлен в таблицу, или обновит существующую запись, если игрок уже есть. Обратите внимание на использование метода PreparedStatement, который позволяет избежать SQL-инъекций при работе с БД. Кроме того, при использовании оператора REPLACE INTO или INSERT INTO ON DUPLICATE KEY UPDATE необходимо установить уникальный индекс на столбец, который используется для идентификации игрока (т.е. "player"), чтобы избежать дублирования записей.
установи уникальный индекс и сделай с REPLACE INTO, чтобы менялся только параметр wood.
 

ChatGPT ?

Официальный
30 Мар 2023
630
5
1
установи уникальный индекс и сделай с REPLACE INTO, чтобы менялся только параметр wood.
Лучше использовать метод INSERT INTO ... ON DUPLICATE KEY UPDATE для обновления только параметра "wood" для выбранного игрока, установив уникальный индекс на столбец "player". Вот пример кода:

1. Создание таблицы jobs со столбцами "player", "wood", "coal", "iron", "gold
 

K0lbasa

Пользователь
19 Фев 2021
255
0
16
Лучше использовать метод INSERT INTO ... ON DUPLICATE KEY UPDATE для обновления только параметра "wood" для выбранного игрока, установив уникальный индекс на столбец "player". Вот пример кода:

1. Создание таблицы jobs со столбцами "player", "wood", "coal", "iron", "gold
напиши полностью
 

ChatGPT ?

Официальный
30 Мар 2023
630
5
1
напиши полностью
Конечный код будет выглядеть следующим образом:

1. Создание таблицы jobs со столбцами "player", "wood", "coal", "iron", "gold" и установкой уникального индекса на столбец "player":

CREATE TABLE `jobs` (
`player` VARCHAR(50) NOT NULL,
`wood` INT(11) NOT NULL DEFAULT '0',
`coal` INT(11) NOT NULL DEFAULT '0',
`iron` INT(11) NOT NULL DEFAULT '0',
`gold` INT(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`player`),
UNIQUE KEY `player_UNIQUE` (`player`)
);

2. Обновление только параметра "wood" для выбранного игрока с помощью оператора INSERT INTO ... ON DUPLICATE KEY UPDATE:

try (Connection cn = connect(); PreparedStatement ps = cn.prepareStatement(
"INSERT INTO `jobs` (`player`, `wood`) VALUES (?, ?) ON DUPLICATE KEY UPDATE `wood`=?")) {
ps.setString(1, "TestPlayer"); // выбираем игрока TestPlayer
ps.setInt(2, 5); // устанавливаем значение 5 для параметра wood
ps.setInt(3, 5); // задаем такое же значение параметра wood для обновления
ps.executeUpdate(); // выполняем запрос
} catch (SQLException ex) {
ex.printStackTrace();
}

В этом случае оператор INSERT INTO добавит новую запись, если игрок "TestPlayer" еще не добавлен в таблицу, или обновит существующую запись, если игрок уже есть, используя оператор ON DUPLICATE KEY UPDATE для обновления только параметра "wood". Обратите внимание на использование метода PreparedStatement, который позволяет избежать SQL-инъекций при работе с БД.
 

Помочь проекту! 💕

Собрано
"40,197.60" ₽
Цель
"50,000.00" ₽

Новые сообщения

Последние ресурсы