2013-08-19 26 views
0

需要幫助!我之前在這裏提出過一個問題 - MySQL/Java error與此相關但不完全相同(對於這些問題,不確定SO的協議)。我正在使用JDBC,MySQL並遇到錯誤。首先,代碼JdbcTemplate,MySQL錯誤

public User find(String login) { 
    System.out.println("Trying to find the user...." + login);  
    User user = this.jdbcTemplate.queryForObject(
     "select * from xyz where user_name = ?", 
     new Object[]{login}, 
     new RowMapper<User>() { 
      public User mapRow(ResultSet rs, int rowNum) throws SQLException { 
       User user = new User(); 
       user.setId(Long.valueOf(rs.getInt(1))); 
       user.setUserName(rs.getString(2)); 
       user.setPassword(rs.getString(3)); 
       return user; 
      } 
     }); 
    System.out.println("Found user..." + user); 
    return user; 
} 

public void create(User user) { 

    this.jdbcTemplate.update("INSERT INTO xyz (user_name,user_password) VALUES (default, default, ?, ?)", 
      new Object[] {user.getUserName(),user.getPassword()}); 

我需要給默認值USER_NAME,USER_PASSWORD(2列),但不知道在「創建(用戶用戶)塊的方式和地點。

下面是上面的代碼中的錯誤:(?)。

SEVERE: Servlet.service() for servlet appServlet threw exception 
java.sql.SQLException: Column count doesn't match value count at row 1 

我已經嘗試過了沒有「默認」,「默認」,只是但這給了我又一個錯誤

SEVERE: Servlet.service() for servlet appServlet threw exception 
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your 

SQL syntax; check the manual that corresponds to your MySQL server version for the 

right syntax to use near '?,?)' at line 1 

回答

0

您的列列表只有2列,並且您試圖插入4個值。

INSERT INTO xyz (user_name,user_password) VALUES (default, default, ?, ?) 

如果該列有默認值並且未在列列表中指定,則刪除default值。

+0

Thx :)我剛剛編輯了這個問題,以表明錯誤,當我嘗試沒有'默認',只是(?,?)。 – user2480526

+0

MySQL表格沒有這些列的默認值。 – user2480526

+0

@ user2480526你已經改變了你的問題。你的列名真的是'user_name'和'user_password'嗎?如果您使用[保留字](http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html) – Kermit