不能插入值“空”;进入'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);

感谢您的帮助。

谢谢!

不能插入值“空”;进入'xyz'

你应该用你正在使用的表和数据库的定义来编辑你的问题。

然而,问题很明显。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