2017-04-30 16 views
0

java.sql.SQLException:パラメータインデックスが範囲外です(1>パラメータ数、0)。jspでのmysqlの更新に関する準備済みの文の使用

私はjspを使って動的Webプロジェクトを試しています。PreparedStatmentオブジェクトでmysqlデータベースを更新しようとすると、この例外が発生します。多くのスレッドでは、使用していないことを意味しています索引は「?」を参照するインデックスですが、これは私の場合ではないと思います。これは愚かな質問ではないと思いますが、私はエラーを見つけることができません。ここ

は、コードは次のとおりです。

package classes; 

import java.sql.DriverManager; 
import java.sql.SQLException; 

import com.mysql.jdbc.Connection; 
import com.mysql.jdbc.PreparedStatement; 

public class DataUser { 
    private String username; 
    private String name; 
    private String surname; 
    private String email; 
    private String wallet; 
    private String password; 
    private String coin; 
    private Connection conexion; 
    private PreparedStatement preparedSt; 
    public DataUser(String username, String name, String surname, String email, String wallet, String password, String coin) throws ClassNotFoundException{ 

     this.username = username; 
     this.name = name; 
     this.surname = surname; 
     this.email = email; 
     this.wallet = wallet; 
     this.password = password; 
     this.coin = coin; 

     Class.forName("com.mysql.jdbc.Driver"); 

     try { 
      this.conexion = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/pruebajsp", "root", ""); 
      this.preparedSt = (PreparedStatement) conexion.prepareStatement("INSERT INTO USERS (USERNAME, NAME, SURNAME, EMAIL, WALLET, PASSWORD, INVESTMENT_COIN) VALUES ('?', '?', '?', '?', '?', '?', '?')"); 
     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getSurname() { 
     return surname; 
    } 

    public void setSurname(String surname) { 
     this.surname = surname; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public String getWallet() { 
     return wallet; 
    } 

    public void setWallet(String wallet) { 
     this.wallet = wallet; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public String getCoin() { 
     return coin; 
    } 

    public void setCoin(String coin) { 
     this.coin = coin; 
    } 

    @Override 
    public String toString() { 
     return "DataUser [username=" + username + ", name=" + name + ", surname=" + surname + ", email=" + email 
       + ", wallet=" + wallet + ", password=" + password + ", coin=" + coin + "]"; 
    } 




    public void updateDB(){ 
     try{ 
      this.preparedSt.setString(1, this.username); 
      this.preparedSt.setString(2, this.name); 
      this.preparedSt.setString(3, this.surname); 
      this.preparedSt.setString(4, this.email); 
      this.preparedSt.setString(5, this.wallet); 
      this.preparedSt.setString(6, this.password); 
      this.preparedSt.setString(7, this.coin); 
      this.preparedSt.executeUpdate(); 
     }catch(SQLException e){ 
      e.printStackTrace(); 
     } 
    } 

} 

私はJSPファイルで行うことである。

<% 
    DataUser user = new DataUser(request.getParameter("username"), request.getParameter("name"), request.getParameter("surname"), 
      request.getParameter("email"), request.getParameter("wallet"), request.getParameter("password"), 
      request.getParameter("coin")); 
    user.updateDB(); 
%> 

事前にお願いします。

答えて

0
values (?, ?, ?, ...) 

プレースホルダの周りに一重引用符を使用しません。それ以外の場合は、リテラル文字列です。

+0

OMGこれはちょうど愚かなエラーでした、ありがとう、あなたの時間の無駄にごめんなさいD: –

関連する問題