将xml文件上传到sql,关闭命令中的主键

本文关键字:命令 文件 xml sql | 更新日期: 2023-09-27 18:28:29

我搜索了谷歌和youtube,当然在这里也找不到答案。我需要打开和关闭标识插入,但不知道如何在ADO.Net项目的sql命令中做到这一点。我相信这对你们这些经验丰富的人来说一定非常容易。

我正在使用c#、visual studio和sql server的其他信息,我不知道这是否有助于缩小问题范围?

这是我在ado.net项目中尝试的sql命令。

sql = "SET IDENTITY_INSERT HomeCareVisit ON insert into HomeCareVisit values(" 
       + VisitRefNo + ",'" + PatientNo + "','" + ScheduledDateTime + "','" 
       + TreatmentInstructions + "','" + MedicalStaffID + "','" + Priority + "','" 
       + ActualVisitDateTime + "','" + TreatmentProvided + "','" + Prescription 
       + "','" + AdvisoryNotes + "'," + (FurtherVisitRequired ? "1" : "0") + " );"; 

并给出错误

违反PRIMARY KEY约束"PK_VisitRefNo"。无法在对象"dbo.HomeCareVisit"中插入重复的密钥。语句已终止。

下面的代码显示了列的数据类型

VisitRefNo = ds.Tables[0].Rows[i].ItemArray[0].ToString();
PatientNo = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[1]);
ScheduledDateTime = Convert.ToDateTime(ds.Tables[0].Rows[i].ItemArray[2]);
TreatmentInstructions = ds.Tables[0].Rows[i].ItemArray[3].ToString();
MedicalStaffID = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[4]);
Priority = ds.Tables[0].Rows[i].ItemArray[5].ToString();
ActualVisitDateTime = Convert.ToDateTime(ds.Tables[0].Rows[i].ItemArray[6]);
TreatmentProvided = ds.Tables[0].Rows[i].ItemArray[7].ToString();
Prescription = ds.Tables[0].Rows[i].ItemArray[8].ToString();
AdvisoryNotes = ds.Tables[0].Rows[i].ItemArray[9].ToString();
FurtherVisitRequired = Convert.ToBoolean(ds.Tables[0].Rows[i].ItemArray[10]);

将xml文件上传到sql,关闭命令中的主键

这是的命令

SET IDENTITY_INSERT YourTable ON

试试这个:

sql = "SET IDENTITY_INSERT HomeCareVisit ON insert into HomeCareVisit(column_names) values(" 
       + VisitRefNo + ",'" + PatientNo + "','" + ScheduledDateTime + "','" 
       + TreatmentInstructions + "','" + MedicalStaffID + "','" + Priority + "','" 
       + ActualVisitDateTime + "','" + TreatmentProvided + "','" + Prescription 
       + "','" + AdvisoryNotes + "'," + FurtherVisitRequired + " );";

其中column_names是按插入顺序排列的表列列表。

我认为您在表不期望的地方传递字符串,比如TreatmentProvided列(根据名称,我假设您传递True/False,但不是作为字符串)。

相关文章: