首页 > 解决方案 > 为什么我得到 SQL 错误 110 虽然列号是正确的?

问题描述

我正在尝试将对象插入本地 SQL Server 数据库。我目前面临的问题是这个错误:

System.Data.SqlClient.SqlException:“INSERT 语句中的列数少于 VALUES 子句中指定的值。VALUES 子句中的值数必须与 INSERT 语句中指定的列数相匹配。”

错误本身看起来很明显,但在下面的代码中我不再理解它了。

知道这Kategorie是表中的外键可能会有所帮助Kategorien

我正在调用的方法:

public static void Add(Artikel artikel)
{
    ExecuteSQL($"INSERT INTO [dbo].[Artikel] ([Id], [Name], [Preis], [Kategorie]) VALUES ('{artikel.ID}', '{artikel.Name}',{artikel.Preis}, (SELECT TOP 1 Id FROM Kategorien WHERE Id = '{artikel.Kategorie.ID}'))");
}

ExecuteSQL方法:

private static void ExecuteSQL(string sqlText)
{
    SqlConnection connection = Init();
    SqlCommand sqlCommand = new SqlCommand(sqlText, connection);
    sqlCommand.ExecuteNonQuery();
}

Artikel

在此处输入图像描述

希望任何人都可以帮助我。

标签: c#sql-serverdatabase

解决方案


首先,非常感谢@bschellekens 和@Steve。解决方案是您的两个评论的混合。我现在使用的 SQL 命令是:

INSERT INTO [dbo].[Artikel] ( [Id], [Name], [Preis], [Kategorie] ) VALUES ('{artikel.ID}','{artikel.Name}','{artikel.Preis}', '{artikel.Kategorie.ID}')

问题实际上是小数用逗号分隔,这混淆了 SQL 数据库。


推荐阅读