我在将新病人添加到我的SQL数据库时遇到了问题。当我这样做时,会出现以下错误,并抛出SQL异常。
无法将值NULL插入列' ID',table' IntelliMedDB.dbo.PatientRecord&#39 ;;列不允许空值。 INSERT失败。
作为参数添加的所有值中包含的信息不是实际 null。他们都有信息。
现在,为了防止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);
感激不尽的任何帮助。
谢谢!
答案 0 :(得分:2)
虽然您的INSERT
声明引用了patientId
,但您看到的错误消息是ID
。
您看到此错误,因为未指定ID
的值。
答案 1 :(得分:2)
您应该使用表格的定义和您正在使用的数据库来编辑您的问题。
然而,问题非常清楚。 PatientRecord
表有一个名为id
的列,声明为NOT NULL
。这意味着不允许NULL
值 - 您会看到错误。如果未在insert
中明确设置值,则将值设置为默认值。没有默认值,该值设置为NULL
。
通常,此类列具有默认值或声明为identity
(或自动递增)。
我认为您应该修复该表,以便NOT NULL
列具有默认值。或者,为id
列添加适当的值。为此,您可以将id
添加到列列表中,然后添加值列表中的相应值。
答案 2 :(得分:0)
Open your table in Design
Select your column and go to Column Properties
Under Indentity Specification, set (Is Identity)=Yes and Indentity Increment=1