INSERT INTO 语句的语法错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了INSERT INTO 语句的语法错误相关的知识,希望对你有一定的参考价值。

Imports System.Data
Imports System.Data.OleDb

Partial Class registerDB
Inherits System.Web.UI.Page

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'建立connection对象
Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Me.Server.MapPath("~\App_Data\mydb.mdb"))

'建立command对象
Dim cmd1 As New OleDbCommand("select id from [user] where id=" & "'" & Me.TextBox1.Text & "'", conn)
Dim cmd2 As New OleDbCommand("insert into [user](id,password,[name],birthday,telephone,e-mail) values(" _
& "'" & Me.TextBox1.Text & "','" & Me.TextBox2.Text & "','" & Me.TextBox4.Text & "','" _
& Me.TextBox5.Text & "','" & Me.TextBox6.Text & "','" & Me.TextBox7.Text & "')", conn)

'打开数据库连接
conn.Open()

'建立Datareader对象
Dim dr As OleDbDataReader = cmd1.ExecuteReader()
If dr.HasRows Then
' dr.Close()
Me.Label1.Text = "用户名已经存在!"
Else
cmd2.ExecuteNonQuery()
End If
conn.Close()

Me.Label1.Text = Me.TextBox1.Text & "的用户添加成功!"
End Sub
End Class

是SQL语法错误,这是Access数据库的问题,
错误出现在这里。
insert into [user](id,password,[name],birthday,telephone,e-mail)
表名是Access里的关键字,你已经加了方括号,name和password也是关键字,所以也要加上方括号。还有,e-mail,最好不要加上减号。要写成这样也行,email...以免出现语法错误。
参考技术A 建议你用最容易的方法,就是用数据库自带的跟踪器去跟踪(SQL2000叫时间探测器;SQL
2005是SQL
Server
Profiler)先启动探测器,然后运行你的插入动作程序,你就可以在探测器上找到这条对数据库操作的插入语句,你就可以发现插入失败在哪里,或者复制到查询分析器里去试试就知道哪里错了。
如果跟踪的数量很大,SQL2000需要打上SP3补丁;
事件探测器其实是很有用的,对于调试程序,希望对你有用。
参考技术B sql1="insert into shjia ([username],[password],[name],[bank],[card],[email],[nickname],[qq],[address],[postcard],[logintime]) values('"& temid &"','"& request("password") &"','"& request("name") &"','"& request("bank") &"','"& card &"','"& request("email") &"','"& request("nickname") &"','"& request("qq") &"','"& request("address") &"','"& request("postcode") &"',#"+now+"#)"
conn.execute sql1,0
'建立connection对象
Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Me.Server.MapPath("~\App_Data\mydb.mdb"))

'建立command对象
Dim cmd1 As New OleDbCommand("select id from [user] where id=" & "'" & Me.TextBox1.Text & "'", conn)
Dim cmd2 As New OleDbCommand("insert into [user](id,password,[name],birthday,telephone,e-mail) values(" _
& "'" & Me.TextBox1.Text & "','" & Me.TextBox2.Text & "','" & Me.TextBox4.Text & "','" _
& Me.TextBox5.Text & "','" & Me.TextBox6.Text & "','" & Me.TextBox7.Text & "')", conn)
'建立connection对象
Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Me.Server.MapPath("~\App_Data\mydb.mdb"))
参考技术C sql1="insert into shjia ([username],[password],[name],[bank],[card],[email],[nickname],[qq],[address],[postcard],[logintime]) values('"& temid &"','"& request("password") &"','"& request("name") &"','"& request("bank") &"','"& card &"','"& request("email") &"','"& request("nickname") &"','"& request("qq") &"','"& request("address") &"','"& request("postcode") &"',#"+now+"#)"
conn.execute sql1,0
为了防止数据库结构设计的不合理,最好是使用标准的sql语句来做
参考技术D SQL语法问题啊

Access提示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
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
GROUPBY
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
---------------------
原文:https://blog.csdn.net/zisongjia/article/details/72878232 

以上是关于INSERT INTO 语句的语法错误的主要内容,如果未能解决你的问题,请参考以下文章

INSERT INTO 语句的语法错误。

INSERT INTO 语句的语法错误

INSERT INTO 语句的语法错误。

insert into语句的语法错误

insert into 语法错误

执行 INSERT INTO 语句时出现语法错误