DBF SQL标准转义列名?

DBF SQL standard to escape column names?

提问人:ram 提问时间:11/2/2023 最后编辑:marc_sram 更新时间:11/2/2023 访问量:61

问:

SQLInsertCommand = "INSERT INTO " & strFileName2 & " (TRANDATE,[HOUR], SALES, TRANCNT, TENTNAME, TERMNUM) " & _
                   " VALUES('" & Format(CDate(dr("dateid")), "Short Date").ToString & "','" & "" & dr("dhour") & "'," & _
                                    Format(dr("amt"), "########0.00;-########0.00") & "," & Val("" & dr("ctrno")) & ",'" & LeftX(TenantCode & "-" & TerminalNumber, 15) & "'," & _
                                    "" & dr("tenantcode") & ")"
                
Dim cmd1 As New OleDb.OleDbCommand(SQLInsertCommand, dBaseConnectionB)
                
cmd1.ExecuteNonQuery()

我收到一个错误:

INSERT INTO 语句包含以下未知字段名称:“HOUR”。请确保您输入的名称正确无误,然后重试该操作

我还使用了反引号('),我得到了同样的错误。

我的机器运行 Win11,并且我正在使用 Microsoft.ACE.OLEDB.12.0 进行 OleDb 连接。

enter image description here

enter image description here

SQL vb.net OLEDB DBF

评论

0赞 jmcilhinney 11/2/2023
请对您的问题中的问题提供完整和清晰的解释。我们不应该从代码和图像中拼凑出来。他们在那里提供更多信息,但一切都应该用文字解释。错误消息还需要以格式化文本的形式提供,而不仅仅是图像。我们无法从图像中复制文本。
0赞 ram 11/2/2023
@jmcilhinney,我添加了文本格式的错误消息,谢谢
0赞 jmcilhinney 11/2/2023
我刚刚做了一个快速搜索,我发现一些东西说你使用双引号来转义标识符。不过这是旧信息,所以不确定它是否准确。您需要在 VB 代码中转义双引号,因此它看起来像这样: .文本中的每个文字双引号都会用另一个双引号进行转义。"INSERT INTO " & strFileName2 & " (TRANDATE,""HOUR"",SALES..."
1赞 jmcilhinney 11/2/2023
我认为如果名称没有正确转义,您会得到语法错误。它告诉你该列不存在的事实似乎表明该列实际上并不存在。我建议在代码中的同一点使用相同的文件名运行查询,并查看结果中有哪些列。SELECT *
3赞 jmcilhinney 11/2/2023
OT,请停止使用字符串连接将值插入到 SQL 代码中。使用参数。

答: 暂无答案