关于操作Access数据报System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误异常问题

关于操作Access数据报System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误异常问题 

       这两天答应朋友给他做个单机版的管理系统,所以数据库选用Access,以往的开发都是选用的SQL-Server,不过他们都是微软的,使用应该没什么问题。可是在我进行数据插入时,系统报System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误异常问题,仔细查看Insert语句,找不到“语法错误”,
数据库名:Grade.mdb
字段:CID       char
          CName char
          Note     char
代码如下:

#region 数据库连接

public class DBConnection
{
    private OleDbConnection conn;

    public OleDbConnection oleDbConn
    {
        get
        {
            string path = Directory.GetCurrentDirectory();
            string connString = "provider = Microsoft.Jet.OLEDB.4.0;" +
                                        "Data Source = " + path + "http://www.cnblogs.com/ForEverKissing/admin/file://grade.mdb/";
       if (conn == null)
           conn = new OleDbConnection(connString);
       return conn;
        }
    }
}

#endregion

//插入新数据
public int AddNewInfo()
{
    OleDbConnection myConn = dbConn.oleDbConn;
    int val = 0;
    try
    {
        myConn.Open();
        string myInsertString = "Insert Into CollegeInfo (CID, CName, Note) " + 
                                "Values ('a11','aaa','bbb')";
        OleDbCommand cmd = new OleDbCommand(myInsertString, myConn);
        val = cmd.ExecuteNonQuery();
    }
    catch(Exception ex)
    {
        MessageBox.Show("Error : " + ex.ToString());
        val = -1;
    }
    finally
    {
        myConn.Close();
    }
    return val;
}
运行报异常,上网查了好多资料,才晓得字段Note居然时Access的关键字,而在SQL-Server中可以正常使用,郁闷,只要将Insert语句改成
Insert Into CollegeInfo (CID, CName, [Note]) Values ('a11','aaa','bbb')
即可!

所以我把问题贴出来,如果有网友遇到此类问题,可以检查字段是否为关键字。 


 ---------------------------------
看来Access的关键字还不少,感谢网友SongMeiying的总结

以下为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 
    

posted on 2005-04-29 12:58  高血压的熊  阅读(4352)  评论(14编辑  收藏  举报