[英]Cannot insert the value “Null” into column 'xyz'
我在将新患者添加到我的SQL数据库时遇到问题。 这样做时,会出现以下错误,并引发SQL异常。
无法将值NULL插入表'IntelliMedDB.dbo.PatientRecord'的列'ID'中; 列不允许为空。 INSERT失败。
作为参数添加的所有值中包含的信息实际上并不为空。 它们内部都有信息。
现在,为了防止SQL注入攻击,我所有的查询都使用了参数化值。
我有一个处理所有这些问题的MS Access数据库(相同的查询,我刚刚从使用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);
非常感谢任何帮助。
谢谢!
尽管您的INSERT
语句引用了patientId
,但是您看到的错误消息却引用了ID
。
您看到此错误,因为未指定ID
值。
您应该使用表和所用数据库的定义来编辑问题。
但是,问题很明显。 PatientRecord
表具有名为id
的列,该列声明为NOT NULL
。 这意味着不允许使用NULL
值-您将看到错误。 通过不在insert
显式设置值,该值将设置为默认值。 没有默认值,该值设置为NULL
。
通常,此类列具有默认值或声明为identity
(或自动递增)。
我认为您应该修复表,以便NOT NULL
列具有默认值。 或者,为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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.