插入时出错:列名或提供的值数与表定义不匹配

本文关键字:不匹配 定义 出错 插入 | 更新日期: 2023-09-27 18:29:58

当我运行此代码时,它会返回一个错误。我正在尝试将数据从我的输入表单中获取到我的数据库

这是表模式:

CREATE TABLE [dbo].[Students] (
  [Id]       INT            IDENTITY (1, 1) NOT NULL,
  [Name]     NVARCHAR (MAX) NOT NULL,
  [Email]    NVARCHAR (MAX) NOT NULL,
  [Password] NVARCHAR (MAX) NOT NULL,
  CONSTRAINT [PK_Students] PRIMARY KEY CLUSTERED ([Id] ASC)
);
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "INSERT INTO Students VALUES ('"+TextBox1.Text+ "','" +TextBox2.Text+ "','" +TextBox3.Text+ "','" +TextBox4.Text+"')";
cmd.ExecuteNonQuery();
con.Close();

插入时出错:列名或提供的值数与表定义不匹配

如果说INSERT INTO而不列出要插入SQL中的字段的名称,则假设为行中的每个字段插入一个值。因此,如果您的表有四列以上的列,就会出现错误。

如果这是问题所在,那么您只需要指定要插入的字段,即您需要以下格式的插入语句:

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal','Tom B. Erichsen','Skagen 21','Stavanger','4006','Norway')

上面的例子来自这里。

然而,最好使用参数化查询。