访问Access 数据库 报 “IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败。”

“IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败。”这个错误,查了半天才知道是因为使用了Access的关键字,我吐,发誓以后再也不用Access了。
    为了避免大家犯同样的错误,现将Access的关键字列出来,如果以后在编程中你遇到了同样的错误,请看看是否使用了Access的关键字。

-A
    ADD
    ALL
    Alphanumeric
    ALTER
    AND
    ANY
    Application
    AS
    ASC
    Assistant
       AT
    AUTOINCREMENT
    Avg
-B
    BETWEEN
    BINARY
    BIT
    BOOLEAN
    BY
    BYTE
-C
    CHAR, CHARACTER
    COLUMN
    CompactDatabase
    CONSTRAINT
    Container
    Count
    COUNTER
    CREATE
    CreateDatabase
    CreateField
    CreateGroup
    CreateIndex
    CreateObject
    CreateProperty
    CreateRelation
    CreateTableDef
    CreateUser
    CreateWorkspace
    CURRENCY
    CurrentUser
-D
    DATABASE
    DATE
    DATETIME
    DELETE
    DESC
    Description
    DISALLOW
    DISTINCT
    DISTINCTROW
    Document
    DOUBLE
    DROP
-E
    Echo
    Else
    End
    Eqv
    Error
    EXISTS
    Exit
-F
    FALSE
    Field, Fields
    FillCache
    FLOAT, FLOAT4, FLOAT8
    FOREIGN
    Form, Forms
    FROM
    Full
    FUNCTION
-G
    GENERAL
    GetObject
    GetOption
    GotoPage
    GROUP
    GROUP BY
    GUID
-H
    HAVING
-I
    Idle
    IEEEDOUBLE, IEEESINGLE
    If
    IGNORE
    Imp
    IN
    INDEX
    Index, Indexes
    INNER
    INSERT
    InsertText
    INT, INTEGER, INTEGER1, INTEGER2, INTEGER4
    INTO
    IS
-J
    JOIN
-K
    KEY
-L
    LastModified
    LEFT
    Level
    Like
    LOGICAL, LOGICAL1
    LONG, LONGBINARY, LONGTEXT
              
-M
    Macro
    Match
    Max, Min, Mod
    MEMO
    Module
    MONEY
    Move
-N
    NAME
    NewPassword
    NO
    Not
    Note
    NULL
    NUMBER, NUMERIC
-O
    Object
    OLEOBJECT
    OFF
    ON
    OpenRecordset
    OPTION
    OR
    ORDER
    Orientation
    Outer
    OWNERACCESS
-P
    Parameter
    PARAMETERS
    Partial
       Password
    PERCENT
    PIVOT
    PRIMARY
    PROCEDURE
    Property
-Q
    Queries
    Query
    Quit
-R
    REAL
    Recalc
    Recordset
    REFERENCES
    Refresh
    RefreshLink
    RegisterDatabase
    Relation
    Repaint
    RepairDatabase
    Report
    Reports
    Requery
    RIGHT
-S
    SCREEN
    SECTION
    SELECT
    SET
    SetFocus
    SetOption
    SHORT
    SINGLE
        Size
    SMALLINT
    SOME
    SQL
    StDev, StDevP
    STRING
    Sum
-T
    TABLE
    TableDef, TableDefs
    TableID
    TEXT
    TIME, TIMESTAMP
    TOP
    TRANSFORM
    TRUE
    Type
-U
    UNION
    UNIQUE
    UPDATE
    USER
-V
    VALUE
    VALUES
    Var, VarP
    VARBINARY, VARCHAR
-W
    WHERE
    WITH
    Workspace
-X
    Xor
-Y
    Year
    YES
    YESNO


    最后说明一下:在Access中和在MS SQL中一样,对关键字的转义是使用“[”和“]”的,比如你的数据库中某个表中有以上述关键字作为字段名的,记得在该字段前后分别加上“[”和“]”,如[user],[password],[yes],不过建议还是尽量避免使用关键字。

    另外友情提示:如果遇见报“insert into"语句错误的情况,多半就是因为你使用关键字了。记得转义或者更改字段名。

IErrorInfo.GetDescriptionE_FAIL(0x80004005) 而失败。 什么错误!?

08-08

IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败。 rn说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 rnrn异常详细信息: System.Data.OleDb.OleDbException: IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败。rnrn源错误: rnrnrn行 78: Conn.Open();rn行 79: OleDbCommand Cmd=new OleDbCommand(strSql,Conn);rn行 80: OleDbDataReader rd= Cmd.ExecuteReader();rn行 81: if(rd.Read())rn行 82: rn rnrn源文件: f:\mobile\Default.aspx.cs 行: 80 rnrn堆栈跟踪: rnrnrn[OleDbException (0x80004005): IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败。]rn System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr) +41rn System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +174rn System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +92rn System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +65rn System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +112rn System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior) +69rn System.Data.OleDb.OleDbCommand.ExecuteReader() +7rn mobile.Mobile.Page_Load(Object sender, EventArgs e) in f:\mobile\Default.aspx.cs:80rn System.Web.UI.Control.OnLoad(EventArgs e) +67rn System.Web.UI.Control.LoadRecursive() +35rn System.Web.UI.Page.ProcessRequestMain() +731rn--------------------------------------------------------------------------------rn版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试