【问题标题】:Error "Column name or number of supplied values does not match table definition"错误“列名或提供的值的数量与表定义不匹配”
【发布时间】:2018-11-24 21:48:14
【问题描述】:

我目前正在学习使用数据库和 SQL。我收到一个似乎无法解决的错误。标题中说明了我遇到的错误。

这是我的表定义:

CREATE TABLE [dbo].[Filmstbl] 
(
    [Id]             INT            NOT NULL IDENTITY,
    [FilmTitel]      NVARCHAR (50)  NULL,
    [Duratie]        NVARCHAR (50)  NULL,
    [Genre]          NVARCHAR (50)  NULL,
    [Director]       NVARCHAR (50)  NULL,
    [Acteur]         NVARCHAR (50)  NULL,
    [JaarVanUitgave] NVARCHAR (50)  NULL,
    [Omschrijving]   NVARCHAR (MAX) NULL,
    [GastID]         INT            NULL,

    PRIMARY KEY CLUSTERED ([Id] ASC)
);

我使用的查询如下所示:

public void AddFilms(string titel, string lengte, string genre, string director, string acteur, string jaaruitgave, string omschrijving, int PersoonID)
{
    using (SqlConnection connection = new SqlConnection(ConnectionString))
    {
        connection.Open();

        string query = "INSERT INTO Filmstbl Values (@FilmTitel, @Duratie, @Genre, @Director, @Acteur, @JaarVanUitgave, @Omschrijving, @GastID)";

        using (SqlCommand addfilms = new SqlCommand(query, connection))
        {
            addfilms.Parameters.AddWithValue("@FilmTitel", titel);
            addfilms.Parameters.AddWithValue("@Duratie", lengte);
            addfilms.Parameters.AddWithValue("@Genre", genre);
            addfilms.Parameters.AddWithValue("@Director", director);
            addfilms.Parameters.AddWithValue("@Acteur", acteur);
            addfilms.Parameters.AddWithValue("@JaarVanUitgave", jaaruitgave);
            addfilms.Parameters.AddWithValue("@Omschrijving", omschrijving);
            addfilms.Parameters.AddWithValue("@GastID", PersoonID);
            addfilms.ExecuteNonQuery();
        }
    }
}

数据类型几乎总是一个随机字符串,除了最后一个参数是一个随机整数。

private void FilmToevoegenBtn_Click(object sender, EventArgs e)
{
    sql.AddFilms(FilmTitelTBox.Text, FilmLengteTBox.Text, FilmGenreTBox.Text, FilmDirectorTBox.Text, FilmActeurTBox.Text, FilmJaarUitgaveTBox.Text, FilmOmschrijvingTBox.Text, gebruiker.GebruikerID);
    UpdateListBoxes();
}

我以同样的方式将数据添加到另一个表中没有问题,所以我想知道为什么它不适用于这个表。我希望有人知道答案。谢谢。

【问题讨论】:

  • 请粘贴异常跟踪
  • @henocsalinas 我现在不知道那是什么,如果你的意思是我在运行时遇到的错误,它只是与我的问题标题相同。
  • 我现在尝试在 VALUES 之前声明它们,但又出现了一个错误。 'System.Data.SqlClient.SqlException: '无法将值 NULL 插入到列 'Id' 中,表 'C:\USERS\ALI\SOURCE\REPOS\KILLERAPP\KILLERAPP\DATABASE1.MDF.dbo.Filmstbl';列不允许空值。插入失败。该语句已终止。'' Id 已将身份规范设置为 true。这不应该自己添加吗?
  • 这是明确列出列的好处。它为您提供更好的错误消息。

标签: c# sql-server


【解决方案1】:

请重新检查表ID字段。它应该是自动递增1。例如:

[Id] [int] IDENTITY(1,1)

【讨论】:

  • Id 字段的身份规范设置为 true。以某种方式添加 (1,1) 修复了它。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-10-20
  • 2022-09-28
  • 2020-11-30
  • 1970-01-01
  • 1970-01-01
  • 2018-12-24
  • 2010-11-12
  • 2021-11-06
相关资源
最近更新 更多