【问题标题】:ORA-00904: "STAFFID": invalid identifier [closed]ORA-00904: "STAFFID": 无效标识符 [关闭]
【发布时间】:2014-12-16 09:26:56
【问题描述】:

我已经创建了一个表Audit。当我尝试使用此脚本插入表格时:

sql = "Insert into "& myAudit &" (Date, Time, AuditCode , DetailsCode, CurData1, CurData2, CurData3, PrevData1, PrevData2 , PrevData3 , StaffID) values ('"& myTarikh &"','"& myMasa & "','" & myAuditCode & "', '" & myDetailsCode & "','"& myCurData1 &"','" & myCurData2 & "','" & myCurData3 & "','" & myPrevData1 & "','" & myPrevData2 & "','" & myPrevData3 & "', '" & myUserID &"')"

它显示:

用于 ODBC 驱动程序的 Microsoft OLE DB 提供程序错误“80040e14”

[Oracle][ODBC][Ora]ORA-00904:“STAFFID”:标识符无效

如何解决这个错误?

【问题讨论】:

    标签: sql asp.net oracle


    【解决方案1】:

    停止,使用parameterized queries!在其中一个字段中使用' 时,您当前的代码容易受到黑客攻击和错误。使用这样的东西:

    string query = "insert into myAudit (date, time, auditcode, ...) values (?, ?, ?, ...)";
    
    OdbcCommand command = new OdbcCommand(query, connection);
    
    command.Parameters.Add("?").Value = myTarikh;
    command.Parameters.Add("?").Value = myMasa;
    command.Parameters.Add("?").Value = myAuditCode;
    

    注意?的使用,因为ODBC不支持参数名,所以参数的顺序很重要

    其次,问题出在StaffID 字段中,您的审计表中似乎不存在该字段。

    【讨论】:

    • ASP classic 怎么样,它使用相同的脚本?因为我尝试在 asp classic 上使用该脚本
    • 您将其标记为 ASP.NET。那是一个完全不同的故事。你真的需要使用它吗?这项技术在 10 年前就被弃用了。
    • 我只是问一下,顺便说一下脚本是有效的,非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 2022-01-22
    • 2011-08-27
    • 2011-04-21
    • 2019-06-29
    • 2013-10-20
    • 2017-12-29
    相关资源
    最近更新 更多