asp访问数据库,出现“未指定的错误”

    对于程序员来说,出错不可怕,可怕的是明明该一切正常的程序,运行着就出错了,有些时候,你永远相不通到底出了什么问题。

    最近在用asp做网站,数据库是access,然后写了个conn.asp文件,内容如下:
dim conn,connstr,startime,db,rs,sql
startime=timer()
db="db/Data.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")
conn.Open connstr

然后在调用的那个test.asp文件里面这样写:
set rs=server.CreateObject("adodb.recordset")
sql="select * from global"
rs.open sql,conn,1,1

结果出错了,如下:

错误类型:
(0x80004005)
未指定的错误
/web/inc/conn.asp, 第 27 行

    在网上找出错的原因,有人说是因为权限的问题,还有很多什么别的原因,一个一个的试了,全都不管用!程序还是在出错,还是不知道错在哪里,哭都哭不出来!最后实在没法,就在access里面新建了一个对global表的查询,查看里面的sql视图,发现里面的查询是这么写的:select * from [global] ,然后我觉得问题是出现在这里了,果然,将sql变量赋值为"select * from [global]"然后再执行,没问题了!

    最后查了下原因,发现“global”的access的系统变量!用系统变量来命名一个表,在写查询的时候要加上"[]",同样的,如果是用保留字命名的表也要加上"[]",被打败了,怎么想都想不到会是这个问题!我想这个问题应该是让很多玩程序的童鞋欲哭无泪,因此在建表的时候一定要注意那些系统预设的关键字,尽量避免使用这些关键字。不仅如此,在定义别的什么变量的时候也最好不要用那些保留字段。

    最后,在这里给出access里面的保留字以供参考:

-A
    ADD
    ALL
    Alphanumeric
    ALTER
    AND
    ANY
    Application
    AS
    ASC
    Assistant
    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
    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
    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
        
以及以下标点符号
   .
   /
   *
   ;
   :
   !
   #
   &
   -
   ?
   "
   '
   $

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值