gpt4 book ai didi

java - 无法将值插入数据库

转载 作者:行者123 更新时间:2023-11-29 05:57:01 28 4
gpt4 key购买 nike

我已经创建了注册 Jsp 和 Servlet。当我使用表单插入值时,未插入的值以及 Apache 日志中出现的一些异常。任何人都可以帮助我找到实际的错误。在我的查询或连接中??? ?

Jul 27, 2012 9:00:30 PM com.asiahospital.db.DataPersistor registerUser
SEVERE: null
java.sql.SQLException: Column count doesn't match value count at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2618)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2568)
at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:842)
at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:681)
at com.example.db.DataPersistor.registerUser(DataPersistor.java:29)
at com.example.servlet.RegistrationServlet.doPost(RegistrationServlet.java:40)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at [...]

违规方法:

public void registerUser(User user) { 
try {
Statement stmt = con.createStatement();
String query = "INSERT INTO user VALUES ('" + user.getUserName()+ "','"
+ user.getPassword() + "','" + user.getFirstName() + "','"
+ user.getLastName() + "','" + user.getEmail() + "','false')";
stmt.execute(query);
} catch (SQLException ex) {
Logger.getLogger(DataPersistor.class.getName()).log(Level.SEVERE, null, ex);
}
}

最佳答案

很可能您的查询看起来像这样:

INSERT INTO my_table(A, B, C) VALUES ('a', 'b')

或者像这样(my_table 仍然有三列)

INSERT INTO my_table VALUES ('a', 'b')

很明显,这行不通,因为您必须提供与列一样多的值。根据您的评论,我怀疑这是第二种情况。您有一个预先存在的 SQL 语句,并且有人从您的 user 表中添加/删除了一列,导致此 SQL 语句无效

关于java - 无法将值插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11691194/

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