c# - 为什么我得到 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
:
希望任何人都可以帮助我。
解决方案
首先,非常感谢@bschellekens 和@Steve。解决方案是您的两个评论的混合。我现在使用的 SQL 命令是:
INSERT INTO [dbo].[Artikel] ( [Id], [Name], [Preis], [Kategorie] ) VALUES ('{artikel.ID}','{artikel.Name}','{artikel.Preis}', '{artikel.Kategorie.ID}')
问题实际上是小数用逗号分隔,这混淆了 SQL 数据库。
推荐阅读
- amazon-web-services - 在 yaml 中的变量名中使用破折号
- ssms - SSMS 导入向导无法加载带有日期和时间的 CSV 日期列(以毫秒为单位)
- java - java swing - 如何在下一个使用的顶部绘制一个矩形?
- python-3.x - 如何使用 tkinter 按钮执行 python 文件?
- video-streaming - 如何在 webrtc 中提高质量并降低帧速率?
- c++ - 在 Windows 上挂起 printf
- python-3.x - 如何使用 python 3.8 获取 AWS S3 对象位置/URL?
- java - Eclipse找不到maven项目的主类
- mysql - SQL 查询执行很慢:需要优化
- php - Laravel 7.尝试方法返回false