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

时间:2016-01-12 20:50:43

标签: c# asp.net input contact-form

当我运行此代码时,它会返回错误。我试图将输入表单中的数据导入我的数据库

这是表架构:

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();

1 个答案:

答案 0 :(得分:4)

通过说INSERT INTO而不列出要插入SQL的字段的名称,假设您要为行中的每个字段插入一个值。因此,如果您的表格有四列以上,您将收到该错误。

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

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

以上示例from here

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