将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]);
这是的命令
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,但不是作为字符串)。