gpt4 book ai didi

java - jsp中有关使用准备好的语句进行mysql更新的异常

转载 作者:行者123 更新时间:2023-11-29 19:03:07 26 4
gpt4 key购买 nike

java.sql.SQLException:参数索引超出范围(1 > 参数数量,为 0)。

我正在尝试使用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();
%>

提前谢谢您。

最佳答案

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

占位符周围没有单引号。否则,它们是文字字符串。

关于java - jsp中有关使用准备好的语句进行mysql更新的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43708239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com