.Access Insert Into 語法錯誤 集錦

最近在做Access的一個項目,總是莫名其妙的提示:“Insert Into 語法錯誤”,這樣的信息總給人帶來很多麻煩,有時候爲了這樣一個錯誤要找好久才能解決問題,"Insert Into 語法錯誤"這個提示本身包含的信息量很少,在跟蹤堆棧中有找不到更詳細的信息,爲了避免大家在開發的過程中遇到同樣的錯誤和困擾。通過查找和摸索把有可能出現這種錯誤的可能總結一下和大家一起分享。

1.關鍵字:如果你的數據庫的表的設計包含了Access包含的關鍵字,則在插入的時候會出現“Insert Into 語法錯誤”

例如:

string sqlText = String.Format("Insert into TestTable(Id,Order) values ({0},{1})",123,0);

這行上面這條語句是失敗的,原因是TestTable表中有一個關鍵字"Order",解決辦法:

(1).將語句中的關鍵字用[order]處理就可以了。如:

string sqlText = String.Format("Insert into TestTable(TestId,[Order]) values ({0},{1})",123,0);

(2).將所有的字段都用[]括起來,這在許多代碼生成器中都採用這種方式來解決關鍵字的衝突問題。如:

string sqlText = String.Format("Insert into TestTable([Id],[Order]) values ({0},{1})",123,0);

(3).在設計數據庫的時候儘量避免使用Access本身的保留字。這樣就不會出現應爲關鍵字問題引起的錯誤了,這也是最佳的解決方法。

2.文本類型:字符類型引起的“Insert Into 語法錯誤”,通常是因爲數據庫設計的時候字段是字符型的,結果在Insert into 的時候字段值沒有加''引起的。

例如:

string sqlText = String.Format("Insert into TestTable(TestId,TestName) values ({0},{1})",123,”cnblogs");

說明:

Test 是數字型字段,TestName 是文本型字段

上面的操作會出現:“Insert Into 語法錯誤”

解決方法:在操作的時候給 Name字段的值加上''可解決問題,如:

string sqlText = String.Format("Insert into TestTable(TestId,TestName) values ({0},‘{1}’)",123,”cnblogs");

3.備註類型:備註類型的字段和文本字段一樣,碰到問題,可以用同樣的方法解決

4.日期/時間類型:日期/時間類型的字段和文本字段一樣,碰到問題可以用同樣的解決方法

Access 數據庫的關鍵字:

-A
    
ADD
    
ALL
    Alphanumeric
    
ALTER
    
AND
    
ANY
    Application
    
AS
    
ASC
    Assistant
    AUTOINCREMENT
    
Avg
-B
    
BETWEEN
    
BINARY
    
BIT
    BOOLEAN
    
BY
    BYTE
-C
    
CHARCHARACTER
    
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
    
INTINTEGER, INTEGER1, INTEGER2, INTEGER4
    
INTO
    
IS
-J
    
JOIN
-K
    
KEY
-L
    LastModified
    
LEFT
    
Level
    
Like
    LOGICAL, LOGICAL1
    
LONG, LONGBINARY, LONGTEXT
                
-M
    Macro
    Match
    
MaxMin, 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
    
StDevStDevP
    STRING
    SIZE
    
Sum
-T
    
TABLE
    TableDef, TableDefs
    TableID
    
TEXT
    TIME, 
TIMESTAMP
    
TOP
    TRANSFORM
    TRUE
    Type
-U
    
UNION
    
UNIQUE
    
update
    
USER
-V
    VALUE
    
VALUES
    
VarVarP
    
VARBINARYVARCHAR
-W
    
WHERE
    
WITH
    Workspace
-X
    Xor
-Y
    
Year
    YES
    YESNO
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章