Cześć, jestem zielony, tworze CRUDA w Javie z bazą Oracle. Mam problem z kluczem glownym. W testach na bazie jest cacy - stworzyłem sekwencje i triggera, po dodaniu wiersza z id= null dostaje wiersz z kolejnym numerem. Problem jest w aplikacji.
Aplikacja za każdym razem wpisuje krotke o id = 0 i napisuje ją. Dlaczego ponizsza aplikacja nie działa poprawnie?
Proszę o zerknięcie...
//APP
...
public class App {
public static void main(String[] args) {
UserDao dao = new UserDao();
User user = new User();
Scanner firstNameSc = new Scanner( System.in );
System.out.println("Please enter new User first name:");
String firstName = firstNameSc.nextLine();
Scanner lastNameSc = new Scanner( System.in );
System.out.println("Last name:");
String lastName = lastNameSc.nextLine();
user.setFirstName(firstName);
user.setLastName(lastName);
Scanner dataSc = new Scanner( System.in );
System.out.println("Date of birth (yyyy-mm-dd):");
String data = dataSc.nextLine();
try{
Date dob = new SimpleDateFormat("yyyy-MM-dd"). parse(data);
user.setDob(dob);
} catch (ParseException e) {
e.printStackTrace();
}
Scanner emailSc = new Scanner( System.in );
System.out.println("Enter email:");
String email = emailSc.nextLine();
user.setEmail(email);
dao.updateUser(user);
...
//USERDAO.JAVA
...
public class UserDao {
private Connection connection;
public UserDao() {
connection = DbUtil.getConnection();
}
public void addUser(User user) {
try {
PreparedStatement preparedStatement = connection
.prepareStatement("insert into users(firstname,lastname,dob,email) values ( ?, ?, ?, ? )");
// Parameters start with 1
//insert into ruff(id,name) values(your_sequence.nextval,'name') USERSID_SEQ.NEXTVAL
// preparedStatement.setInt(1, user.getUserid());
//preparedStatement.setNull(1, java.sql.Types.INTEGER);
preparedStatement.setString(1, user.getFirstName());
preparedStatement.setString(2, user.getLastName());
preparedStatement.setDate(3, new java.sql.Date(user.getDob().getTime()));
preparedStatement.setString(4, user.getEmail());
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void updateUser(User user) {
try {
PreparedStatement preparedStatement = connection
.prepareStatement("update users set firstname=?, lastname=?, dob=?, email=?" +
"where userid=?");
// Parameters start with 1
preparedStatement.setString(1, user.getFirstName());
preparedStatement.setString(2, user.getLastName());
preparedStatement.setDate(3, new java.sql.Date(user.getDob().getTime()));
preparedStatement.setString(4, user.getEmail());
//preparedStatement.setInt(5, user.getUserid());
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
...
//user.JAVA
public class User {
private int userid;
private String firstName;
private String lastName;
private Date dob;
private String email;
public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Date getDob() {
return dob;
}
public void setDob(Date dob) {
this.dob = dob;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User [userid=" + userid + ", firstName=" + firstName
+ ", lastName=" + lastName + ", dob=" + dob + ", email="
+ email + "]";
}
}