不能插入值“空”;进入'xyz'
本文关键字:进入 xyz 插入 不能 | 更新日期: 2023-09-27 18:19:15
我有一个问题,添加新的病人到我的SQL数据库。当我这样做时,出现以下错误,并抛出SQL异常。
不能在表'IntelliMedDB.dbo.PatientRecord'列'ID'中插入NULL值;列不允许为空。插入失败。
作为参数添加的所有值中包含的信息实际上不是 null。它们里面都有信息。
现在,为了防止SQL注入攻击,我所有的查询都使用参数化值。
我有一个MS Access DB处理所有这些好(相同的查询,我刚刚从使用OleDBCommand
切换到SqlCommand
。除此之外,没有任何改变)。
下面是"INSERT INTO"语句,后面跟着一个参数化查询,这样你们都可以看到我做了什么:
INSERT INTO PatientRecord (patientID, firstName, lastName, patientGender, dateOfBirth, residentialAddress, postalAddress, nationalHealthNumber, telephoneNumber, cellphoneNumber)
VALUES (@patientIDNumber, @recepPatFirstName, @recepPatLastName, @recepPatGender, @recepPatDateOfBirth, @recepPatResidentialAddress, @recepPatPostalAddress, @recepNHINumber, @recepPatTelephone, @recepPatCellularNumber)";
(我为这个问题的长度道歉)。
现在,其中一个参数化值:
recepPatRecordCommand.Parameters.AddWithValue("@recepPatFirstName", patRecepFirstName);
感谢您的帮助。
谢谢!
你应该用你正在使用的表和数据库的定义来编辑你的问题。
然而,问题很明显。PatientRecord
表有一列叫做id
,它被声明为NOT NULL
。这意味着不允许使用NULL
值——您将得到所看到的错误。通过不在insert
中显式设置值,该值被设置为默认值。如果没有默认值,则设置为NULL
通常,这样的列具有默认值或被声明为identity
(或自动递增)。
我认为你应该可能修复表,使NOT NULL
列有默认值。或者,为id
列输入一个适当的值。为此,将id
添加到列列表,然后在值列表中添加相应的值。
虽然您的INSERT
语句指的是patientId
,但您看到的错误消息指的是ID
。
您看到这个错误是因为没有指定ID
的值
Open your table in Design
Select your column and go to Column Properties
Under Indentity Specification, set (Is Identity)=Yes and Indentity Increment=1