【问题标题】:Insert Data Into Relational tables将数据插入关系表
【发布时间】:2014-01-18 08:58:08
【问题描述】:

我已经制作了关系表的数据库,表的访问关系如下图

当我尝试使用以下查询向表中插入数据时

    qrY = "INSERT INTO `reg_table` (`Regn_ID`, `Full_name`, `Addr`, `City`, `PIN Code`, `Email`, `Contact_No`, `Fee`, `payment_type`, `checkordraft_No`, `regn_Date`, `conTctID`) VALUES "
    qrY += "(NULL, "
    qrY += "'Bb',"
    qrY += "'Bb',"
    qrY += "'Bb',"
    qrY += "'12312',"
    qrY += "'Bb',"
    qrY += "'Bb',"
    qrY += "'Bb',"
    qrY += "'Bb',"
    qrY += "'Bb',"
    qrY += "'18-04-2014',"
    qrY += "'1'"
    qrY += " )""

它给了我错误“您试图将 Null 值分配给不是 Variant 数据类型的变量。”我不知道错误是什么以及如何解决,所以请给我任何解决方案。 . . .

或者只是告诉它是因为关系表或数据类型错误而导致的

【问题讨论】:

  • 任何解决方案:阅读 ms 访问支持的列类型,并始终使用参数(任何 ado.net 示例都应该有这些),而不是查询值的字符串连接。
  • Regn_ID 是自动编号字段吗?
  • 是的@Steve,它是自动增量
  • 然后不要给它设置任何值,把字段列表中的字段名去掉。自动编号由数据库代码直接生成,您不应尝试将其设置为任何值
  • @Steve 你试过我的解决方案了吗

标签: vb.net ms-access


【解决方案1】:

Regn_ID 是导致错误的自动递增字段。

这样试试

qrY = "INSERT INTO `reg_table` (`Full_name`, `Addr`, `City`, `PIN Code`, `Email`, `Contact_No`, `Fee`, `payment_type`, `checkordraft_No`, `regn_Date`, `conTctID`) VALUES "
    qrY += "('Bb',"
    qrY += "'Bb',"
    qrY += "'Bb',"
    qrY += "'12312',"
    qrY += "'Bb',"
    qrY += "'Bb',"
    qrY += "'Bb',"
    qrY += "'Bb',"
    qrY += "'Bb',"
    qrY += "'18-04-2014',"
    qrY += "'1'"
    qrY += " )""

【讨论】:

    【解决方案2】:

    如果 Regn_ID 是自动编号,则不要为其设置任何值并删除字段列表中的字段名称。自动编号由数据库代码直接生成,您不应尝试将其设置为任何值。

    但是我认为您的代码还有其他问题,因为您不应该在需要整数或日期的地方传递字符串。

    正确的语法应该是这样的

    qrY = "INSERT INTO reg_table (Full_name, Addr, City, PIN Code, Email, Contact_No," & _
          "Fee, payment_type, checkordraft_No, regn_Date, conTctID) VALUES " & _
          "'Bb','Bb','Bb',12312,'Bb','Bb','Bb','Bb','Bb',#18-04-2014#,1)"
    

    但这仍然可能是不正确的,因为我真的猜不出 Pin_Code、Contact_No、Fee、payment_type、checkordraft_No 的数据类型是什么。如果它们不是字符串,则不要将值括在单引号中。

    但是,这个示例确实是人为的,因为您传递了测试值,但在实际工作场景中,您有值的变量,并且您需要使用参数化查询方法,其中每个参数都应设置为数据库所需的正确数据类型。

    【讨论】:

    • 但是regn_date是数据库中的字符串?
    【解决方案3】:

    Steve 和 Vignesh 的解决方案是正确的,但我还要补充一点,您永远不能将主键设置为 NULL。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-07
      • 2016-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多