【发布时间】:2015-07-19 00:50:14
【问题描述】:
我遇到了问题,很高兴收到您的反馈。 在 MySQL 中更新我的表的数据时,出现以下消息:
列数与第 1 行的值数不匹配
表格是:
IdUsuariINT NOT NULL AUTO_INCREMENT,NicknameVARCHAR(50) 非空,DataRegistre日期不为空,DataDarrerAcces日期不为空,NumLlistesINT NOT NULL DEFAULT 0,PasswordVARCHAR(10) 非空,AdminINT NOT NULL, 主键 (IdUsuari)
还有代码:
public static void RegistreUsuari(int port, String ip, String nickname, String password) throws SQLException{ /*Creem un usuari*/
java.util.Date dt = new java.util.Date();
Connection conn = getConnection(port,ip);
Statement st = null;
st = conn.createStatement();
String query = new String();
/*Data*/
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentTime = sdf.format(dt);
query = "INSERT INTO usuari(Nickname, Password, DataRegistre, DataDarrerAcces, NumLlistes, Admin) VALUES('" + nickname +"','"+password+"','"+currentTime+"','"+currentTime+"',0)";
st.executeUpdate(query); }
和
Database.RegistreUsuari(port, ip, "Elder", "hola");
提前谢谢你!
【问题讨论】:
-
除了以明文形式存储密码通常是个坏主意之外,您真的应该查看
PreparedStatement以获取任何类型的用户输入! -
我投票决定将此问题作为离题结束,因为您的查询中有 6 列 6 个值,这就是答案。
-
@Hanky웃Panky 我不明白这如何使它偏离主题,这只是意味着这就是问题所在,正如您在回答中已经说明的那样
-
您应该使用
PreapredStatement,有关详细信息,请参阅Using Prepared Statements -
@Dragondraikk 在我看来(可能是错误的),这只是一个错字,不是问题;因此,轻的心脏密切投票。否则,如果您搜索这个非常错误的消息,这个问题包含有
408重复的问题,这本身就是一个足够大的原因。