在访问数据库中插入以零开头的值

Posted

技术标签:

【中文标题】在访问数据库中插入以零开头的值【英文标题】:Inserting values starting with zero in access database 【发布时间】:2014-10-21 13:08:56 【问题描述】:

我有一个名为 Product_Id(type string) 的字段,它的长度为 7,从 0 开始。但是在通过 VBA 插入文本类型的表字段时,没有插入零。

这是插入查询:

dbs.Execute "INSERT INTO tablename (PROD_NBR)VALUES (" & prodID & ");"  

【问题讨论】:

你能贴一些代码吗? 【参考方案1】:

我想我已经修复了错误 - 您需要用单引号声明值。

PROD_NBR是字符串类型,表中的字段是文本类型,那么插入变量应该在单引号内,双引号内,两个&符号之间声明:

dbs.Execute "INSERT INTO tablename (PROD_NBR)VALUES ('" & prodID & "');" 

【讨论】:

...让自己对 SQL 注入攻击敞开大门 @LittleBobbyTables,你有什么建议? 取决于您如何创建 prodID 变量,请参见此处:***.com/questions/6764509/… 简单的方法是检查 prodID 是否不包含特殊字符和/或遵循特定格式。当您负担得起时,准备好的陈述是很棒的。【参考方案2】:

响应@Cherry 的回答,以下方法比参数化查询(即准备好的语句)更简单。 prodID 可以安全地包含引号和其他特殊字符。

    With dbs.OpenRecordset("tablename")
        .AddNew
        .Fields("PROD_NBR") = prodID
        .Update
    End With

关于您问题的“从零开始”部分,您是否希望 PROD_NBR 始终为 7 个字符,并用前导 0 填充?然后将prodID替换为:

    Right("0000000" & prodID, 7)

【讨论】:

以上是关于在访问数据库中插入以零开头的值的主要内容,如果未能解决你的问题,请参考以下文章

在.Net中填充一个以零开头的数字

如何将元素插入向量的开头?

@@ITENTITY

如何在熊猫数据框中插入列名? [复制]

访问mysql中最后插入的行

mysql插入数据时返回出入数据ID