Помогите Интеграция с базой данных MySQL

  • Автор темы Автор темы Dexel
  • Дата начала Дата начала

Dexel

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
SiRiuS_OSiRiuS
Добрый день. Spigot 1.11.2. 1.12 пока не брал :)

В Интернете есть множество туториалов по этой теме. Обидно, но ни один мне не помог.
Сперва я работал с локальной бд, потом взял db4free. Тем не менее, возникает такая ошибка.

Вот я подключаюсь к бд:
Java:
try {
            String url = "jdbc:mysql://db4free.net:3306/dbname";
            connection = DriverManager.getConnection(url, "login", "pass"); // Сделаем вид, что url, логин и пароль верны
} catch (SQLException e) {
        e.printStackTrace();
}
Вот я создаю таблицу:
Java:
String sql = "CREATE TABLE IF NOT EXISTS anotherTable(Name varchar(32));";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.executeUpdate();
И когда я захочу туда занести какую-то инфу,
Java:
String sql = "INSERT INTO anotherTable(Name) VALUES ('11101');";
try {
        PreparedStatement stmt = connection.prepareStatement(sql);
        stmt.setString(1, "Name");
        stmt.executeUpdate();
} catch (SQLException e) {
        e.printStackTrace();
}
На строке с setString в консоли появляется SQLException с сообщением "Parameter index out of range (1 > number of parameters, which is 0)".
Если я поменяю параметры setString на 0, Name, то всё равно получу стек с сообщением вида "0 < 1".

Прошу помочь :)
 
PreparedStatement работает примерно так:
Ты создаешь шаблон(SQL-запрос) и позже сможешь вставить в него нужные динамические данные на место знака вопроса.В твоем запросе знаков "?" нет, соотв. и вставлять некуда.Вот пример:
Java:
String insertQuery = "INSERT INTO blocks (location) VALUES (?);";
PreparedStatement preparedStatement = connection.prepareStatement(insertQuery);
preparedStatement.setString(1, location);
preparedStatement.executeUpdate();
В строке insertQuery у меня заготовлен шаблон(который кстати может кешироваться).В этом шаблоне у меня есть знак ? на месте того значения, которое я хочу вставить.Позже, после подготовки шаблона я записываю в него нужную мне переменную(location) на позицию №1(В моем шаблоне только 1 знак "?", а все плейсхолдеры(знаки "?") индексируются с 1).В итоге, получается шаблон, в который уже вставлены нужные мне данные, и дальше этот запрос пойдёт на выполнение.
 
Назад
Верх