Я создала простую форму регистрации. Использую struts2 и хочу чтобы когда пользователь кликает на submit -> данные отобразились в mysql database.
Таким образом я пытаюсь записать данные в датабейс:
public void registerUser(){
user.add(username);
user.add(password);
user.add(email);
user.add(picture);
//connect to database
try {
Class.forName("com.mysql.jdbc.Driver");
try {
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/myFacebook?" + "user=root&password=root");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Insert Data into database
try(PreparedStatement createUser = connection.prepareStatement("Insert into user(username, password, email, picture)" + "VALUES (?, ?, ?, ?)")){
for(int i = 0; i < 1000; i++)
{
createUser.setInt(0, i+1);
}
createUser.setString(1, user.get(0));
createUser.setString(2, user.get(1));
createUser.setString(3, user.get(2));
createUser.setString(4, user.get(3));
int rowsUpdated = createUser.executeUpdate();
createUser.close();
}catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Я решила создать ArrayList
в классе User
, потому что мне кажется так легче записать данные.
ArrayList<String> user = new ArrayList<String>();
Запускаю все свою систему через apache tomcat. Все запускается и не выдает никаких ошибок. Все методы и файлы между собой правильно соединены. Но когда проверяю датабейс в консоле, то данные не отображаются и мой столик user - пустой.
Никак не могу понять в чем ошибка. То ли данные с формы как-то неправильно вызываются, то ли я неправильно записываю их в датабейс.
Помогите, пожалуйста, разобраться. Заранее спасибо!
UPD:
//Insert Data into database
try(PreparedStatement createUser = connection.prepareStatement("Insert into user(user_id, username, password, email, picture)" + "VALUES (?, ?, ?, ?, ?)")){
createUser.setInt(0, userid);
createUser.setString(1, user.get(0));
createUser.setString(2, user.get(1));
createUser.setString(3, user.get(2));
createUser.setString(4, user.get(3));
int rowsUpdated = createUser.executeUpdate();
createUser.close();
Судя по всему проблема в этом участке кода.
for(int i = 0; i < 1000; i++)
{
createUser.setInt(1, i+1);
createUser.setString(2, user.get(0));
createUser.setString(3, user.get(1));
createUser.setString(4, user.get(2));
createUser.setString(5, user.get(3));
}
int rowsUpdated = createUser.executeUpdate();
Здесь вы в теле цикла устанавливаете параметры запроса, но исполнение запускаете после выхода из цикла.
Вам нужно либо перенести в тело цикла строку
int rowsUpdated = createUser.executeUpdate();
Либо добавить в цикл строку
createUser.addBatch();
А после цикла вызвать
preparedStatement.executeBatch();
А executeUpdate
убрать вовсе.
UPD:
Похоже дело не только в этом. Вот ваша строка sql:
"Insert into user(username, password, email, picture)" + "VALUES (?, ?, ?, ?)"
Четыре судя по всему строковых параметров. Вы же пытаетесь установить ей пять параметров, к тому же не соответствуя по типу!
createUser.setInt(1, i+1);
createUser.setString(2, user.get(0));
createUser.setString(3, user.get(1));
createUser.setString(4, user.get(2));
createUser.setString(5, user.get(3));
Выпадет SQLException
на пятой строке.
Скорее всего ваше строка sql должна теперь выглядеть как то так:
"Insert into user(id, username, password, email, picture)" + "VALUES (?,?, ?, ?, ?)"
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Зачем это нужно? Чтобы скрыть треки, которые не нравятся пользователюКак реализовать? Создать таблицу tracks_hide с полями user_id,owner_id,track_id
Ругается на закрывающий h1, соответственно ничего не выводитсяВ чем дело?
Делаю поиск, но что-то выдает ошибку (ошибка на скриншоте), мне кажется что это через json, на картинке его структура показанаЕсли делать бес...
Есть следующая проблема: я использую requirejs для AMD, при этом попытался использовать typescript и поставил grunt-typescriptВот отрывок из Gruntfile