将数据插入关系表

Posted

技术标签:

【中文标题】将数据插入关系表【英文标题】: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 你试过我的解决方案了吗 【参考方案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。

【讨论】:

以上是关于将数据插入关系表的主要内容,如果未能解决你的问题,请参考以下文章

将数据从一个表插入到一个单列另一个没有关系的表

使用 Spring Boot 将数据插入关系表(多对多)

在 laravel 中插入关系

Mysql外键和表关系

如何编写python程序将csv数据文件导入关系数据库而不插入重复条目

Android Room:使用 Room 插入关系实体