【问题标题】:Java & MySQL - Column count doesn't match value count at row 1Java & MySQL - 列数与第 1 行的值数不匹配
【发布时间】:2015-07-19 00:50:14
【问题描述】:

我遇到了问题,很高兴收到您的反馈。 在 MySQL 中更新我的表的数据时,出现以下消息:

列数与第 1 行的值数不匹配

表格是:

IdUsuari INT NOT NULL AUTO_INCREMENT, Nickname VARCHAR(50) 非空, DataRegistre 日期不为空, DataDarrerAcces 日期不为空, NumLlistes INT NOT NULL DEFAULT 0, Password VARCHAR(10) 非空, Admin INT 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 重复的问题,这本身就是一个足够大的原因。

标签: java mysql


【解决方案1】:

您正在尝试将 5 个值插入到具有 6 列的表中。您没有为 NumLlistes 指定值。

如果您希望使用默认值,请不要在插入语句中指定NumLlistes 列:

query = "INSERT INTO usuari(Nickname, Password, DataRegistre, DataDarrerAcces, Admin) VALUES('" + nickname +"','"+password+"','"+currentTime+"','"+currentTime+"',0)";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多