You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server插入报错求助:列数与VALUES值数量不匹配

解决SQL INSERT语句列数与值不匹配的问题

首先看你遇到的错误提示:

Msg 109, Level 15, State 1, Line 2 There are more columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement.

这个错误指向的问题很清晰:你在INSERT的列列表里声明了11个字段,但VALUES里只提供了8个值,数量完全不匹配。另外还有个关键细节容易被忽略——Compte_Id是IDENTITY自增列,数据库会自动帮你生成这个主键值,根本不需要手动插入它。

问题拆解

  1. 你写的INSERT列列表:[Compte_Id], [Compte_Nom], [Compte_Prenom], [Compte_Date_Naissance], [Compte_Rue], [Compte_Telephone], [Compte_Mail], [Compte_Pseudo], [Compte_MotDePasse], [Compte_Compte_Ogrine],[Compte_Argent_reel] 一共11个字段
  2. VALUES里的值:'ui', 'ui', '1996-06-25', 'ui', '09', 'ui', 'ui', 'ui' 只有8个,差了Compte_MotDePasse、Compte_Compte_Ogrine、Compte_Argent_reel对应的值

修正后的INSERT语句

我给你两种可行的修正方案:

方案1:手动指定所有字段的值(包含默认值字段)

既然Compte_Compte_Ogrine和Compte_Argent_reel有默认值0,你可以手动传入这个值,同时去掉不需要插入的Compte_Id:

INSERT INTO Compte 
([Compte_Nom], [Compte_Prenom], [Compte_Date_Naissance], [Compte_Rue], [Compte_Telephone], [Compte_Mail], [Compte_Pseudo], [Compte_MotDePasse], [Compte_Compte_Ogrine],[Compte_Argent_reel]) 
VALUES ('ui', 'ui', '1996-06-25', 'ui', '09', 'ui', 'ui', '你的密码内容', 0, 0)

方案2:利用默认值,只插入必填字段

因为Compte_Compte_Ogrine和Compte_Argent_reel已经设置了DEFAULT 0,可以直接把这两个字段从INSERT列列表里删掉,数据库会自动帮你填充默认值:

INSERT INTO Compte 
([Compte_Nom], [Compte_Prenom], [Compte_Date_Naissance], [Compte_Rue], [Compte_Telephone], [Compte_Mail], [Compte_Pseudo], [Compte_MotDePasse]) 
VALUES ('ui', 'ui', '1996-06-25', 'ui', '09', 'ui', 'ui', '你的密码内容')

C#代码里的额外提醒

在C#程序中操作数据库时,绝对不要直接拼接SQL字符串,一定要用参数化查询,避免SQL注入风险。给你一个简单的示例:

string insertSql = @"INSERT INTO Compte 
(Compte_Nom, Compte_Prenom, Compte_Date_Naissance, Compte_Rue, Compte_Telephone, Compte_Mail, Compte_Pseudo, Compte_MotDePasse) 
VALUES (@Nom, @Prenom, @DateNaissance, @Rue, @Telephone, @Mail, @Pseudo, @MotDePasse)";

using (SqlConnection conn = new SqlConnection("你的数据库连接字符串"))
{
    SqlCommand cmd = new SqlCommand(insertSql, conn);
    // 添加参数,避免SQL注入
    cmd.Parameters.AddWithValue("@Nom", "ui");
    cmd.Parameters.AddWithValue("@Prenom", "ui");
    cmd.Parameters.AddWithValue("@DateNaissance", new DateTime(1996, 6, 25));
    cmd.Parameters.AddWithValue("@Rue", "ui");
    cmd.Parameters.AddWithValue("@Telephone", "09");
    cmd.Parameters.AddWithValue("@Mail", "ui");
    cmd.Parameters.AddWithValue("@Pseudo", "ui");
    cmd.Parameters.AddWithValue("@MotDePasse", "你的密码内容");
    
    conn.Open();
    cmd.ExecuteNonQuery();
}

内容的提问来源于stack exchange,提问作者sok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:55:17