用VB.NET编写上位机出现的问题

出现System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误异常问题
用VB.net语言写了一个上位机,用来接收51单片机传输的电压数据,将采集到的电压值以及其他数据插入数据库时弹出错误,

Private AccessConn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;
    Data Source=D:\OneDrive\桌面\51-串口通讯PC上位机\串口通讯PC\串口通讯PC\电压数据库.accdb;Persist Security Info=False;")

 AccessConn.Open()  

 Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
        Dim charusql As String = "insert into 电压数据表(日期,时间,地点,电压,负责人)values
         ('" & Today & "','" & TimeOfDay & "','" & TextBox6.Text & "','" & dianyaOut & "','" & TextBox7.Text & "');"
        Dim cmd As New OleDbCommand(charusql, AccessConn)   '定义OLEDB命令(sql语句,数据库连接)
        cmd.ExecuteNonQuery()                               '执行sql语句

img


我用的是visual studio2022编写的上位机,数据库用的是access2016,我想知道代码哪里出现了问题,我看过社区里的一些回答,在insert into后面的数据电压表、日期、时间等上面加了[ ]还是不通过

在这一句上打断点,看看拼接出来的sql语句是什么。然后拿着这个sql语句去access上执行一下就知道了。


Dim charusql As String = "insert into 电压数据表(日期,时间,地点,电压,负责人)values
         ('" & Today & "','" & TimeOfDay & "','" & TextBox6.Text & "','" & dianyaOut & "','" & TextBox7.Text & "');"

要看数据库定义及拼写出的sql语句,可能是数据类型错误

内容来源与ChatGpt4及newbing和百度:


这个异常通常是由于INSERT INTO语句的语法错误引起的。您需要检查SQL语句中的语法是否正确,特别是检查括号、引号和逗号的使用是否正确。如果您使用的是OLEDB提供程序,则必须使用问号作为占位符,而不是使用@符号。

以下是一些可能导致语法错误的常见问题:

  1. 插入字符串时忘记使用引号。
  2. SQL语句中的括号不匹配。
  3. 列名或表名中包含空格或特殊字符,需要使用方括号将其括起来。
  4. 数据类型不匹配,例如插入字符串值到数字列中。
  5. SQL语句中使用了保留关键字,需要将其用方括号括起来。

以下是一个示例INSERT INTO语句的正确用法:

Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data\Database.mdb;")
Dim cmd As New OleDbCommand("INSERT INTO Customers (FirstName, LastName, Email) VALUES (?, ?, ?)", conn)

cmd.Parameters.AddWithValue("@FirstName", "John")
cmd.Parameters.AddWithValue("@LastName", "Doe")
cmd.Parameters.AddWithValue("@Email", "johndoe@email.com")

conn.Open()
cmd.ExecuteNonQuery()
conn.Close()

在这个例子中,我们使用了问号作为占位符,而不是使用@符号,并使用参数化查询来防止SQL注入攻击。


祝您问题迎刃而解

charusql里面包含了中文括号,替换成英文括号试试。