![](/img/trans.png)
[英]Error “Column name or number of supplied values does not match table definition”
[英]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.