繁体   English   中英

无法将值“ Null”插入列“ xyz”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM