无法插入值" Null"进入专栏' xyz'

时间:2014-08-22 11:36:58

标签: c# sql

我在将新病人添加到我的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);

感激不尽的任何帮助。

谢谢!

3 个答案:

答案 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