语法错误 INSERT INTO 语句(命令生成器)
Syntax Error INSERT INTO Statement (Command Builder)
好的,我的这个问题在过去的几个月里有点棘手。
摘要: 当我的 Access 数据库中只有 5 列时,我的代码成功插入了新行。但是当我在我的访问数据库中添加另一列时(现在将是 6 列)我遇到
Syntax Error INSERT INTO Statement
代码:
Dim cb As New OleDb.OleDbCommandBuilder(SYSTEM_MainClient.dbda)
Dim dsNewRow As DataRow
dsNewRow = SYSTEM_MainClient.DataSet.Tables("Database").NewRow()
dsNewRow.Item("First_Name") = TXT_FirstName.Text
dsNewRow.Item("Last_Name") = TXT_Surname.Text
dsNewRow.Item("StudentID") = CInt(TXT_StudentID.Text)
dsNewRow.Item("Middle_Name") = TXT_MiddleName.Text
dsNewRow.Item("College") = TXT_College.Text
SYSTEM_MainClient.DataSet.Tables("Database").Rows.Add(dsNewRow)
SYSTEM_MainClient.dbda.Update(SYSTEM_MainClient.DataSet, "Database")
MsgBox("New Record added to the Database")
我的数据库 cColumns:
"StudentID" (primary key),
"First_Name", "Last_Name", "Middle_Name"
"College"
结果: 这可以正常工作,新记录已添加到数据库中。
因为只有5列。
但如果我超过:
代码:
Dim cb As New OleDb.OleDbCommandBuilder(SYSTEM_MainClient.dbda)
Dim dsNewRow As DataRow
dsNewRow = SYSTEM_MainClient.DataSet.Tables("Database").NewRow()
dsNewRow.Item("First_Name") = TXT_FirstName.Text
dsNewRow.Item("Last_Name") = TXT_Surname.Text
dsNewRow.Item("StudentID") = CInt(TXT_StudentID.Text)
dsNewRow.Item("Middle_Name") = TXT_MiddleName.Text
dsNewRow.Item("College") = TXT_College.Text
dsNewRow.Item("Section") = TXT_Section.Text 'I added a section insert
SYSTEM_MainClient.DataSet.Tables("Database").Rows.Add(dsNewRow)
SYSTEM_MainClient.dbda.Update(SYSTEM_MainClient.DataSet, "Database")
MsgBox("New Record added to the Database")
我的数据库列:
"StudentID" (primary key)
"First_Name", "Last_Name", "Middle_Name"
"College", "Section".
它会return一个错误
Syntax Error INSERT INTO Statement
好像它只能插入不超过 5 个列值,我认为问题出在访问而不是 VB 本身。
希望你能理解我的问题,请帮助我这是我的问题几个月了,我搜索了论坛和谷歌,仍然找不到答案。
非常感谢!
这种情况几乎普遍发生,因为一个或多个列名是保留字或包含空格或其他特殊字符。在你的情况下,我怀疑 "section" 是一个保留字。
解决方法是设置OleDbCommandBuilder
对象的.QuotePrefix
和.QuoteSuffix
属性,对所有列名进行转义。对于Access,将它们分别设置为“[”和“]”。
好的,我的这个问题在过去的几个月里有点棘手。 摘要: 当我的 Access 数据库中只有 5 列时,我的代码成功插入了新行。但是当我在我的访问数据库中添加另一列时(现在将是 6 列)我遇到
Syntax Error INSERT INTO Statement
代码:
Dim cb As New OleDb.OleDbCommandBuilder(SYSTEM_MainClient.dbda)
Dim dsNewRow As DataRow
dsNewRow = SYSTEM_MainClient.DataSet.Tables("Database").NewRow()
dsNewRow.Item("First_Name") = TXT_FirstName.Text
dsNewRow.Item("Last_Name") = TXT_Surname.Text
dsNewRow.Item("StudentID") = CInt(TXT_StudentID.Text)
dsNewRow.Item("Middle_Name") = TXT_MiddleName.Text
dsNewRow.Item("College") = TXT_College.Text
SYSTEM_MainClient.DataSet.Tables("Database").Rows.Add(dsNewRow)
SYSTEM_MainClient.dbda.Update(SYSTEM_MainClient.DataSet, "Database")
MsgBox("New Record added to the Database")
我的数据库 cColumns:
"StudentID" (primary key),
"First_Name", "Last_Name", "Middle_Name"
"College"
结果: 这可以正常工作,新记录已添加到数据库中。
因为只有5列。
但如果我超过:
代码:
Dim cb As New OleDb.OleDbCommandBuilder(SYSTEM_MainClient.dbda)
Dim dsNewRow As DataRow
dsNewRow = SYSTEM_MainClient.DataSet.Tables("Database").NewRow()
dsNewRow.Item("First_Name") = TXT_FirstName.Text
dsNewRow.Item("Last_Name") = TXT_Surname.Text
dsNewRow.Item("StudentID") = CInt(TXT_StudentID.Text)
dsNewRow.Item("Middle_Name") = TXT_MiddleName.Text
dsNewRow.Item("College") = TXT_College.Text
dsNewRow.Item("Section") = TXT_Section.Text 'I added a section insert
SYSTEM_MainClient.DataSet.Tables("Database").Rows.Add(dsNewRow)
SYSTEM_MainClient.dbda.Update(SYSTEM_MainClient.DataSet, "Database")
MsgBox("New Record added to the Database")
我的数据库列:
"StudentID" (primary key)
"First_Name", "Last_Name", "Middle_Name"
"College", "Section".
它会return一个错误
Syntax Error INSERT INTO Statement
好像它只能插入不超过 5 个列值,我认为问题出在访问而不是 VB 本身。
希望你能理解我的问题,请帮助我这是我的问题几个月了,我搜索了论坛和谷歌,仍然找不到答案。
非常感谢!
这种情况几乎普遍发生,因为一个或多个列名是保留字或包含空格或其他特殊字符。在你的情况下,我怀疑 "section" 是一个保留字。
解决方法是设置OleDbCommandBuilder
对象的.QuotePrefix
和.QuoteSuffix
属性,对所有列名进行转义。对于Access,将它们分别设置为“[”和“]”。