2013-08-19 31 views
1

新手程序員在這裏。一旦這樣MVN tomcat的:跑我得到以下錯誤:MySQL/Java錯誤

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 'values (?, ?)' at line 1 

有問題的代碼如下:

public void create(User user) { 
    this.jdbcTemplate.update("INSERT INTO xyz.user(user_name, user_password values (?, ?)"); 


      user.getUserName(); user.getId(); 

} 

public void delete(User user) { 
    this.jdbcTemplate.update("DELETE FROM xyz.user WHERE id = ?"); 


} 

public void update(User user) { 
    this.jdbcTemplate.update(
      "UPDATE xyz.user SET UserName = ? password = ? WHERE id = ?"); 

一派 - 找不到場景的解決方案(?,?)。 PLS。幫助 - 提前Thx :)

下面是完整的代碼(幾乎) - 我做錯了什麼,但無法弄清楚什麼。

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 ibstechc_dev.user(user_name, user_password) VALUES (?,?)"); 

      user.getUserName(); user.getId() ; 
} 


public void delete(User user) { 
    this.jdbcTemplate.update("DELETE FROM xyz WHERE id = ?"); 
    // TODO Auto-generated method stub 

} 

public void update(User user) { 
    this.jdbcTemplate.update(
      "UPDATE xyz SET user_name = ?, user_password = ? WHERE id = ?"); 
    // TODO Auto-generated method stub 

} 

}

我堅持同樣的錯誤 - tomcat的:運行引發以下 -

SEVERE: Servlet.service() for servlet appServlet threw exception 

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您有一個錯誤在你的SQL語法中;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊第1行

回答

2

使用此代碼「)?」:

this.jdbcTemplate.update("INSERT INTO xyz.user(user_name, user_password) values (?, ?)"); 

有你的SQL語句的問題。爲了讓你的角度,你試圖做:的

INSERT INTO xyz.user(user_name, user_password values ('testuser','testpass')) 

代替

INSERT INTO xyz.user(user_name, user_password) values ('testuser','testpass')) 

希望這是有道理的?

+0

- 它是有道理的括號的方式。謝謝:)但它會引發與tomcat相同的錯誤:運行。我使用了建議的代碼。 – user2480526

+0

您必須將用戶名和密碼的值提供給值語句才能正確執行此語句。看看這個文檔:http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html#supply_values_ps – krishnang

1

我覺得這裏是sql語法問題:

INSERT INTO xyz.user(user_name, user_password values (?, ?) 

通過

INSERT INTO xyz.user(user_name, user_password) values (?, ?); 
+0

試過這個 - 但它會拋出同樣的錯誤。 – user2480526

0

你的錯誤替換這是該聲明

this.jdbcTemplate.update("INSERT INTO xyz.user(user_name, user_password values (?, ?)"); 

應該

this.jdbcTemplate.update("INSERT INTO xyz.user(user_name, user_password) values (?, ?)"); 

希望它可以幫助

乾杯

+0

給出相同的錯誤。 – user2480526

0

試試這個: - 的

this.jdbcTemplate.update("INSERT INTO xyz.user(user_name, user_password) values (?, ?)"); 

代替

this.jdbcTemplate.update("INSERT INTO xyz.user(user_name, user_password values (?, ?)"); 
+0

給出相同的錯誤。 – user2480526

1

有在更新SQL語法錯誤

public void update(User user) { 
    this.jdbcTemplate.update(
      "UPDATE xyz.user SET UserName = ? password = ? WHERE id = ?"); 

這是不更新,給一個逗號(,)這樣

public void update(User user) { 
    this.jdbcTemplate.update(
      "UPDATE xyz.user SET UserName = ? ,password = ? WHERE id = ?"); 
+0

試過了 - 引發同樣的錯誤。 – user2480526

+0

@ user2480526其中顯示錯誤的行。 – SpringLearner

+0

@ user2480526您在插入和更新時出現sql語法錯誤。我只發佈了更新部分,因爲已經有插入部分的答案。您需要更改全部。 – SpringLearner