【问题标题】:c# Access inserting new data to table with autonumberc#访问使用自动编号向表中插入新数据
【发布时间】:2011-05-28 21:29:43
【问题描述】:

我有一个包含这些列的表格:

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 很烦人。

【问题讨论】:

    标签: c# ms-access


    【解决方案1】:

    NULL 值是由于类型转换问题。很可能您将数据传递到无法通过 Access 转换为预期数据类型的字段之一。我猜您正在将一个值传递给 CategoryID,该值没有转换为正确的数字。 TCKimlinkNo 字段也可能如此。我相信如果字符串字段对于传入的值来说太短,它只会截断它们,所以我怀疑这是问题所在。

    另外,不要忘记检查数字字段的大小。您输入的数字是否大于允许的数字?您是否在期望整数时发送十进制数据?

    除非您尝试写入自动编号,否则自动编号不会成为问题(您似乎没有这样做。

    【讨论】:

    • 我再次查找,问题是“TCKimlikNo”列,我试图插入一个像“123456789012”这样的数字,对于该列来说太大了。所以它给了我错误。感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多