簡體   English   中英

為什么返回的列名或提供的值數與表定義不匹配?

[英]Why returning column name or number of supplied values does not match table definition?

我正在使用C#,並且想在我的SQL Server數據庫中插入一些值,這是我的數據庫定義:

CREATE TABLE [dbo].[Users]
(
    [Id] INT NOT NULL IDENTITY (1,1) PRIMARY KEY DEFAULT 1000, 
    [FullName] VARCHAR(50) NULL, 
    [Pseudo] VARCHAR(50) NULL, 
    [Mail] VARCHAR(50) NULL, 
    [Password] VARCHAR(50) NULL, 
    [Organism] VARCHAR(50) NULL, 
    [RegistredAt] DATETIME NULL, 
    [Confirmed] INT NULL
)

這就是我試圖使用C#將值插入數據庫的方式:

 SqlCommand command = new SqlCommand("INSERT INTO Users VALUES(@FullName, @Pseudo, @Mail, @Password, @Organism, @RegistredAt, @Confirmed)", con);

 command.Parameters.AddWithValue("@FullName", FullName);
 command.Parameters.AddWithValue("@Pseudo", Pseudo);
 command.Parameters.AddWithValue("@Mail", Mail);
 command.Parameters.AddWithValue("@Password", Password);
 command.Parameters.AddWithValue("@Organism", Organism);
 command.Parameters.AddWithValue("@RegistredAt", DateTime.Now);
 command.Parameters.AddWithValue("@Confirmed", Confirmed);

 con.Open();
 int i = command.ExecuteNonQuery();
 con.Close();

當我執行代碼時,指令command.ExecuteNonQuery(); 返回一個異常:

列名或提供的值數與表定義不匹配

錯誤在哪里?

可能 需要在查詢中提供列名:

INSERT INTO Users (FullName, Pseudo, Mail, Password, Organism, RegistredAt, Confirmed) 
VALUES (@FullName, @Pseudo, @Mail, @Password, @Organism, @RegistredAt, @Confirmed)

如果不提供列名,則假定您要使用所有列,包括ID字段。 這就是錯誤的原因-您正在為具有8列的表提供7個值。 由於使用的是子集,因此需要指定它們。

另外,我不確定您是否處於可以修復它的階段,但是您在“ RegistredAt”中有錯字-應該是“ Regist e redAt”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM