最近在做Access的一個項目,總是莫名其妙的提示:“Insert Into 語法錯誤”,這樣的信息總給人帶來很多麻煩,有時候爲了這樣一個錯誤要找好久才能解決問題,"Insert Into 語法錯誤"這個提示本身包含的信息量很少,在跟蹤堆棧中有找不到更詳細的信息,爲了避免大家在開發的過程中遇到同樣的錯誤和困擾。通過查找和摸索把有可能出現這種錯誤的可能總結一下和大家一起分享。
1.關鍵字:如果你的數據庫的表的設計包含了Access包含的關鍵字,則在插入的時候會出現“Insert Into 語法錯誤”
例如:
這行上面這條語句是失敗的,原因是TestTable表中有一個關鍵字"Order",解決辦法:
(1).將語句中的關鍵字用[order]處理就可以了。如:
(2).將所有的字段都用[]括起來,這在許多代碼生成器中都採用這種方式來解決關鍵字的衝突問題。如:
(3).在設計數據庫的時候儘量避免使用Access本身的保留字。這樣就不會出現應爲關鍵字問題引起的錯誤了,這也是最佳的解決方法。
2.文本類型:字符類型引起的“Insert Into 語法錯誤”,通常是因爲數據庫設計的時候字段是字符型的,結果在Insert into 的時候字段值沒有加''引起的。
例如:
說明:
Test 是數字型字段,TestName 是文本型字段
上面的操作會出現:“Insert Into 語法錯誤”
解決方法:在操作的時候給 Name字段的值加上''可解決問題,如:
3.備註類型:備註類型的字段和文本字段一樣,碰到問題,可以用同樣的方法解決
4.日期/時間類型:日期/時間類型的字段和文本字段一樣,碰到問題可以用同樣的解決方法
Access 數據庫的關鍵字:
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
SIZE
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