gpt4 book ai didi

c# - 当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'candidatedetails' 中为标识列插入显式值

转载 作者:太空宇宙 更新时间:2023-11-03 22:44:02 24 4
gpt4 key购买 nike

我遇到了这个错误。我该如何解决?

这是我创建的查询

CREATE TABLE [dbo].[candidatedetails](
[id] [int] IDENTITY(1,1) NOT NULL,
[cname] [varchar](50) NULL,
[pname] [varchar](50) NULL,
[cno] [varchar](50) NULL,
[pno] [varchar](50) NULL,
[address] [varchar](max) NULL,
[year] [varchar](50) NULL,
[class] [varchar](50) NULL,
[branch] [varchar](50) NULL,
[totalfees] [numeric](18, 0) NULL,
[paidfees] [numeric](18, 0) NULL,
[pendingfees] [numeric](18, 0) NULL,
[idno] [int] NULL,
CONSTRAINT [PK_candidatedetails] PRIMARY KEY CLUSTERED
(
[id] ASC
)

这是代码

SqlConnection con = new SqlConnection(constring);
con.Open();
if(con.State==ConnectionState.Open)
{
string q = "INSERT INTO candidatedetails(id,cname,pname,cno,pno,address,year,class,branch,totalfees,paidfees,pendingfees,idno) VALUES ('','"+cname+"','"+pname+"','"+cno+"','"+pno+"','"+address+"','"+year+"','"+class1+"','"+branch+"','"+totalfees+"','"+paidfees+"','"+pendingfees+"','"+idno+"')";
SqlCommand com = new SqlCommand(q, con);
com.ExecuteNonQuery();
MessageBox.Show("Candidate is registered");
}

我在“com.executenonquery()”行收到此错误

最佳答案

您的 id 列声明为 IDENTITY,因此它会在插入时自动生成一个值。您不必将它包含在插入列列表中,也不必为其提供值。

string q = "INSERT INTO candidatedetails(cname,pname,cno,pno,address,year,class,branch,totalfees,paidfees,pendingfees,idno) VALUES ('"+cname+"','"+pname+"','"+cno+"','"+pno+"','"+address+"','"+year+"','"+class1+"','"+branch+"','"+totalfees+"','"+paidfees+"','"+pendingfees+"','"+idno+"')";

此外,请注意像这样动态生成 SQL,它容易出错(例如,如果您的值之一有未转义的单引号)和SQL 注入(inject)如果值来自用户输入或其他不安全的来源。

您应该创建一个接收这些参数的存储过程,或者使用 sp_executesql 构建 sql。

关于c# - 当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'candidatedetails' 中为标识列插入显式值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50833215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com