我正在使用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();
返回异常:
列名或提供的值数与表定义不匹配
错误在哪里?
答案 0 :(得分:3)
你可能需要在你的查询中提供列名:
performTagMatching(tagArray: string[]): any {
for (let tagElem of tagArray) {
// create search request for tag lookup
const searchRequest: SearchRequest = {
term: tagElem,
operation: 'exact'
};
this.callMactchFunc(tagElem)
}
}
private callMactchFunc(tagElem) {
this.apiClientService.findTagByTitle(searchRequest).subscribe(
(response) => {
// Check tag search result for existence of tag
if (response.length == 0) {
// No tag found -> create tag and add to search tag list
this.searchFilter['tags'].push(this.saveNewTag(tagElem));
} else {
// Tag found -> add to search tag list
this.searchFilter['tags'].push(response[0]);
}
},
(error) => {
console.log(error);
}
);
}
如果您不提供列名,则假定您要使用所有列,包括ID字段。这就是错误的原因 - 您为一个包含8列的表提供了7个值。由于您使用的是子集,因此需要指定它们。
此外,我不确定你是否处于可以修复的阶段,但你在“RegistredAt”中输入错误 - 它应该是“注册 e redAt”。< / p>