我有一个包含这些列的表:
PersonID AutoNumber PrimaryKey
TCKimlikNo Number
PersonName Text
PersonSurname Text
Address Text
Birthdate Text
CategoryID Number
当我尝试从c#插入值时,我正在使用此查询:
INSERT INTO Person(TCKimlikNo, PersonName, PersonSurname, Adress, BirthDate, CategoryID)
VALUES(@tcKimlikNo, @personName, @personSurname, @adress, @birthDate, @categoryId)
但它说:
“Microsoft Access设置1 由于类型转换,字段为Null 失败了,它没有添加0条记录 由于密钥违规而到桌面,0 由于锁定违规而记录的 由验证规则引起的0条记录 违反“。
我认为由于该自动编号列而发生错误。访问尝试向其插入空值,但字段不会让它。在SQL中,此查询完美运行。但Access只是令人讨厌。
答案 0 :(得分:1)
NULL值是由于类型转换问题。很可能您将数据传递到您的某个字段中,这些字段无法通过Access转换为它所期望的数据类型。我猜你正在传递一个没有转换为正确数字的CategoryID的值。对于TCKimlinkNo字段也可以这样。我相信如果字符串字段对于传入的值来说太短,它只会截断它们,所以我怀疑这是问题。
另外,不要忘记检查您的号码字段的大小。您输入的号码是否大于允许的号码?您是否在预期整数时发送十进制数据?
自动编号不会成为问题,除非您尝试写入它(您似乎没有这样做。